summaryrefslogtreecommitdiff
path: root/web/funnelweb
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /web/funnelweb
Initial commit
Diffstat (limited to 'web/funnelweb')
-rw-r--r--web/funnelweb/0readme.txt17
-rw-r--r--web/funnelweb/0stoppress/fw_README.mes92
-rw-r--r--web/funnelweb/0stoppress/fw_abandon.mes115
-rw-r--r--web/funnelweb/0stoppress/fw_advert.mes85
-rw-r--r--web/funnelweb/0stoppress/fw_hack_manual.ps32255
-rw-r--r--web/funnelweb/0stoppress/fw_make.mes85
-rw-r--r--web/funnelweb/0stoppress/fw_manual.ps73567
-rw-r--r--web/funnelweb/0stoppress/fw_mlist.mes45
-rw-r--r--web/funnelweb/0stoppress/fw_mlist_rules.mes47
-rw-r--r--web/funnelweb/0stoppress/fw_p_apollo.mes12
-rw-r--r--web/funnelweb/0stoppress/fw_p_hp.mes25
-rw-r--r--web/funnelweb/0stoppress/fw_p_mpw.mes21
-rw-r--r--web/funnelweb/0stoppress/fw_p_next.mes23
-rw-r--r--web/funnelweb/0stoppress/fw_p_next_patch.mes923
-rw-r--r--web/funnelweb/0stoppress/fw_p_pc.mes52
-rw-r--r--web/funnelweb/0stoppress/fw_refs.mes31
-rw-r--r--web/funnelweb/0stoppress/fw_sugg.mes171
-rw-r--r--web/funnelweb/0stoppress/fw_tabs.mes44
-rw-r--r--web/funnelweb/0stoppress/fw_testim.mes79
-rw-r--r--web/funnelweb/0veracty.vrf184
-rw-r--r--web/funnelweb/0veracty.vsf1269
-rw-r--r--web/funnelweb/admin/0readme.txt12
-rw-r--r--web/funnelweb/admin/ad.txt.gzbin0 -> 749 bytes
-rw-r--r--web/funnelweb/admin/fixeols.fws.gzbin0 -> 417 bytes
-rw-r--r--web/funnelweb/admin/gnu2.txt.gzbin0 -> 6817 bytes
-rw-r--r--web/funnelweb/admin/makescript.gzbin0 -> 117 bytes
-rw-r--r--web/funnelweb/admin/vms_bld.com.gzbin0 -> 1374 bytes
-rw-r--r--web/funnelweb/answers/0license.txt.gzbin0 -> 691 bytes
-rw-r--r--web/funnelweb/answers/an01.lis.gzbin0 -> 148 bytes
-rw-r--r--web/funnelweb/answers/an02.lis.gzbin0 -> 133 bytes
-rw-r--r--web/funnelweb/answers/an03.lis.gzbin0 -> 1191 bytes
-rw-r--r--web/funnelweb/answers/an04.lis.gzbin0 -> 449 bytes
-rw-r--r--web/funnelweb/answers/ex01.lis.gzbin0 -> 139 bytes
-rw-r--r--web/funnelweb/answers/ex01.out.gzbin0 -> 20 bytes
-rw-r--r--web/funnelweb/answers/ex02.lis.gzbin0 -> 139 bytes
-rw-r--r--web/funnelweb/answers/ex02.out.gzbin0 -> 20 bytes
-rw-r--r--web/funnelweb/answers/ex03.lis.gzbin0 -> 581 bytes
-rw-r--r--web/funnelweb/answers/ex04.lis.gzbin0 -> 139 bytes
-rw-r--r--web/funnelweb/answers/ex04.out.gzbin0 -> 140 bytes
-rw-r--r--web/funnelweb/answers/ex05.lis.gzbin0 -> 139 bytes
-rw-r--r--web/funnelweb/answers/ex05.out.gzbin0 -> 280 bytes
-rw-r--r--web/funnelweb/answers/ex06.lis.gzbin0 -> 139 bytes
-rw-r--r--web/funnelweb/answers/ex06.out.gzbin0 -> 277 bytes
-rw-r--r--web/funnelweb/answers/ex07.lis.gzbin0 -> 139 bytes
-rw-r--r--web/funnelweb/answers/ex07.out.gzbin0 -> 79 bytes
-rw-r--r--web/funnelweb/answers/ex08.lis.gzbin0 -> 139 bytes
-rw-r--r--web/funnelweb/answers/ex08.out.gzbin0 -> 448 bytes
-rw-r--r--web/funnelweb/answers/ex09.lis.gzbin0 -> 139 bytes
-rw-r--r--web/funnelweb/answers/ex09.out.gzbin0 -> 171 bytes
-rw-r--r--web/funnelweb/answers/ex10.lis.gzbin0 -> 139 bytes
-rw-r--r--web/funnelweb/answers/ex10.out.gzbin0 -> 20 bytes
-rw-r--r--web/funnelweb/answers/ex11.lis.gzbin0 -> 142 bytes
-rw-r--r--web/funnelweb/answers/ex11.tex.gzbin0 -> 5799 bytes
-rw-r--r--web/funnelweb/answers/ex12.lis.gzbin0 -> 142 bytes
-rw-r--r--web/funnelweb/answers/ex12.tex.gzbin0 -> 5782 bytes
-rw-r--r--web/funnelweb/answers/ex13.lis.gzbin0 -> 142 bytes
-rw-r--r--web/funnelweb/answers/ex13.tex.gzbin0 -> 6179 bytes
-rw-r--r--web/funnelweb/answers/ex14.lis.gzbin0 -> 142 bytes
-rw-r--r--web/funnelweb/answers/ex14.tex.gzbin0 -> 5652 bytes
-rw-r--r--web/funnelweb/answers/ex15.lis.gzbin0 -> 142 bytes
-rw-r--r--web/funnelweb/answers/ex15.tex.gzbin0 -> 5739 bytes
-rw-r--r--web/funnelweb/answers/ex16.lis.gzbin0 -> 157 bytes
-rw-r--r--web/funnelweb/answers/ex16.out.gzbin0 -> 244 bytes
-rw-r--r--web/funnelweb/answers/ex16.tex.gzbin0 -> 6359 bytes
-rw-r--r--web/funnelweb/answers/generate.lis.gzbin0 -> 154 bytes
-rw-r--r--web/funnelweb/answers/hi01.lis.gzbin0 -> 138 bytes
-rw-r--r--web/funnelweb/answers/hi01.out.gzbin0 -> 114 bytes
-rw-r--r--web/funnelweb/answers/hi02.lis.gzbin0 -> 138 bytes
-rw-r--r--web/funnelweb/answers/hi02.out.gzbin0 -> 108 bytes
-rw-r--r--web/funnelweb/answers/hi03.lis.gzbin0 -> 138 bytes
-rw-r--r--web/funnelweb/answers/hi03.out.gzbin0 -> 112 bytes
-rw-r--r--web/funnelweb/answers/hi04.lis.gzbin0 -> 139 bytes
-rw-r--r--web/funnelweb/answers/hi04.out.gzbin0 -> 51 bytes
-rw-r--r--web/funnelweb/answers/hi05.lis.gzbin0 -> 139 bytes
-rw-r--r--web/funnelweb/answers/hi05.out.gzbin0 -> 115 bytes
-rw-r--r--web/funnelweb/answers/hi06.lis.gzbin0 -> 145 bytes
-rw-r--r--web/funnelweb/answers/hi06a.out.gzbin0 -> 20 bytes
-rw-r--r--web/funnelweb/answers/hi06b.out.gzbin0 -> 51 bytes
-rw-r--r--web/funnelweb/answers/hi07.lis.gzbin0 -> 145 bytes
-rw-r--r--web/funnelweb/answers/hi07a.out.gzbin0 -> 87 bytes
-rw-r--r--web/funnelweb/answers/hi07b.out.gzbin0 -> 87 bytes
-rw-r--r--web/funnelweb/answers/hi08.lis.gzbin0 -> 138 bytes
-rw-r--r--web/funnelweb/answers/hi08.out.gzbin0 -> 252 bytes
-rw-r--r--web/funnelweb/answers/hi09.lis.gzbin0 -> 138 bytes
-rw-r--r--web/funnelweb/answers/hi09.out.gzbin0 -> 799 bytes
-rw-r--r--web/funnelweb/answers/hi10.lis.gzbin0 -> 138 bytes
-rw-r--r--web/funnelweb/answers/hi10.out.gzbin0 -> 267 bytes
-rw-r--r--web/funnelweb/answers/pr01.lis.gzbin0 -> 2762 bytes
-rw-r--r--web/funnelweb/answers/pr02.lis.gzbin0 -> 1360 bytes
-rw-r--r--web/funnelweb/answers/pr03.lis.gzbin0 -> 2836 bytes
-rw-r--r--web/funnelweb/answers/pr04.lis.gzbin0 -> 4028 bytes
-rw-r--r--web/funnelweb/answers/pr05.lis.gzbin0 -> 3969 bytes
-rw-r--r--web/funnelweb/answers/pr06.lis.gzbin0 -> 3769 bytes
-rw-r--r--web/funnelweb/answers/pr07.lis.gzbin0 -> 3374 bytes
-rw-r--r--web/funnelweb/answers/pr08.lis.gzbin0 -> 6456 bytes
-rw-r--r--web/funnelweb/answers/pr09.lis.gzbin0 -> 7856 bytes
-rw-r--r--web/funnelweb/answers/pr10.lis.gzbin0 -> 2669 bytes
-rw-r--r--web/funnelweb/answers/sc01.lis.gzbin0 -> 362 bytes
-rw-r--r--web/funnelweb/answers/sc02.lis.gzbin0 -> 511 bytes
-rw-r--r--web/funnelweb/answers/sc03.lis.gzbin0 -> 557 bytes
-rw-r--r--web/funnelweb/answers/sc04.lis.gzbin0 -> 565 bytes
-rw-r--r--web/funnelweb/answers/sc05.lis.gzbin0 -> 703 bytes
-rw-r--r--web/funnelweb/answers/sc06.lis.gzbin0 -> 991 bytes
-rw-r--r--web/funnelweb/answers/sc07.lis.gzbin0 -> 2194 bytes
-rw-r--r--web/funnelweb/answers/sc08.lis.gzbin0 -> 1008 bytes
-rw-r--r--web/funnelweb/answers/sc09.lis.gzbin0 -> 1391 bytes
-rw-r--r--web/funnelweb/answers/sc10.lis.gzbin0 -> 8508 bytes
-rw-r--r--web/funnelweb/answers/sc11.lis.gzbin0 -> 2729 bytes
-rw-r--r--web/funnelweb/answers/sc12.lis.gzbin0 -> 1012 bytes
-rw-r--r--web/funnelweb/answers/sc13.lis.gzbin0 -> 2817 bytes
-rw-r--r--web/funnelweb/answers/sc14.lis.gzbin0 -> 1573 bytes
-rw-r--r--web/funnelweb/answers/sc15.lis.gzbin0 -> 4272 bytes
-rw-r--r--web/funnelweb/answers/sc16.lis.gzbin0 -> 3802 bytes
-rw-r--r--web/funnelweb/answers/sc17.lis.gzbin0 -> 2818 bytes
-rw-r--r--web/funnelweb/answers/sc18.lis.gzbin0 -> 2667 bytes
-rw-r--r--web/funnelweb/answers/sc19.lis.gzbin0 -> 1147 bytes
-rw-r--r--web/funnelweb/answers/sc20.lis.gzbin0 -> 1182 bytes
-rw-r--r--web/funnelweb/answers/sc21.lis.gzbin0 -> 2890 bytes
-rw-r--r--web/funnelweb/answers/sc22.lis.gzbin0 -> 1858 bytes
-rw-r--r--web/funnelweb/answers/sc23.lis.gzbin0 -> 2119 bytes
-rw-r--r--web/funnelweb/answers/sc24.lis.gzbin0 -> 1690 bytes
-rw-r--r--web/funnelweb/answers/sc25.lis.gzbin0 -> 1054 bytes
-rw-r--r--web/funnelweb/answers/sc26.lis.gzbin0 -> 1109 bytes
-rw-r--r--web/funnelweb/answers/sc27.lis.gzbin0 -> 1630 bytes
-rw-r--r--web/funnelweb/answers/sc28.lis.gzbin0 -> 2959 bytes
-rw-r--r--web/funnelweb/answers/sc29.lis.gzbin0 -> 1690 bytes
-rw-r--r--web/funnelweb/answers/tg01.lis.gzbin0 -> 134 bytes
-rw-r--r--web/funnelweb/answers/tg01.out.gzbin0 -> 115 bytes
-rw-r--r--web/funnelweb/answers/tg02.lis.gzbin0 -> 138 bytes
-rw-r--r--web/funnelweb/answers/tg02.out.gzbin0 -> 279 bytes
-rw-r--r--web/funnelweb/answers/tg03.lis.gzbin0 -> 138 bytes
-rw-r--r--web/funnelweb/answers/tg03.out.gzbin0 -> 248 bytes
-rw-r--r--web/funnelweb/answers/tg04.lis.gzbin0 -> 138 bytes
-rw-r--r--web/funnelweb/answers/tg04.out.gzbin0 -> 209 bytes
-rw-r--r--web/funnelweb/answers/tg05.lis.gzbin0 -> 285 bytes
-rw-r--r--web/funnelweb/answers/tg05.out.gzbin0 -> 131 bytes
-rw-r--r--web/funnelweb/answers/tg06.lis.gzbin0 -> 285 bytes
-rw-r--r--web/funnelweb/answers/tg06.out.gzbin0 -> 148 bytes
-rw-r--r--web/funnelweb/answers/tg07.lis.gzbin0 -> 138 bytes
-rw-r--r--web/funnelweb/answers/tg07.out.gzbin0 -> 91 bytes
-rw-r--r--web/funnelweb/answers/tg08.lis.gzbin0 -> 138 bytes
-rw-r--r--web/funnelweb/answers/tg08.out.gzbin0 -> 159 bytes
-rw-r--r--web/funnelweb/answers/tg09.lis.gzbin0 -> 137 bytes
-rw-r--r--web/funnelweb/answers/tg09.out.gzbin0 -> 326 bytes
-rw-r--r--web/funnelweb/answers/wv01.lis.gzbin0 -> 142 bytes
-rw-r--r--web/funnelweb/answers/wv01.tex.gzbin0 -> 5589 bytes
-rw-r--r--web/funnelweb/answers/wv02.lis.gzbin0 -> 142 bytes
-rw-r--r--web/funnelweb/answers/wv02.tex.gzbin0 -> 5899 bytes
-rw-r--r--web/funnelweb/answers/wv03.lis.gzbin0 -> 142 bytes
-rw-r--r--web/funnelweb/answers/wv03.tex.gzbin0 -> 6074 bytes
-rw-r--r--web/funnelweb/answers/wv04.lis.gzbin0 -> 142 bytes
-rw-r--r--web/funnelweb/answers/wv04.tex.gzbin0 -> 5823 bytes
-rw-r--r--web/funnelweb/answers/wv05.lis.gzbin0 -> 142 bytes
-rw-r--r--web/funnelweb/answers/wv05.tex.gzbin0 -> 5934 bytes
-rw-r--r--web/funnelweb/answers/wv06.lis.gzbin0 -> 142 bytes
-rw-r--r--web/funnelweb/answers/wv06.tex.gzbin0 -> 5935 bytes
-rw-r--r--web/funnelweb/archive_has_moved.txt7
-rw-r--r--web/funnelweb/examples/0readme171
-rw-r--r--web/funnelweb/examples/as.c52
-rw-r--r--web/funnelweb/examples/as.h46
-rw-r--r--web/funnelweb/examples/ex_test.c454
-rw-r--r--web/funnelweb/examples/except.c131
-rw-r--r--web/funnelweb/examples/except.fw2209
-rw-r--r--web/funnelweb/examples/except.h143
-rw-r--r--web/funnelweb/examples/except.ps21767
-rw-r--r--web/funnelweb/examples/except.tex3273
-rw-r--r--web/funnelweb/examples/style.h87
-rw-r--r--web/funnelweb/hackman/h_ch0.tex.gzbin0 -> 2406 bytes
-rw-r--r--web/funnelweb/hackman/h_ch1.tex.gzbin0 -> 13992 bytes
-rw-r--r--web/funnelweb/hackman/h_ch2.tex.gzbin0 -> 7463 bytes
-rw-r--r--web/funnelweb/hackman/h_ch3.tex.gzbin0 -> 8994 bytes
-rw-r--r--web/funnelweb/hackman/h_ch4.tex.gzbin0 -> 6813 bytes
-rw-r--r--web/funnelweb/hackman/h_cha.tex.gzbin0 -> 8114 bytes
-rw-r--r--web/funnelweb/hackman/h_manual.aux.gzbin0 -> 1161 bytes
-rw-r--r--web/funnelweb/hackman/h_manual.idx.gzbin0 -> 2329 bytes
-rw-r--r--web/funnelweb/hackman/h_manual.log.gzbin0 -> 1484 bytes
-rw-r--r--web/funnelweb/hackman/h_manual.sin.gzbin0 -> 2487 bytes
-rw-r--r--web/funnelweb/hackman/h_manual.tex.gzbin0 -> 3730 bytes
-rw-r--r--web/funnelweb/hackman/h_manual.toc.gzbin0 -> 1016 bytes
-rw-r--r--web/funnelweb/scripts/0license.txt.gzbin0 -> 691 bytes
-rw-r--r--web/funnelweb/scripts/master.fws.gzbin0 -> 2995 bytes
-rw-r--r--web/funnelweb/scripts/test_gen.fws.gzbin0 -> 643 bytes
-rw-r--r--web/funnelweb/scripts/test_l.fws.gzbin0 -> 518 bytes
-rw-r--r--web/funnelweb/scripts/test_ld.fws.gzbin0 -> 648 bytes
-rw-r--r--web/funnelweb/scripts/test_lo.fws.gzbin0 -> 544 bytes
-rw-r--r--web/funnelweb/scripts/test_lo2.fws.gzbin0 -> 581 bytes
-rw-r--r--web/funnelweb/scripts/test_lot.fws.gzbin0 -> 565 bytes
-rw-r--r--web/funnelweb/scripts/test_lt.fws.gzbin0 -> 545 bytes
-rw-r--r--web/funnelweb/sources/analyse.c.gzbin0 -> 3815 bytes
-rw-r--r--web/funnelweb/sources/analyse.h.gzbin0 -> 1055 bytes
-rw-r--r--web/funnelweb/sources/as.c.gzbin0 -> 877 bytes
-rw-r--r--web/funnelweb/sources/as.h.gzbin0 -> 2023 bytes
-rw-r--r--web/funnelweb/sources/clock.c.gzbin0 -> 1167 bytes
-rw-r--r--web/funnelweb/sources/clock.h.gzbin0 -> 1566 bytes
-rw-r--r--web/funnelweb/sources/command.c.gzbin0 -> 19266 bytes
-rw-r--r--web/funnelweb/sources/command.h.gzbin0 -> 1002 bytes
-rw-r--r--web/funnelweb/sources/data.c.gzbin0 -> 818 bytes
-rw-r--r--web/funnelweb/sources/data.h.gzbin0 -> 7202 bytes
-rw-r--r--web/funnelweb/sources/dump.c.gzbin0 -> 6265 bytes
-rw-r--r--web/funnelweb/sources/dump.h.gzbin0 -> 1102 bytes
-rw-r--r--web/funnelweb/sources/environ.h.gzbin0 -> 3447 bytes
-rw-r--r--web/funnelweb/sources/help.c.gzbin0 -> 8954 bytes
-rw-r--r--web/funnelweb/sources/help.h.gzbin0 -> 2625 bytes
-rw-r--r--web/funnelweb/sources/help_gnu.c.gzbin0 -> 1695 bytes
-rw-r--r--web/funnelweb/sources/help_gnu.ctx.gzbin0 -> 7069 bytes
-rw-r--r--web/funnelweb/sources/help_gnu.h.gzbin0 -> 935 bytes
-rw-r--r--web/funnelweb/sources/help_gnu.txt.gzbin0 -> 6817 bytes
-rw-r--r--web/funnelweb/sources/list.c.gzbin0 -> 3069 bytes
-rw-r--r--web/funnelweb/sources/list.h.gzbin0 -> 3711 bytes
-rw-r--r--web/funnelweb/sources/lister.c.gzbin0 -> 3829 bytes
-rw-r--r--web/funnelweb/sources/lister.h.gzbin0 -> 1295 bytes
-rw-r--r--web/funnelweb/sources/machin.c.gzbin0 -> 4018 bytes
-rw-r--r--web/funnelweb/sources/machin.h.gzbin0 -> 4355 bytes
-rw-r--r--web/funnelweb/sources/main.c.gzbin0 -> 1618 bytes
-rw-r--r--web/funnelweb/sources/mapper.c.gzbin0 -> 5394 bytes
-rw-r--r--web/funnelweb/sources/mapper.h.gzbin0 -> 1344 bytes
-rw-r--r--web/funnelweb/sources/memory.c.gzbin0 -> 4820 bytes
-rw-r--r--web/funnelweb/sources/memory.h.gzbin0 -> 2001 bytes
-rw-r--r--web/funnelweb/sources/misc.c.gzbin0 -> 2144 bytes
-rw-r--r--web/funnelweb/sources/misc.h.gzbin0 -> 1882 bytes
-rw-r--r--web/funnelweb/sources/option.c.gzbin0 -> 3779 bytes
-rw-r--r--web/funnelweb/sources/option.h.gzbin0 -> 2701 bytes
-rw-r--r--web/funnelweb/sources/parser.c.gzbin0 -> 12634 bytes
-rw-r--r--web/funnelweb/sources/parser.h.gzbin0 -> 1088 bytes
-rw-r--r--web/funnelweb/sources/scanner.c.gzbin0 -> 17304 bytes
-rw-r--r--web/funnelweb/sources/scanner.h.gzbin0 -> 1181 bytes
-rw-r--r--web/funnelweb/sources/section.c.gzbin0 -> 1448 bytes
-rw-r--r--web/funnelweb/sources/section.h.gzbin0 -> 2002 bytes
-rw-r--r--web/funnelweb/sources/style.h.gzbin0 -> 4216 bytes
-rw-r--r--web/funnelweb/sources/table.c.gzbin0 -> 4388 bytes
-rw-r--r--web/funnelweb/sources/table.h.gzbin0 -> 3357 bytes
-rw-r--r--web/funnelweb/sources/tangle.c.gzbin0 -> 5784 bytes
-rw-r--r--web/funnelweb/sources/tangle.h.gzbin0 -> 836 bytes
-rw-r--r--web/funnelweb/sources/texhead.c.gzbin0 -> 1761 bytes
-rw-r--r--web/funnelweb/sources/texhead.ctx.gzbin0 -> 5179 bytes
-rw-r--r--web/funnelweb/sources/texhead.h.gzbin0 -> 2208 bytes
-rw-r--r--web/funnelweb/sources/texhead.tex.gzbin0 -> 4994 bytes
-rw-r--r--web/funnelweb/sources/weave.c.gzbin0 -> 7749 bytes
-rw-r--r--web/funnelweb/sources/weave.h.gzbin0 -> 822 bytes
-rw-r--r--web/funnelweb/sources/writfile.c.gzbin0 -> 3003 bytes
-rw-r--r--web/funnelweb/sources/writfile.h.gzbin0 -> 3122 bytes
-rw-r--r--web/funnelweb/tests/0license.txt.gzbin0 -> 691 bytes
-rw-r--r--web/funnelweb/tests/an01.fw.gzbin0 -> 20 bytes
-rw-r--r--web/funnelweb/tests/an02.fw.gzbin0 -> 20 bytes
-rw-r--r--web/funnelweb/tests/an03.fw.gzbin0 -> 441 bytes
-rw-r--r--web/funnelweb/tests/an04.fw.gzbin0 -> 193 bytes
-rw-r--r--web/funnelweb/tests/ex01.fw.gzbin0 -> 20 bytes
-rw-r--r--web/funnelweb/tests/ex02.fw.gzbin0 -> 148 bytes
-rw-r--r--web/funnelweb/tests/ex03.fw.gzbin0 -> 293 bytes
-rw-r--r--web/funnelweb/tests/ex04.fw.gzbin0 -> 274 bytes
-rw-r--r--web/funnelweb/tests/ex05.fw.gzbin0 -> 466 bytes
-rw-r--r--web/funnelweb/tests/ex06.fw.gzbin0 -> 495 bytes
-rw-r--r--web/funnelweb/tests/ex07.fw.gzbin0 -> 384 bytes
-rw-r--r--web/funnelweb/tests/ex08.fw.gzbin0 -> 633 bytes
-rw-r--r--web/funnelweb/tests/ex09.fw.gzbin0 -> 194 bytes
-rw-r--r--web/funnelweb/tests/ex09a.fwi.gzbin0 -> 20 bytes
-rw-r--r--web/funnelweb/tests/ex10.fw.gzbin0 -> 141 bytes
-rw-r--r--web/funnelweb/tests/ex10a.fwi.gzbin0 -> 20 bytes
-rw-r--r--web/funnelweb/tests/ex11.fw.gzbin0 -> 401 bytes
-rw-r--r--web/funnelweb/tests/ex12.fw.gzbin0 -> 293 bytes
-rw-r--r--web/funnelweb/tests/ex13.fw.gzbin0 -> 606 bytes
-rw-r--r--web/funnelweb/tests/ex14.fw.gzbin0 -> 225 bytes
-rw-r--r--web/funnelweb/tests/ex15.fw.gzbin0 -> 310 bytes
-rw-r--r--web/funnelweb/tests/ex16.fw.gzbin0 -> 927 bytes
-rw-r--r--web/funnelweb/tests/generate.fw.gzbin0 -> 836 bytes
-rw-r--r--web/funnelweb/tests/hi01.fw.gzbin0 -> 208 bytes
-rw-r--r--web/funnelweb/tests/hi02.fw.gzbin0 -> 467 bytes
-rw-r--r--web/funnelweb/tests/hi03.fw.gzbin0 -> 456 bytes
-rw-r--r--web/funnelweb/tests/hi04.fw.gzbin0 -> 480 bytes
-rw-r--r--web/funnelweb/tests/hi05.fw.gzbin0 -> 269 bytes
-rw-r--r--web/funnelweb/tests/hi06.fw.gzbin0 -> 341 bytes
-rw-r--r--web/funnelweb/tests/hi07.fw.gzbin0 -> 234 bytes
-rw-r--r--web/funnelweb/tests/hi08.fw.gzbin0 -> 467 bytes
-rw-r--r--web/funnelweb/tests/hi09.fw.gzbin0 -> 1042 bytes
-rw-r--r--web/funnelweb/tests/hi10.fw.gzbin0 -> 1211 bytes
-rw-r--r--web/funnelweb/tests/pr01.fw.gzbin0 -> 284 bytes
-rw-r--r--web/funnelweb/tests/pr02.fw.gzbin0 -> 163 bytes
-rw-r--r--web/funnelweb/tests/pr03.fw.gzbin0 -> 297 bytes
-rw-r--r--web/funnelweb/tests/pr04.fw.gzbin0 -> 558 bytes
-rw-r--r--web/funnelweb/tests/pr05.fw.gzbin0 -> 303 bytes
-rw-r--r--web/funnelweb/tests/pr06.fw.gzbin0 -> 349 bytes
-rw-r--r--web/funnelweb/tests/pr07.fw.gzbin0 -> 259 bytes
-rw-r--r--web/funnelweb/tests/pr08.fw.gzbin0 -> 640 bytes
-rw-r--r--web/funnelweb/tests/pr09.fw.gzbin0 -> 616 bytes
-rw-r--r--web/funnelweb/tests/pr10.fw.gzbin0 -> 301 bytes
-rw-r--r--web/funnelweb/tests/sc01_note.fw.gzbin0 -> 117 bytes
-rw-r--r--web/funnelweb/tests/sc02.fw.gzbin0 -> 20 bytes
-rw-r--r--web/funnelweb/tests/sc03.fw.gzbin0 -> 20 bytes
-rw-r--r--web/funnelweb/tests/sc04.fw.gzbin0 -> 20 bytes
-rw-r--r--web/funnelweb/tests/sc05.fw.gzbin0 -> 75 bytes
-rw-r--r--web/funnelweb/tests/sc06.fw.gzbin0 -> 131 bytes
-rw-r--r--web/funnelweb/tests/sc07.fw.gzbin0 -> 323 bytes
-rw-r--r--web/funnelweb/tests/sc08.fw.gzbin0 -> 108 bytes
-rw-r--r--web/funnelweb/tests/sc09.fw.gzbin0 -> 231 bytes
-rw-r--r--web/funnelweb/tests/sc10.fw.gzbin0 -> 1289 bytes
-rw-r--r--web/funnelweb/tests/sc11.fw.gzbin0 -> 400 bytes
-rw-r--r--web/funnelweb/tests/sc12.fw.gzbin0 -> 155 bytes
-rw-r--r--web/funnelweb/tests/sc13.fw.gzbin0 -> 254 bytes
-rw-r--r--web/funnelweb/tests/sc13a.fwi.gzbin0 -> 20 bytes
-rw-r--r--web/funnelweb/tests/sc13b.fwi.gzbin0 -> 20 bytes
-rw-r--r--web/funnelweb/tests/sc13c.fwi.gzbin0 -> 20 bytes
-rw-r--r--web/funnelweb/tests/sc13d.fwi.gzbin0 -> 85 bytes
-rw-r--r--web/funnelweb/tests/sc13e.fwi.gzbin0 -> 146 bytes
-rw-r--r--web/funnelweb/tests/sc13f.fwi.gzbin0 -> 106 bytes
-rw-r--r--web/funnelweb/tests/sc14.fw.gzbin0 -> 146 bytes
-rw-r--r--web/funnelweb/tests/sc15.fw.gzbin0 -> 476 bytes
-rw-r--r--web/funnelweb/tests/sc15a.fwi.gzbin0 -> 456 bytes
-rw-r--r--web/funnelweb/tests/sc16.fw.gzbin0 -> 495 bytes
-rw-r--r--web/funnelweb/tests/sc17.fw.gzbin0 -> 348 bytes
-rw-r--r--web/funnelweb/tests/sc18.fw.gzbin0 -> 457 bytes
-rw-r--r--web/funnelweb/tests/sc19.fw.gzbin0 -> 165 bytes
-rw-r--r--web/funnelweb/tests/sc20.fw.gzbin0 -> 193 bytes
-rw-r--r--web/funnelweb/tests/sc21.fw.gzbin0 -> 374 bytes
-rw-r--r--web/funnelweb/tests/sc22.fw.gzbin0 -> 246 bytes
-rw-r--r--web/funnelweb/tests/sc23.fw.gzbin0 -> 279 bytes
-rw-r--r--web/funnelweb/tests/sc24.fw.gzbin0 -> 210 bytes
-rw-r--r--web/funnelweb/tests/sc25.fw.gzbin0 -> 156 bytes
-rw-r--r--web/funnelweb/tests/sc26.fw.gzbin0 -> 166 bytes
-rw-r--r--web/funnelweb/tests/sc27.fw.gzbin0 -> 225 bytes
-rw-r--r--web/funnelweb/tests/sc28.fw.gzbin0 -> 428 bytes
-rw-r--r--web/funnelweb/tests/sc29.fw.gzbin0 -> 203 bytes
-rw-r--r--web/funnelweb/tests/tg01.fw.gzbin0 -> 203 bytes
-rw-r--r--web/funnelweb/tests/tg02.fw.gzbin0 -> 483 bytes
-rw-r--r--web/funnelweb/tests/tg03.fw.gzbin0 -> 426 bytes
-rw-r--r--web/funnelweb/tests/tg04.fw.gzbin0 -> 329 bytes
-rw-r--r--web/funnelweb/tests/tg05.fw.gzbin0 -> 195 bytes
-rw-r--r--web/funnelweb/tests/tg06.fw.gzbin0 -> 218 bytes
-rw-r--r--web/funnelweb/tests/tg07.fw.gzbin0 -> 190 bytes
-rw-r--r--web/funnelweb/tests/tg08.fw.gzbin0 -> 196 bytes
-rw-r--r--web/funnelweb/tests/tg08a.fwi.gzbin0 -> 128 bytes
-rw-r--r--web/funnelweb/tests/tg09.fw.gzbin0 -> 470 bytes
-rw-r--r--web/funnelweb/tests/wv01.fw.gzbin0 -> 135 bytes
-rw-r--r--web/funnelweb/tests/wv02.fw.gzbin0 -> 342 bytes
-rw-r--r--web/funnelweb/tests/wv03.fw.gzbin0 -> 404 bytes
-rw-r--r--web/funnelweb/tests/wv04.fw.gzbin0 -> 294 bytes
-rw-r--r--web/funnelweb/tests/wv05.fw.gzbin0 -> 442 bytes
-rw-r--r--web/funnelweb/tests/wv06.fw.gzbin0 -> 448 bytes
-rw-r--r--web/funnelweb/userman/u_ch0.tex.gzbin0 -> 3170 bytes
-rw-r--r--web/funnelweb/userman/u_ch1.tex.gzbin0 -> 23154 bytes
-rw-r--r--web/funnelweb/userman/u_ch2.tex.gzbin0 -> 23106 bytes
-rw-r--r--web/funnelweb/userman/u_ch3.tex.gzbin0 -> 36734 bytes
-rw-r--r--web/funnelweb/userman/u_ch4.tex.gzbin0 -> 5878 bytes
-rw-r--r--web/funnelweb/userman/u_ch5.tex.gzbin0 -> 6009 bytes
-rw-r--r--web/funnelweb/userman/u_cha.tex.gzbin0 -> 3497 bytes
-rw-r--r--web/funnelweb/userman/u_manual.aux.gzbin0 -> 2486 bytes
-rw-r--r--web/funnelweb/userman/u_manual.idx.gzbin0 -> 6300 bytes
-rw-r--r--web/funnelweb/userman/u_manual.log.gzbin0 -> 1784 bytes
-rw-r--r--web/funnelweb/userman/u_manual.sin.gzbin0 -> 6696 bytes
-rw-r--r--web/funnelweb/userman/u_manual.tex.gzbin0 -> 3769 bytes
-rw-r--r--web/funnelweb/userman/u_manual.toc.gzbin0 -> 2159 bytes
350 files changed, 137494 insertions, 0 deletions
diff --git a/web/funnelweb/0readme.txt b/web/funnelweb/0readme.txt
new file mode 100644
index 0000000000..4b1788960a
--- /dev/null
+++ b/web/funnelweb/0readme.txt
@@ -0,0 +1,17 @@
+FUNNELWEB 0README FILE
+======================
+This is the first file you should read after obtaining a copy of
+FunnelWeb.
+
+FunnelWeb is well documented and the best thing you can do at this
+stage to get started is to LaTeX and print out the FunnelWeb User's
+Manual. The LaTeX sources for the manual can be found in the directory
+
+...../fwdir/userman/
+
+The file to LaTeX is u_manual.tex. The FunnelWeb User's Manual
+contains full installation instructions.
+
+If you are in a hurry to install FunnelWeb, print out u_ch4.tex in
+text form and follow the instructions.
+
diff --git a/web/funnelweb/0stoppress/fw_README.mes b/web/funnelweb/0stoppress/fw_README.mes
new file mode 100644
index 0000000000..186661abfa
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_README.mes
@@ -0,0 +1,92 @@
+--<Guru>--
+D=10-Nov-1992
+A=Ross Williams
+S=Overview of FunnelWeb archive.
+K=funnelweb archive messages status release notes update readme
+--<Guru>--
+OVERVIEW OF FUNNELWEB ARCHIVE
+=============================
+FunnelWeb is a simple, portable literate preprocessor. It was released
+in June 1992. The June 1992 release is the only release of FunnelWeb
+to date (mid November 1992). This archive contains files that provide
+additional information that may be of assistance to FunnelWeb users.
+
+ fw_README.mes - This message.
+ fw_abandon.mes - About why FunnelWeb was temporarily abandoned.
+ fw_advert.mes - The original FunnelWeb internet advertisment.
+ fw_make.mes - A FunnelWeb make file.
+ fw_mlist.mes - FunnelWeb mailing list.
+ fw_mlist_rules.mes - All about the FunnelWeb mailing list.
+ fw_p_apollo.mes - Notes on porting to Apollo.
+ fw_p_hp.mes - Notes on porting to HP.
+ fw_p_mpw.mes - Notes on porting to MPW.
+ fw_p_next.mes - Notes on porting to NeXT.
+ fw_p_next_patch.mes - NeXT machine patches.
+ fw_p_pc.exe - An MSDOS/386 FunnelWeb executable.
+ fw_p_pc.mes - Notes on porting to MSDOS.
+ fw_refs.mes - Literate programming references.
+ fw_sugg.mes - Current list of suggestions for improving FunnelWeb.
+ fw_tabs.mes - A note about FunnelWeb and tab characters.
+ fw_testim.mes - FunnelWeb customer testimonials!
+
+The original release kit of FunnelWeb is in
+
+Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3].
+File : ~pub/funnelweb/funnelweb.tar.Z
+ (=directory tree in ~pub/funnelweb/..... (less the tar file!))
+
+That's all the information released on FunnelWeb so far.
+
+Currently, I have stopped working on FunnelWeb in favour of other
+projects. However, I have decided to spend a small amount of my time
+acting in a coordinating role to make FunnelWeb more widely known and
+to organize its users so that they can assist each other.
+
+The most unfortunate aspect of my lack of time for FunnelWeb at the
+moment is that I do not have the time even to update the source code
+so that it will compile properly on the variety of machines that
+FunnelWeb users have ported it to. Instead, I have simply organized
+and archived the porting information provided by FunnelWeb users.
+Getting a new version out is at least one week's work and I just don't
+have a week at the moment. The worst case is FunnelWeb for the PC
+which doesn't quite compile (I took some shortcuts at release time).
+As this is such an important platform, I have included a PC .exe file
+in the archive. Note: There have been few reported problems with
+getting FunnelWeb to compile on the other three supported platforms:
+Suns, Macs, and Vaxen.
+
+The three support activities I intend to pursue are:
+
+ * Advertising FunnelWeb.
+ * Running the FunnelWeb mailing list.
+ * Maintainance of a FunnelWeb archive.
+
+The archive consists of a set of text files (what you are reading is
+one of the messages). Each message is headed with a "Guru" header
+record. "Guru" is my private text file database which I might release
+one day. Most of the content of the message files has been drawn from
+the email that I have received from FunnelWeb users. In organizing all
+this material, I have tended to omit people's names and email
+addresses for two reasons:
+
+ * It would take too long to obtain permission from each person
+ to quote them publicly. This has been a real headache.
+
+ * I don't want to punish people for emailing me about FunnelWeb
+ by listing them publicly as having performed particular ports
+ etc, so I have refrained from listing the names and email
+ addresses so that they won't be barraged by email.
+
+Thus, most of the information is paraphrased from the email. To avoid
+these problems in the future, I am making the rule that anything sent
+to the mailing list has public status.
+
+I hope that this archive will assist FunnelWeb users. If you have
+anything that you think might benefit other FunnelWeb users, email it
+to me, and I will place it in the archive.
+
+Ross Williams
+ross@spam.adelaide.edu.au
+Creator of FunnelWeb.
+
+--<End of document>--
diff --git a/web/funnelweb/0stoppress/fw_abandon.mes b/web/funnelweb/0stoppress/fw_abandon.mes
new file mode 100644
index 0000000000..ebed0a2469
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_abandon.mes
@@ -0,0 +1,115 @@
+--<Guru>--
+D=09-Jul-1992
+A=Ross Williams
+S=A message about the suspension of FunnelWeb development.
+K=funnelweb development suspension support
+--<Guru>--
+FUNNELWEB SUSPENSION OF DEVELOPMENT
+===================================
+On 9 July 1992, after months of intensive FunnelWeb development, I
+(Ross Williams) felt so overwhelmed by all the work that the public
+release of FunnelWeb was generating that I personally abandoned the
+project by emailing the message reproduced below to all those on the
+FunnelWeb mailing list.
+
+I have since recovered my composure and have decided to devote a small
+amount of time per week to FunnelWeb. This will not be enough to
+sustain any kind of sensible development or support, but I will
+endeavor to make good use of the time by promoting FunnelWeb and
+coordinating communication between its users.
+
+Ross Williams.
+ross@spam.adelaide.edu.au
+9 October 1992.
+
+Note: The colonization of comp.doc was a complete failure and the
+FunnelWeb users fell apart as a group. As at 9 October 1992, I intend
+to establish a FunnelWeb mailing list.
+
+----------------------------------------------------------------------
+
+Dear FunnelWeb Users,
+
+I have decided to suspend all FunnelWeb development indefinitely. I
+just don't have the time.
+
+The comments and suggestions that you have sent me have been filed
+somewhere safe and will be reviewed if I ever have another burst at
+FunnelWeb development. Meanwhile, the best thing is probably if "you
+all talk among yourselves for a while" :-). To this end, I've compiled
+a list of all the people who have emailed me about FunnelWeb which I
+have included at the end of this message. Judging from the email I
+received, FunnelWeb users could cooperate to:
+
+ * Trade tips on porting FunnelWeb to different machines (including
+ the PC version which I stuffed up in my release).
+ * Talk about various uses for FunnelWeb.
+ * Talk about different typesetter output formats (e.g. RTF).
+ * Determine other new features commonly desired.
+ * Possibly coordinate a GNU breakout (see FW Hacker's Manual).
+
+It would be nice to create a newsgroup for FunnelWeb discussions, as
+this would avoid mailing list hassles and might pull in new users not
+already on the mailing list. However, creating a new newsgroup takes
+slightly less time than building an Egyptian pyramid (I know - I've
+created two newsgroups) and so a better short term solution is to
+colonize a newsgroup. I looked around, and comp.doc has had very
+little traffic (161 messages total) and so I thought of colonizing it.
+However, it is moderated and so postings might not get through. I
+suggest that we try to colonize comp.doc anyway. My recommendation is:
+
+ * Everyone subscribe to comp.doc.
+ * Post messages about FunnelWeb to comp.doc. If the moderator
+ bounces them or they don't appear quickly, send them to the
+ mailing list below.
+ * If this doesn't work, perhaps one of you can set up an email
+ address that will forward to this mailing list. I don't have
+ the sysadmin power to set such a thing up on my machine.
+
+Thanks for your interest in FunnelWeb. I will still be happy to
+receive comments and suggestions, but will be unable to act on them
+in the foreseeable future.
+
+Ross Williams
+ross@spam.adelaide.edu.au
+
+--<Start of FunnelWeb Mailing List>--
+adrian@internode.com.au
+alien@essex.ac.uk
+atrevorr@spam.adelaide.edu.au
+bart@cs.tamu.edu
+cmh@air16.larc.nasa.gov
+dave@cs.adelaide.edu.au
+davidh@kau1.kodak.com
+ddw@sunbim.be
+dlb@hudson.wash.inmet.com
+dwagon@nella9.cc.monash.edu.au
+dwyer@cs.adelaide.edu.au
+frackit!dave@uunet.uu.net
+g.michaelson@cc.uq.oz.au
+gordoni@cs.adelaide.edu.au
+gvokalek@eleceng.adelaide.edu.au
+hrubin@pop.stat.purdue.edu
+jcallen@world.std.com
+john@cs.utexas.edu
+jpq@casbah.acns.nwu.edu
+jutta@cs.tu-berlin.de
+kent@imd.sterling.com
+kipd@hpclad2.cup.hp.com
+m.harding@gdt.bath.ac.uk
+maxtal@extro.ucc.su.oz.au
+mbcnpjq@hpa.ph.man.ac.uk
+rem@btr.com
+rjb@koala.harvard.edu
+ross@spam.adelaide.edu.au
+simon@internode.com.au
+svb@cs.purdue.edu
+tonyb@cs.adelaide.edu.au
+vanrey@hippo.fido.de
+w8sdz@vela.acs.oakland.edu
+wvenable@stats.adelaide.edu.au
+--<End of FunnelWeb Mailing List>--
+----------------------------------------------------------------------
+
+--<End of Document>--
+
diff --git a/web/funnelweb/0stoppress/fw_advert.mes b/web/funnelweb/0stoppress/fw_advert.mes
new file mode 100644
index 0000000000..9ca714bfc3
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_advert.mes
@@ -0,0 +1,85 @@
+--<Guru>--
+D=06-Jun-1992
+A=Ross Williams
+S=Description of June 1992 news posting to advertise FunnelWeb
+K=funnelweb news posting advertisement announcement
+--<Guru>--
+JUNE 1992 FUNNELWEB NEWS POSTING
+================================
+FunnelWeb was first announced in early June 1992. The newsgroups to
+which a posting was attempted to be made were:
+
+ aus.general
+ aus.sources
+ comp.archives
+ comp.compression
+ comp.doc
+ comp.misc
+ comp.newprod
+ comp.sources.misc
+ comp.sources.unix
+ comp.text
+ comp.text.tex
+ ua.general
+
+I don't know how many groups actually received the message. The
+message sent is reproduced below.
+
+
+
+Path: spam!ross
+From: ross@spam.adelaide.edu.au
+Newsgroups: ua.general
+Subject: Announcing FunnelWeb: A literate-programming tool.
+Message-ID: <1431@spam.ua.oz>
+Date: 6 Jun 92 07:24:18 GMT
+Sender: ross@spam.ua.oz
+Reply-To: ross@spam.adelaide.edu.au
+Followup-To: comp.doc
+Distribution: world
+Lines: 43
+
+ANNOUNCING FUNNELWEB
+====================
+FunnelWeb is a production-quality literate-programming tool that emphasises
+simplicity and reliability. It provides a macro facility, and assists in the
+production of typeset documentation. FunnelWeb runs on most popular machines
+(Sun, VAX, Mac, PC) and its highly portable source code in C is freely
+available under a GNU license.
+
+Features:
+ + Provides a simple macro preprocessor facility.
+ + Assists in the generation of typeset documentation.
+ + Runs on Sun, VMS VAX, Macintosh, and PC.
+ + Portable C source code distributed under GNU licence.
+ + Comprehensive user's manual (115 pages).
+ + Input-programming-language independent.
+ + Allows complete control over the output text.
+ + Regression test suite with over 200 tests.
+ - Requires TeX to produce typeset documentation.
+ - Typesets program code using TT font only.
+
+How to Obtain FunnelWeb
+-----------------------
+FunnelWeb can be obtained by anonymous FTP from:
+
+Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3].
+File : ~pub/funnelweb/funnelweb.tar.Z
+ (=directory tree in ~pub/funnelweb/..... (less the tar file!))
+
+Last minute notes:
+
+* When I created the .tar file, all the files were on rx access only.
+This means that when you untar it, you will have to do something like
+chmod -R u+rwx ~user/fwdir
+otherwise LaTeX, CC, and FunnelWeb won't be able to create temporary
+files.
+
+* I haven't supplied a makefile. Just compile everything in sight!
+ The following commands will compile FunnelWeb on a Sun.
+ cc -c -O *.c
+ cc -o fw *.o
+
+--<End of Announcement>--
+
+--<End of Document>--
diff --git a/web/funnelweb/0stoppress/fw_hack_manual.ps b/web/funnelweb/0stoppress/fw_hack_manual.ps
new file mode 100644
index 0000000000..df6679452b
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_hack_manual.ps
@@ -0,0 +1,32255 @@
+%!
+% This is the prolog used by OzTeX 1.6 to convert a DVI file into PostScript.
+
+% Set dev to "LW" if LaserWriter, "LINO" if Linotronic, or "?" if unknown:
+
+/dev (?) def
+statusdict /product known {
+ statusdict /product get
+ (LaserWriter) anchorsearch { pop pop /dev (LW) def } { pop } ifelse
+ statusdict /product get
+ (Linotype) anchorsearch { pop pop /dev (LINO) def } { pop } ifelse
+} if
+
+/@setup { % set up OzTeX's coordinate system
+
+/res exch def % desired resolution (defines dots per inch)
+/voff exch def % vertical offset (in dots)
+/hoff exch def % horizontal offset (in dots)
+/ht exch def % paper height (in dots)
+/wd exch def % paper width (in dots)
+
+/land wd ht gt def % print in landscape orientation?
+/oshift ht res sub neg def % vertical shift (in dots) for portrait origin
+
+dev (?) eq % unknown device?
+{ land
+ { % landscape
+ 90 rotate % rotate axes 90deg anticlockwise
+ 72 res div dup neg scale % units now device dots
+ res dup translate % move to TeX origin
+ voff neg hoff translate % adjust TeX origin if necessary
+ }
+ { % portrait
+ 72 res div dup neg scale % units now device dots
+ res oshift translate % move to TeX origin
+ hoff voff translate % adjust TeX origin if necessary
+ } ifelse
+} if
+
+dev (LW) eq % LaserWriter?
+{
+ % Display model and version in OzTeX window:
+ % (\rmodel = ) print statusdict /product get print
+ % (\rversion = ) print version print (\r) print flush
+
+ land
+ { % landscape
+ 90 rotate % rotate axes 90deg anticlockwise
+ 72 res div dup neg scale % units now device dots
+ res dup translate % move to TeX origin
+ voff neg hoff translate % adjust TeX origin if necessary
+
+ % Model-specific adjustments to origin can be made here:
+ statusdict /product get (LaserWriter) eq
+ { -90 0 translate % move left a bit
+ }
+ { statusdict /product get (LaserWriter Plus) eq
+ { -32 0 translate % move left a bit
+ }
+ { statusdict /product get (LaserWriter II NTX) eq
+ { -20 0 translate % move left a bit
+ }
+ { statusdict /product get (LaserWriter IIg) eq
+ { 0 0 translate
+ }
+ { % some other model
+ 0 0 translate
+ }
+ ifelse } ifelse } ifelse } ifelse
+ }
+ { % portrait
+ 72 res div dup neg scale % units now device dots
+ res oshift translate % move to TeX origin
+ hoff voff translate % adjust TeX origin if necessary
+
+ % Model-specific adjustments to origin can be made here:
+ statusdict /product get (LaserWriter) eq
+ { 0 22 translate % move down a bit
+ }
+ { statusdict /product get (LaserWriter Plus) eq
+ { 0 0 translate
+ }
+ { statusdict /product get (LaserWriter II NTX) eq
+ { 0 14 translate % move down a bit
+ }
+ { statusdict /product get (LaserWriter IIg) eq
+ { 0 0 translate
+ }
+ { % some other model
+ 0 0 translate
+ }
+ ifelse } ifelse } ifelse } ifelse
+ } ifelse
+
+ % The matrix produced above can cause scaling problems,
+ % so round each matrix value to nearest integer and use setmatrix:
+ matrix currentmatrix
+ dup dup 0 get round cvi 0 exch put
+ dup dup 1 get round cvi 1 exch put
+ dup dup 2 get round cvi 2 exch put
+ dup dup 3 get round cvi 3 exch put
+ dup dup 4 get round cvi 4 exch put
+ dup dup 5 get round cvi 5 exch put
+ setmatrix
+
+ % Display new matrix in OzTeX window:
+ % matrix currentmatrix
+ % dup 0 get ( ) cvs print ( ) print
+ % dup 1 get ( ) cvs print ( ) print
+ % dup 2 get ( ) cvs print ( ) print
+ % dup 3 get ( ) cvs print ( ) print
+ % dup 4 get ( ) cvs print ( ) print
+ % dup 5 get ( ) cvs print (\r) print flush
+ % pop
+} if
+
+dev (LINO) eq % Linotronic?
+{ land
+ { % landscape
+ 90 rotate % rotate axes 90deg anticlockwise
+ 72 res div dup neg scale % units now device dots
+ res dup translate % move to TeX origin
+ voff neg hoff translate % adjust TeX origin if necessary
+ }
+ { % portrait
+ newpath clippath pathbbox % push LLx LLy URx URy (URy = ht in pts)
+ /paperht exch 72 div def % paper height in inches
+ pop pop pop % remove URx LLy LLx
+ 72 res div dup neg scale % units now device dots
+ res paperht res mul neg res add
+ translate % move to TeX origin
+ hoff voff translate % adjust TeX origin if necessary
+ } ifelse
+} if
+
+% Some fine-tuning of the code used to draw a rule is necessary.
+% Use page 18 in nasty.dvi to check results:
+
+dev (LW) eq % LaserWriter?
+{ version cvr 38.0 le % early model?
+ { land
+ { % landscape
+ /r % set a wd by ht rule at h,v
+ { newpath
+ moveto % move to h,v
+ /ht exch 1 sub def % reduce height by 1
+ /wd exch 1 sub def % ditto for width
+ wd 0 rlineto
+ 0 ht neg rlineto
+ wd neg 0 rlineto
+ fill
+ } bind def
+ }
+ { % portrait
+ /r % set a wd by ht rule at h,v
+ { newpath
+ 1 add moveto % move to h,v+1
+ /ht exch 1 sub def % reduce height by 1
+ /wd exch 1 sub def % ditto for width
+ wd 0 rlineto
+ 0 ht neg rlineto
+ wd neg 0 rlineto
+ fill
+ } bind def
+ } ifelse
+ } if
+ version cvr 2000.0 gt % IIg or newer model?
+ {
+ /r % set a wd by ht rule at h,v
+ { newpath
+ 1 add moveto % move to h,v+1
+ /ht exch def % set height
+ /wd exch def % set width
+ wd 0 rlineto
+ 0 ht neg rlineto
+ wd neg 0 rlineto
+ fill
+ } bind def
+ } if
+} if
+
+/mtrx 6 array def
+mtrx currentmatrix pop % save our new transformation matrix
+
+} def % end of @setup
+
+% @saveVM and @restoreVM are only used if we are conserving VM
+% by downloading font bitmaps more often:
+
+/@saveVM {/prefontVM save def} def
+/@restoreVM {prefontVM restore} def
+
+/@newfont % create new font dict
+{ /maxchcode exch def
+ /fontid exch def
+ fontid 7 dict def
+ fontid load begin
+ /FontType 3 def
+ /FontMatrix [1 0 0 -1 0 0] def % -1 because y scale is negative
+ /FontBBox [0 0 1 1] def
+ /BitMaps maxchcode 1 add array def
+ /BuildChar {CharBuilder} def
+
+ /Encoding 256 array def
+ 0 1 255 {Encoding exch /.notdef put} for
+
+ % The above 2 lines fix a definefont error that occurs on some printers
+ % (eg. the LaserWriter NTX-J). If you have an old LaserWriter and
+ % now get VM errors then you might want to revert to the old code:
+ %
+ % /Encoding maxchcode 1 add array def
+ % 0 1 maxchcode {Encoding exch /.notdef put} for
+
+ end
+ fontid fontid load definefont pop
+} def
+
+% The char data, a bitmap descriptor, is an array with 6 elements;
+% element 0 is either a hex string or an array of hex strings (the latter
+% is required for large PK chars with more than 65535 hex digits):
+
+/ch-image {ch-data 0 get dup type /stringtype ne {N get /N N 1 add def} if
+ } def % hex string
+/ch-width {ch-data 1 get} def % the number of pixels across
+/ch-height {ch-data 2 get} def % the number of pixels tall
+/ch-xoff {ch-data 3 get} def % number of pixels to left of origin
+/ch-yoff {ch-data 4 get} def % number of pixels below origin
+/ch-advw {ch-data 5 get} def % advance width
+
+% The following character builder looks up the char data in the BitMaps array
+% and paints the character:
+
+/CharBuilder % image one char
+{ /ch-code exch def % save the char code
+ /font-dict exch def % and the font dict
+ /ch-data font-dict /BitMaps get
+ ch-code get def
+ /N 0 def
+ ch-advw 0
+ ch-xoff neg ch-height ch-yoff sub 1 sub neg % -xo , -(ht-yo-1)
+ ch-width ch-xoff sub 1 sub ch-yoff % (wd-xo-1) , yo
+ setcachedevice
+ ch-width ch-height true
+ [1 0 0 -1 ch-xoff ch-yoff] % bitmap sent top to bottom
+ {ch-image}
+ imagemask
+} def
+
+/sf {setfont} def % set current font
+
+/dc % define new character
+{ /ch-code exch def
+ /ch-data exch def
+
+ % The following code should be enabled if you have an old LaserWriter.
+ % It attempts to overcome a bug that causes the printer to crash
+ % and print a test page rather then report a VMerror.
+ %
+ % vmstatus % returns: savelevel vmused vmmax
+ % 10000 sub gt % is vmused > (vmmax-10000)?
+ % { pop VMERROR } % causes error message (avoiding crash)
+ % { pop } % pop savelevel
+ % ifelse
+
+ currentfont /BitMaps get ch-code ch-data put
+ currentfont /Encoding get ch-code
+ dup ( ) cvs cvn put % generate unique name
+} bind def
+
+/@bop0 {pop} def % begin DVI page n
+
+/@bop1 % begin setting DVI page n
+{ pop % throw away page number
+ initgraphics % start with a clean slate
+ mtrx setmatrix % switch to our TeX coordinate system
+ /prepageVM save def % save state of VM at start of page
+} def
+
+/@eop % end DVI page n
+{ pop % throw away page number
+ prepageVM restore % restore VM to state at start of page
+ showpage
+} def
+
+/@end { } def % end of file
+
+% h and s are used to typeset downloaded bitmap fonts:
+
+/h {exch 0 rmoveto show} bind def % move right by dh and show (...)
+
+/s {3 1 roll moveto show} bind def % move to h,v and show (...)
+
+% H and S are used to typeset PostScript fonts.
+% We can't use relative horizontal positioning because the advance widths in
+% a PostScript font are not integers and rounding errors would accumulate:
+
+/H {exch v moveto show} bind def % move to h,v and show (...)
+
+/S % ditto, and save v position
+{ 3 1 roll
+ 1 add % v+1 to match baseline of bitmap fonts
+ dup /v exch def
+ moveto show
+} bind def
+
+% r is used to typeset a rule:
+
+/r % set a wd by ht rule at h,v
+{ newpath
+ moveto % move to h,v
+ /ht exch 1 sub def % reduce height by 1
+ /wd exch 1 sub def % ditto for width
+ wd 0 rlineto
+ 0 ht neg rlineto
+ wd neg 0 rlineto
+ fill
+} bind def
+
+% Following procedures are invoked as the result of \special{file}.
+% We change all scaling and graphics back to defaults, but shift the origin
+% to the current position on the page:
+
+/@bsp
+{ /vmag exch def % vertical scaling
+ /hmag exch def % horizontal scaling
+ moveto % move to h,v
+ gsave
+ /prespecialVM save def % save showpage, TeX procedures etc.
+ currentpoint transform
+ initgraphics itransform translate
+ hmag vmag scale
+ land { 90 rotate } if % rotate axes if landscape
+ /showpage { } def % user does not have to remove showpage
+} bind def
+
+/@esp
+{ prespecialVM restore % restore saved showpage value etc.
+ grestore
+} bind def
+
+% Following procedures are invoked as the result of \special{epsf=file}.
+% Note that @bepsf and @eepsf are currently identical to @bsp and @esp
+% but it is a good idea to allow for future changes:
+
+/@bepsf
+{ /vmag exch def % vertical scaling
+ /hmag exch def % horizontal scaling
+ moveto % move to h,v
+ gsave
+ /prespecialVM save def % save showpage, TeX procedures etc.
+ currentpoint transform
+ initgraphics itransform translate
+ hmag vmag scale
+ land { 90 rotate } if % rotate axes if landscape
+ /showpage { } def % user does not have to remove showpage
+} bind def
+
+/@eepsf
+{ prespecialVM restore % restore saved showpage value etc.
+ grestore
+} bind def
+
+% Here is the code to handle bitmaps generated by PICT/PNTG \specials:
+
+/@bitmap
+{ /vmag exch def % vertical scaling
+ /hmag exch def % horizontal scaling
+ /vres exch def % vertical resolution of bitmap
+ /hres exch def % horizontal resolution of bitmap
+ /ht exch def % height
+ /wd exch def % width
+ /hexstring ht string def
+ gsave
+ 1 add translate % set origin to h,v+1
+ res hres div wd mul hmag mul
+ res vres div ht mul vmag mul neg scale
+ wd ht true
+ [ wd 0 0 ht neg 0 ht ]
+ { currentfile hexstring readhexstring pop }
+ imagemask
+ grestore
+} def
+
+% Here are the definitions needed to handle PostScript fonts:
+
+/sp % scaled pts to device dots
+{ 16#10000 div % scaled pts to pts
+ res mul 72.27 div % pts to device dots
+} bind def
+
+/PSfont
+{ /fontname exch def % printer font name
+ /dotsize exch def % scaled dot size
+ /done false def
+
+ % check if fontname is one of the special printer font names
+ % appearing in the current config file's PS font list:
+ fontname /Slanted-Times-Roman eq
+ { /Times-Roman findfont [1 0 .167 -1 0 0] makefont
+ dotsize scalefont setfont
+ /done true def
+ } if
+
+ % other nice tricks can be included here if the appropriate PS font
+ % specification is added to the current config file:
+ % fontname /Extended-Times-Roman eq
+ % { /Times-Roman findfont [1.2 0 0 -1 0 0] makefont
+ % dotsize scalefont setfont
+ % /done true def
+ % } if
+
+ done not
+ { fontname findfont [1 0 0 -1 0 0] makefont
+ dotsize scalefont setfont
+ } if
+} bind def
+
+% count 0 gt
+% { (\r *** Bug in DVItoPS.ps: stuff left on stack *** \r) print flush
+% } if
+
+% --------------- end of OzTeX's prolog ---------------
+
+2480 3496 0 0 300 @setup
+1 @bop0
+/cmr10.746 127 @newfont
+/cmr17.300 127 @newfont
+/cmr10.432 127 @newfont
+cmr17.300 sf
+[<FFFFFF000000FFFFFFF0000007E001FC000003E0003E000003E0001F800003E00007C0
+0003E00007E00003E00003E00003E00003F00003E00001F00003E00001F80003E00001F8
+0003E00001F80003E00001F80003E00001F80003E00001F80003E00001F00003E00003F0
+0003E00003E00003E00007C00003E0000F800003E0001F000003E0003C000003E001F000
+0003FFFF00000003E003E0000003E00078000003E0003C000003E0001E000003E0000F00
+0003E0000F800003E00007800003E00007C00003E00007C00003E00007C00003E00007C0
+0003E00007C00003E00007E00003E00007E00003E00007E00003E00007E00003E00007E0
+0003E00007E00803E00007F00803E00003F00803E00003F00807F00001F010FFFF8000F8
+10FFFF80007C60000000000F80>
+48 50 -4 48 49] 82 dc
+[<001FC00000F0780001C01C00070007000F0007801E0003C01C0001C03C0001E03C0001
+E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000
+F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E0003C00F0007
+8007800F0001C01C0000F07800001FC000>
+32 31 -2 30 33] 111 dc
+[<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800007E00
+003FF0001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC000
+1CE0001CE00018F00038F00030EC0060C301C080FE00>
+24 31 -2 30 26] 115 dc
+[<FFE00007FFC0FFF00007FFC003F000007C0002F80000380002FC00001000027C000010
+00023E00001000023E00001000021F00001000021F80001000020F800010000207C00010
+000207E00010000203E00010000203F00010000201F00010000200F80010000200FC0010
+0002007C00100002007E00100002003E00100002001F00100002001F80100002000F8010
+0002000FC01000020007C01000020003E01000020003F01000020001F01000020000F810
+00020000F810000200007C10000200007E10000200003E10000200001F10000200001F10
+000200000F90000200000FD00002000007D00002000003F00002000003F00002000001F0
+0002000001F00002000000F0000200000070000700000070000F8000003000FFF8000030
+00FFF800001000>
+48 49 -4 48 50] 78 dc
+[<78FCFCFCFC78>
+8 6 -6 5 18] 46 dc
+[<FFFE003FFF8001FFC0FFFE003FFF8001FFC00FE00003F800007E0007C00001F000003C
+0007C00001F00000180003E00000F80000100003E00000F80000100003E00000F8000010
+0001F00000FC0000200001F00000FC0000200001F00000FC0000200000F800013E000040
+0000F800013E0000400000F800013E0000400000FC00033F0000C000007C00021F000080
+00007C00021F00008000007E00021F80008000003E00040F80010000003E00040F800100
+00003E00040F80010000001F000807C0020000001F000807C0020000001F000807C00200
+00000F801003E0040000000F801003E0040000000F801003E0040000000FC02001F00C00
+000007C02001F00800000007C02001F00800000007E02001F80800000003E04000F81000
+000003E04000F81000000003E04000F81000000001F080007C2000000001F080007C2000
+000001F080007C2000000000F900003E4000000000F900003E4000000000F900003E4000
+0000007E00001F80000000007E00001F80000000007E00001F80000000007E00001F8000
+0000003C00000F00000000003C00000F00000000003C00000F0000000000180000060000
+00000018000006000000000018000006000000>
+72 50 -1 48 68] 87 dc
+[<07000F801F801F800F8007000000000000000000000000000000000000000000000001
+801F80FF80FF800F80078007800780078007800780078007800780078007800780078007
+800780078007800780078007800780078007800FC0FFF8FFF8>
+16 48 -2 47 18] 105 dc
+[<01803F80FF80FF800F8007800780078007800780078007800780078007800780078007
+800780078007800780078007800780078007800780078007800780078007800780078007
+80078007800780078007800780078007800780078007800FC0FFFCFFFC>
+16 50 -2 49 18] 108 dc
+[<00FE00000303C0000C00E00010007000100038003C003C003E001C003E001E003E001E
+0008001E0000001E0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F001E
+003E001E003C001E007C001E00F8001E04F8001E04F8001E04F8003E04F8003E0478003E
+047C005E043E008F080F0307F003FC03E0>
+32 31 -3 30 33] 97 dc
+[<0180FE001FC0003F83078060F000FF8C03C1807800FF9001E2003C000FA001E4003C00
+07A000F4001E0007C000F8001E0007C000F8001E00078000F0001E00078000F0001E0007
+8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780
+00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
+F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0
+001E00078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83
+FFF0>
+56 31 -2 30 56] 109 dc
+cmr10.746 sf
+[<FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00007FF800001FFF00003FF0
+000001FF80001FF00000007F80001FF00000003F80001FF00000001F80001FF00000000F
+80001FF00000000780001FF00000000780001FF00000000380001FF000000003C0001FF0
+00000003C0001FF000000001C0001FF000000001C0001FF000000001C0001FF000000001
+C0001FF000000001C0001FF000000000E0001FF000000000E0001FF000000000E0001FF0
+0001C000E0001FF00001C00000001FF00001C00000001FF00001C00000001FF00001C000
+00001FF00001C00000001FF00001C00000001FF00003C00000001FF00003C00000001FF0
+0007C00000001FF0000FC00000001FF0003FC00000001FFFFFFFC00000001FFFFFFFC000
+00001FFFFFFFC00000001FF0003FC00000001FF0000FC00000001FF00007C00000001FF0
+0003C00000001FF00003C00000001FF00001C00000001FF00001C00000001FF00001C000
+00001FF00001C00000001FF00001C00000001FF00001C00000001FF00001C00000001FF0
+0000000000001FF00000000000001FF00000000000001FF00000000000001FF000000000
+00001FF00000000000001FF00000000000001FF00000000000001FF00000000000001FF0
+0000000000001FF00000000000001FF00000000000001FF00000000000001FF000000000
+00001FF00000000000001FF00000000000001FF00000000000003FF80000000000007FFE
+0000000000FFFFFFFF80000000FFFFFFFF80000000FFFFFFFF80000000>
+64 71 -3 70 67] 70 dc
+[<01FE00003FC000FFFE001FFFC000FFFE001FFFC000FFFE001FFFC00003FE00007FC000
+01FE00003FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000
+FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE
+00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00
+001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE0000
+1FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001F
+C00000FE00001FC00000FE00001FC00000FE00003FC00000FE00003FC00000FE00003FC0
+0000FE00007FC000007E00007FC000007E0000FFC000007F0000DFC000003F0001DFE000
+001F80039FF000000FC0071FFFC00007F01E1FFFC00001FFF81FFFC000003FE01FE000>
+56 46 -4 44 57] 117 dc
+[<01FC007F800000FFFC03FFF00000FFFC0781FC0000FFFC1E00FE000003FC38007F0000
+01FC70003F000000FCE0003F800000FCC0003F800000FDC0001FC00000FD80001FC00000
+FF80001FC00000FF00001FC00000FF00001FC00000FF00001FC00000FE00001FC00000FE
+00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00
+001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE0000
+1FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001F
+C00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC0
+0000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC000
+03FF80007FF000FFFFFE1FFFFFC0FFFFFE1FFFFFC0FFFFFE1FFFFFC0>
+56 45 -4 44 57] 110 dc
+[<00007F80000003FFF000000FC0FC00003F003F00007E001F8001FC000FC003F8000FE0
+07F00007F007F00003F00FE00003F81FE00003F81FC00001FC3FC00001FC3FC00001FC7F
+C00001FC7F800001FE7F800000FE7F800000FEFF800000FEFF800000FEFFFFFFFFFEFFFF
+FFFFFEFF80000000FF80000000FF80000000FF80000000FF80000000FF80000000FF8000
+00007F800000007F800000007FC00000003FC00000003FC000000E3FC000000E1FE00000
+1E0FE000001C0FF000003C07F000003803F800007801FC0000F000FC0001E0007F0003C0
+001F8007800007E03E000001FFF80000003FC000>
+40 47 -3 45 46] 101 dc
+[<01FE00FFFE00FFFE00FFFE0003FE0001FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0003FF80FFFFFEFFFFFEFFFF
+FE>
+24 72 -3 71 28] 108 dc
+[<FFFFFFE003FFFFFF8001FFFFF8FFFFFFE003FFFFFF8001FFFFF8FFFFFFE003FFFFFF80
+01FFFFF803FFF800000FFFE000001FFF8000FFE0000003FF80000007FE0000FFC0000001
+FF00000001FC00007FC0000001FF00000001F800007FC0000001FF80000000F000003FE0
+000000FF80000000F000003FE0000000FF80000000E000003FE0000000FF80000000E000
+001FF00000007FC0000001C000001FF00000007FC0000001C000001FF00000007FC00000
+01C000001FF8000000FFE0000003C000000FF8000000FFE00000038000000FF8000000FF
+E00000038000000FFC000001DFF000000780000007FC000001DFF000000700000007FC00
+0001DFF000000700000007FE0000038FF800000F00000003FE0000038FF800000E000000
+03FE0000038FF800000E00000003FF0000078FFC00001E00000001FF00000707FC00001C
+00000001FF00000707FC00001C00000001FF00000F07FE00001C00000000FF80000E03FE
+00003800000000FF80000E03FE00003800000000FF80001E03FF000038000000007FC000
+1C01FF000070000000007FC0001C01FF000070000000007FC0003C01FF80007000000000
+3FE0003800FF8000E0000000003FE0003800FF8000E0000000003FE0003800FF8000E000
+0000001FF00070007FC001C0000000001FF00070007FC001C0000000001FF00070007FC0
+01C0000000001FF800E0003FE003C0000000000FF800E0003FE00380000000000FF800E0
+003FE00380000000000FFC01C0001FF007800000000007FC01C0001FF007000000000007
+FC01C0001FF007000000000007FE0380000FF80F000000000003FE0380000FF80E000000
+000003FE0380000FF80E000000000003FF0780000FFC1E000000000001FF07000007FC1C
+000000000001FF07000007FC1C000000000001FF0F000007FE1C000000000000FF8E0000
+03FE38000000000000FF8E000003FE38000000000000FF9E000003FF380000000000007F
+DC000001FF700000000000007FDC000001FF700000000000007FFC000001FFF000000000
+00003FF8000000FFE00000000000003FF8000000FFE00000000000003FF8000000FFE000
+00000000001FF00000007FC00000000000001FF00000007FC00000000000001FF0000000
+7FC00000000000001FE00000003FC00000000000000FE00000003F800000000000000FE0
+0000003F800000000000000FC00000001F8000000000000007C00000001F000000000000
+0007C00000001F0000000000000007800000000F0000000000000003800000000E000000
+00>
+104 72 -2 70 106] 87 dc
+[<01FE0000000000FFFE0000000000FFFE0000000000FFFE000000000003FE0000000000
+01FE000000000000FE000000000000FE000000000000FE000000000000FE000000000000
+FE000000000000FE000000000000FE000000000000FE000000000000FE000000000000FE
+000000000000FE000000000000FE000000000000FE000000000000FE000000000000FE00
+0000000000FE000000000000FE000000000000FE000000000000FE000000000000FE0000
+00000000FE000000000000FE00FF00000000FE07FFF0000000FE1F01FC000000FE78007F
+000000FEF0001F800000FFE0000FC00000FFC00007E00000FF800007F00000FF000003F8
+0000FF000001FC0000FE000001FE0000FE000001FE0000FE000000FF0000FE000000FF00
+00FE000000FF8000FE000000FF8000FE0000007F8000FE0000007F8000FE0000007FC000
+FE0000007FC000FE0000007FC000FE0000007FC000FE0000007FC000FE0000007FC000FE
+0000007FC000FE0000007FC000FE0000007FC000FE0000007FC000FE0000007F8000FE00
+00007F8000FE000000FF8000FE000000FF0000FE000000FF0000FE000000FF0000FE0000
+01FE0000FE000001FC0000FF000003FC0000FF000003F80000FF800007F00000FFC0000F
+E00000F9E0001FC00000F8F0003F800000F078007E000000F01E03F8000000E00FFFE000
+00000001FE000000>
+56 73 -3 71 57] 98 dc
+[<FFFFFFFE01FFFFFFFCFFFFFFFE01FFFFFFFCFFFFFFFE01FFFFFFFC007FFC000000FFF8
+00003FF80000007FF000001FF00000003FE000001FF00000003FE000001FF00000003FE0
+00001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE0
+00001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE0
+00001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE0
+00001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE0
+00001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE0
+00001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE0
+00001FF00000003FE000001FFFFFFFFFFFE000001FFFFFFFFFFFE000001FFFFFFFFFFFE0
+00001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE0
+00001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE0
+00001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE0
+00001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE0
+00001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE0
+00001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE0
+00001FF00000003FE000001FF00000003FE000001FF00000003FE000001FF00000003FE0
+00001FF00000003FE000001FF00000003FE000003FF80000007FF000007FFC000000FFF8
+00FFFFFFFE01FFFFFFFCFFFFFFFE01FFFFFFFCFFFFFFFE01FFFFFFFC>
+72 71 -3 70 77] 72 dc
+[<0003FE000000001FFFC00000007E03F0000001F000FC000003C0007E00000780003F00
+0007C0003F80000FF0001FC0000FF8000FE0000FF8000FE0000FF8000FE0000FF80007F0
+000FF80007F00007F00007F00001C00007F00000000007F00000000007F00000000007F0
+0000000007F000000001FFF00000007FFFF0000003FF87F000001FF007F000007F8007F0
+0001FE0007F00003FC0007F0000FF80007F0001FF00007F0001FE00007F0003FC00007F0
+007FC00007F0007F800007F01C7F800007F01CFF000007F01CFF000007F01CFF000007F0
+1CFF00000FF01CFF00000FF01CFF00001FF01CFF80001BF01C7F80003BF01C3FC00071F8
+381FE000E1F8380FF001C0FC7003FC0780FFE000FFFE003FC0001FF8001F80>
+48 47 -4 45 52] 97 dc
+[<00003FE0000001FFFE000007E01F80001F8003C0007F0000F000FE00007801FC0000F8
+03F80003FC07F00007FC0FF00007FC0FE00007FC1FE00007FC1FE00007FC3FC00003F83F
+C00000E07FC00000007FC00000007F800000007F80000000FF80000000FF80000000FF80
+000000FF80000000FF80000000FF80000000FF80000000FF80000000FF80000000FF8000
+00007F800000007FC00000007FC00000007FC00000003FC000000E3FE000000E1FE00000
+1E1FE000001C0FF000001C07F000003803F800007801FC00007000FE0000E0007F0003C0
+001F800780000FE03F000001FFFC0000003FE000>
+40 47 -3 45 46] 99 dc
+[<01FE0000000000FFFE0000000000FFFE0000000000FFFE000000000003FE0000000000
+01FE000000000000FE000000000000FE000000000000FE000000000000FE000000000000
+FE000000000000FE000000000000FE000000000000FE000000000000FE000000000000FE
+000000000000FE000000000000FE000000000000FE000000000000FE000000000000FE00
+0000000000FE000000000000FE000000000000FE000000000000FE000000000000FE0000
+00000000FE000000000000FE000000000000FE001FFFFE0000FE001FFFFE0000FE001FFF
+FE0000FE0007FFE00000FE0003FF000000FE0003FC000000FE0003F8000000FE0003E000
+0000FE0007C0000000FE000F80000000FE001F00000000FE003E00000000FE007C000000
+00FE00F000000000FE01E000000000FE03C000000000FE0FC000000000FE1FE000000000
+FE3FE000000000FE7FF000000000FEFFF800000000FFE3F800000000FFC1FC00000000FF
+81FE00000000FF00FF00000000FE007F00000000FC007F80000000FC003FC0000000FC00
+1FC0000000FC001FE0000000FC000FF0000000FC0007F0000000FC0003F8000000FC0003
+FC000000FC0001FC000000FC0000FE000000FC0000FF000000FC00007F800000FC00007F
+C00000FC00007FE00003FF0000FFF000FFFFFC07FFFF80FFFFFC07FFFF80FFFFFC07FFFF
+80>
+56 72 -3 71 55] 107 dc
+[<01FC01F800FFFC0FFE00FFFC1E1F00FFFC383F8003FC707FC001FCE07FC000FCC07FC0
+00FDC07FC000FD807FC000FD803F8000FF800E0000FF00000000FF00000000FF00000000
+FF00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE
+00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00
+000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000
+0000FE00000000FE00000000FE00000000FE00000000FF00000003FF800000FFFFFF8000
+FFFFFF8000FFFFFF8000>
+40 45 -3 44 40] 114 dc
+[<1F003F807FC0FFE0FFE0FFE0FFF0FFF07FF03FB01F3000300030003000300070006000
+60006000E000C001C001800380030007000E000C001C0038003000>
+16 31 -9 71 29] 39 dc
+[<001FF8060000FFFF0E0003F007FE000F8001FE001F0000FE003E00007E003C00003E00
+7C00003E007800001E00F800001E00F800000E00F800000E00FC00000E00FC00000E00FE
+00000E00FF000000007FC00000007FF80000003FFFE000003FFFFE00001FFFFF800007FF
+FFE00003FFFFF80000FFFFFC00001FFFFE000001FFFF0000000FFF00000001FF80000000
+7F80E000003FC0E000001FC0E000000FC0F000000FC0F0000007C0F0000007C0F8000007
+C0F8000007C0FC00000780FC00000F80FE00000F80FE00000F00FF00001E00FF80003C00
+F9E0007800F0F803F000E03FFFC000C007FC0000>
+40 47 -3 45 41] 115 dc
+[<FFFFF800000000001FFFFFFFFFF800000000001FFFFFFFFFF800000000001FFFFF007F
+FC00000000003FFE00003FFC00000000003FFC00001DFE000000000077F800001DFE0000
+00000077F800001DFE000000000077F800001CFF0000000000E7F800001CFF0000000000
+E7F800001C7F8000000001C7F800001C7F8000000001C7F800001C7F8000000001C7F800
+001C3FC00000000387F800001C3FC00000000387F800001C1FE00000000707F800001C1F
+E00000000707F800001C1FE00000000707F800001C0FF00000000E07F800001C0FF00000
+000E07F800001C0FF00000000E07F800001C07F80000001C07F800001C07F80000001C07
+F800001C03FC0000003807F800001C03FC0000003807F800001C03FC0000003807F80000
+1C01FE0000007007F800001C01FE0000007007F800001C00FF000000E007F800001C00FF
+000000E007F800001C00FF000000E007F800001C007F800001C007F800001C007F800001
+C007F800001C007F800001C007F800001C003FC000038007F800001C003FC000038007F8
+00001C001FE000070007F800001C001FE000070007F800001C001FE000070007F800001C
+000FF0000E0007F800001C000FF0000E0007F800001C0007F8001C0007F800001C0007F8
+001C0007F800001C0007F8001C0007F800001C0003FC00380007F800001C0003FC003800
+07F800001C0001FE00700007F800001C0001FE00700007F800001C0001FE00700007F800
+001C0000FF00E00007F800001C0000FF00E00007F800001C0000FF00E00007F800001C00
+007F81C00007F800001C00007F81C00007F800001C00003FC3800007F800001C00003FC3
+800007F800001C00003FC3800007F800001C00001FE7000007F800001C00001FE7000007
+F800001C00000FFE000007F800001C00000FFE000007F800001C00000FFE000007F80000
+1C000007FC000007F800001C000007FC000007F800003E000007FC000007F800007F0000
+03F8000007F80000FF800003F800000FFC0003FFE00001F000001FFE00FFFFFF8001F000
+3FFFFFFFFFFFFF8001F0003FFFFFFFFFFFFF8000E0003FFFFFFF>
+88 71 -3 70 95] 77 dc
+cmr10.432 sf
+[<FFFF0003FFC0FFFF0003FFC007F000007E0003E00000380003E00000100001F0000020
+0001F00000200001F00000200000F80000400000F80000400000FC0000C000007C000080
+00007C00008000003E00010000003E00010000003F00010000001F00020000001F000200
+00001F80060000000F80040000000F800400000007C00800000007C00800000007E00800
+000003E01000000003E01000000001F02000000001F02000000001F02000000000F84000
+000000F84000000000FCC0000000007C80000000007C80000000003F00000000003F0000
+0000003F00000000001E00000000001E00000000000C00000000000C00000000000C0000
+00>
+48 42 -1 40 45] 86 dc
+[<00100000700001F0000FF000FEF000F0F00000F00000F00000F00000F00000F00000F0
+0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
+0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
+0000F00001F8007FFFE07FFFE0>
+24 40 -5 39 30] 49 dc
+[<78FCFCFCFC78>
+8 6 -5 5 17] 46 dc
+[<007F000001C1C0000780F0000F0078000E0038001C001C003C001E003C001E003C001E
+0078000F0078000F0078000F0078000F00F8000F80F8000F80F8000F80F8000F80F8000F
+80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F
+80F8000F8078000F0078000F0078000F0078000F003C001E003C001E003C001E001C001C
+000E0038000F0078000780F00001C1C000007F0000>
+32 41 -2 39 30] 48 dc
+[<001F000070C000E1E001C3E003C3E00381C00780800780000780000780000780000780
+00078000078000078000078000FFFE00FFFE000780000780000780000780000780000780
+000780000780000780000780000780000780000780000780000780000780000780000780
+0007800007800007800007C000FFFE00FFFE00>
+24 42 -1 41 18] 102 dc
+[<007F000001C1C000070070000E0038001C001C003C001E003C001E0078000F0078000F
+00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F8078000F
+0078000F003C001E003C001E001E003C000E0038000700700001C1C000007F0000>
+32 26 -2 25 30] 111 dc
+[<0787C0FF98E0FF91F00FA1F007C1F007C0E007C0000780000780000780000780000780
+0007800007800007800007800007800007800007800007800007800007800007800007C0
+00FFFE00FFFE00>
+24 26 -1 25 23] 114 dc
+[<FFFFFFFF00FFFFFFFF0007E0003F0003E000070003E000038003E000018003E0000180
+03E000008003E000008003E000008003E000008003E000004003E002004003E002004003
+E002000003E002000003E002000003E006000003E00E000003FFFE000003FFFE000003E0
+0E000003E006000003E002000003E002000003E002000003E002000003E002000003E000
+000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
+0003E000000003E000000007F0000000FFFFE00000FFFFE00000>
+40 41 -2 40 39] 70 dc
+[<07800780FF80FF80FF80FF800F800F8007800780078007800780078007800780078007
+800780078007800780078007800780078007800780078007800780078007800780078007
+80078007800780078007800F8007800F800380178001C027C000E047FC003F87FC>
+32 26 -1 25 33] 117 dc
+[<0783F800FF8C1C00FF900E000FA0070007A0078007C0078007C0078007800780078007
+800780078007800780078007800780078007800780078007800780078007800780078007
+80078007800780078007800780078007800780078007800780FFFCFFFCFFFCFFFC>
+32 26 -1 25 33] 110 dc
+[<007E0003C3800700E00E00F01C00703C00783C003878003C78003CF8003CF8003CFFFF
+FCF80000F80000F80000F80000F800007800007C00003C00043C00041E00080E00100700
+2001C0C0007F00>
+24 26 -2 25 27] 101 dc
+[<0780FF80FF800F80078007800780078007800780078007800780078007800780078007
+800780078007800780078007800780078007800780078007800780078007800780078007
+800780078007800780FFFCFFFC>
+16 42 -1 41 17] 108 dc
+[<FFFE03FFF803FFC0FFFE03FFF803FFC00FE0003F80007E0007C0001F0000180003E000
+1F0000180003E0000F8000100003E0000F8000100001F0000F8000200001F0000FC00020
+0001F0000FC000200000F8000FC000400000F80013E000400000F80013E000400000FC00
+13E000C000007C0033F0008000007C0021F0008000007E0021F0008000003E0021F80100
+00003E0040F8010000003E0040F8010000001F0040F8020000001F00807C020000001F00
+807C020000000F80807C040000000F81003E040000000F81003E0400000007C1003E0800
+000007C2001F0800000007C2001F0800000003E2001F1000000003E4000F9000000003E4
+000F9000000001F4000FA000000001F80007E000000001F80007E000000000F80007C000
+000000F00003C000000000F00003C0000000007000038000000000600001800000000060
+00018000000000600001800000>
+64 42 -1 40 61] 87 dc
+[<07800000FF800000FF8000000F80000007800000078000000780000007800000078000
+00078000000780000007800000078000000780000007800000078000000783F000078C1C
+0007B0070007A0038007C003C0078001E0078001E0078000F0078000F0078000F8078000
+F8078000F8078000F8078000F8078000F8078000F8078000F0078000F0078001F0078001
+E0078001C007C003C00740078007200E0006181C000407E000>
+32 42 -1 41 33] 98 dc
+[<007F000003FFC0000701F0000C00F80010007C001C007C003E007E003E003E003E003E
+001E003E000C007E0000007C0000007C00000078000000F0000000E0000001C000000700
+0000FF00000001E0000000F0000000780000003C0000003E0000001F0000001F0000001F
+8000001F8030001F8078001F80FC001F80FC001F80FC001F00F8001F0040003F0040003E
+0030007C001800F8000F01F00003FFC000007F0000>
+32 41 -2 39 30] 51 dc
+[<FFE0000003FFC0FFE0000003FFC007E0000003F80002F0000005F00002F0000005F000
+0278000009F0000278000009F0000278000009F000023C000011F000023C000011F00002
+1E000021F000021E000021F000021E000021F000020F000041F000020F000041F0000207
+800081F0000207800081F0000207800081F0000203C00101F0000203C00101F0000203E0
+0201F0000201E00201F0000201E00201F0000200F00401F0000200F00401F0000200F004
+01F0000200780801F0000200780801F00002003C1001F00002003C1001F00002003C1001
+F00002001E2001F00002001E2001F00002000F4001F00002000F4001F00002000F4001F0
+000200078001F0000700078001F0000F80030003F800FFF803007FFFC0FFF803007FFFC0>
+56 41 -2 40 55] 77 dc
+[<01FC00000E0780001001C0003C00E0003E00F0003E0078001C00780008007800000078
+000000780000007800007FF80003E078000F8078001F0078003E0078007C007800780078
+20F8007820F8007820F8007820F800F8207C00F8203C013C401F063FC007F80F00>
+32 26 -2 25 30] 97 dc
+[<FFF00FF8FFF00FF80F8003C0078003800780010003C0020003C0020003E0020001E004
+0001E0040000F0080000F0080000F818000078100000781000003C2000003C2000003E60
+00001E4000001E4000000F8000000F800000070000000700000007000000020000000200
+000004000000040000000400000008000070080000F8100000F8100000F8200000F04000
+00608000001F000000>
+32 38 -1 25 32] 121 dc
+[<007F000001FFC00007C1E0000F0070001E0038001C003C003C001C0078001E0078001E
+00F8000F00F8000F00F8000F00F8000F00F8000F80F8000F80F8000F80F8000F8078000F
+8078001F803C001F803C001F801C002F800E004F800700CF8003810F80007E0F8000000F
+0000000F0000000F0000001E0000001E0000001E0000003C001C003C003E0078003E0070
+003C00E0001801C0001C0780000FFE000003F80000>
+32 41 -2 39 30] 57 dc
+[<00FE0007FF800E07E01803F02001F82000F840007C40007CF8007EFC007EFC003EFC00
+3EFC003E78007E00007E00007C00007C0000F80000F80001F00001E00003C00007800007
+00000E00001C0000380000700000600000C0000180020300020600040C00041800041000
+0C3FFFFC7FFFF8FFFFF8FFFFF8>
+24 40 -3 39 30] 50 dc
+1 @bop1
+cmr17.300 sf
+603 1151(Ross)s
+21(N.)h
+21(Williams)h
+cmr10.746 sf
+206 823(F)s
+-9(unnelW)h
+-8(eb)h
+36(Hac)h
+-3(k)h
+-3(er's)h
+34(Man)h
+-3(ual)h
+cmr10.432 sf
+519 1343(V1.0)s
+19(for)h
+20(F)h
+-5(unnelW)h
+-5(eb)h
+20(V3.0)h
+725 1536(Ma)s
+-2(y)h
+20(1992)h
+1 @eop
+2 @bop0
+/cmr10.300 127 @newfont
+/cmsy10.300 127 @newfont
+cmsy10.300 sf
+[<0001FC0000000FFF8000003E03E00000F000780001C0001C000380000E000700000700
+0E000003801C000001C018000000C038000000E030000000607000000070600000003060
+00000030E000000038C000000018C000000018C000000018C000000018C000000018C000
+000018C000000018E0000000386000000030600000003070000000703000000060380000
+00E018000000C01C000001C00E0000038007000007000380000E0001C0001C0000F00078
+00003E03E000000FFF80000001FC0000>
+40 39 -2 29 42] 13 dc
+cmr10.300 sf
+[<001F808000E0618001801980070007800E0003801C0003801C00018038000180780000
+807800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F00000
+00F0000000700000807800008078000080380000801C0001001C0001000E000200070004
+000180080000E03000001FC000>
+32 30 -2 28 30] 67 dc
+[<03F0000E1C00180600300300700380600180E001C0E001C0E001C0E001C0E001C0E001
+C06001807003803003001806000E1C0003F000>
+24 18 -1 17 21] 111 dc
+[<FC7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00
+E01C01C01C01C01C01801E03001D06001CF8001C00001C00001C00001C00001C00001C00
+001C0000FF8000>
+24 26 -1 17 23] 112 dc
+[<FF07E03C03801C01001C01000E02000E020007040007040007040003880003880003D8
+0001D00001D00000E00000E00000E000004000004000008000008000F08000F10000F300
+006600003C0000>
+24 26 -1 17 22] 121 dc
+[<FCE01D301E781E781C301C001C001C001C001C001C001C001C001C001C001C001C00FF
+C0>
+16 18 -1 17 16] 114 dc
+[<18003C003C0018000000000000000000000000000000FC001C001C001C001C001C001C
+001C001C001C001C001C001C001C001C001C001C00FF80>
+16 29 -1 28 12] 105 dc
+[<00038003C4C00C38C01C3880181800381C00381C00381C00381C001818001C38000C30
+0013C0001000003000001800001FF8001FFF001FFF803003806001C0C000C0C000C0C000
+C06001803003001C0E0007F800>
+24 28 -1 18 21] 103 dc
+[<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C
+001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03
+801C03801C03801C03801C0380FF9FF0>
+24 29 -1 28 23] 104 dc
+[<04000400040004000C000C001C003C00FFE01C001C001C001C001C001C001C001C001C
+001C101C101C101C101C100C100E2003C0>
+16 26 -1 25 16] 116 dc
+[<07E00C301878307870306000E000E000E000E000E000E00060007004300418080C3007
+C0>
+16 18 -2 17 18] 99 dc
+[<030007003F00C700070007000700070007000700070007000700070007000700070007
+00070007000700070007000700070007000F80FFF8>
+16 28 -4 27 21] 49 dc
+[<03C00C301818300C700C600EE006E006E007E007E007E007E0076007700F300F18170C
+2707C700060006000E300C780C78187010203030C00F80>
+16 29 -2 27 21] 57 dc
+[<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C001C0038007000
+6000C00180030006010C01180110023FFE7FFEFFFE>
+16 28 -2 27 21] 50 dc
+[<FFFF00000F01E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E
+000F001C000F003C000F0078000F01E0000FFF00000F03C0000F00E0000F00F0000F0078
+000F0078000F0078000F0078000F0078000F0078000F0078100F0078100F0038100F003C
+20FFF01C20000007C0>
+32 29 -2 27 31] 82 dc
+[<1F9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D0608F
+C0>
+16 18 -1 17 16] 115 dc
+[<FF007FC00F800E000F8004000BC0040009E0040009E0040008F0040008F80400087804
+00083C0400083C0400081E0400080F0400080F0400080784000807C4000803C4000801E4
+000801E4000800F40008007C0008007C0008003C0008003C0008001C0008000C001C000C
+00FF800400>
+32 28 -2 27 31] 78 dc
+[<60F0F060>
+8 4 -4 3 12] 46 dc
+[<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F00100F001F001007801F0020
+0780278020078027802003C027804003C043C04003C043C04003E043C04001E081E08001
+E081E08001E081E08000F100F10000F100F10000F100F100007900FA00007A007A00007A
+007A00003E007C00003C003C00003C003C00003C003C0000180018000018001800001800
+1800>
+40 29 -1 27 43] 87 dc
+[<FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
+001C001C001C001C001C001C001C001C001C001C00FF80>
+16 29 -1 28 12] 108 dc
+[<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C00601C
+00E01C40E01C40E01C40603C40304E801F8700>
+24 18 -2 17 21] 97 dc
+[<FC7E07E0001C838838001D019018001E01E01C001C01C01C001C01C01C001C01C01C00
+1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C
+01C01C001C01C01C001C01C01C00FF8FF8FF80>
+40 18 -1 17 36] 109 dc
+[<FFFF800F00E00F00780F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F00
+3C0F00780F00E00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00
+000F00000F00000F0000FFF000>
+24 28 -2 27 28] 80 dc
+[<03E00C301818300C700E6006E006FFFEE000E000E000E00060007002300218040C1803
+E0>
+16 18 -1 17 18] 101 dc
+[<FC7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03
+801C03801C03801C03801C03801C0380FF9FF0>
+24 18 -1 17 23] 110 dc
+[<003F0000070000070000070000070000070000070000070000070000070000070003E7
+000C1700180F00300700700700600700E00700E00700E00700E00700E00700E007006007
+00700700300700180F000C370007C7E0>
+24 29 -2 28 23] 100 dc
+[<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C3F
+C01C0F001C0C001C08001C10001C20001C40001CE0001DE0001E70001C78001C38001C3C
+001C1C001C0E001C0F001C0F80FF9FE0>
+24 29 -1 28 22] 107 dc
+[<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C
+001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C00
+C01C01C01C01801E030019060010F800>
+24 29 -1 28 23] 98 dc
+[<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03
+801C03801C03801C07800C07800E1B8003E3F0>
+24 18 -1 17 23] 117 dc
+[<FF07E03C03801C01001C01000E02000E020007040007040007040003880003880003D8
+0001D00001D00000E00000E00000E000004000>
+24 18 -1 17 22] 118 dc
+[<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E
+000E000E000E000E000E000E000E000E000E000E007FE0>
+16 29 0 28 13] 102 dc
+2 @bop1
+cmsy10.300 sf
+372 2675(\015)s
+cmr10.300 sf
+177 2675(Cop)s
+-1(yrigh)h
+-1(t)h
+384 2674(c)s
+428 2675(1992)s
+12(Ross)h
+14(N.)h
+14(Willia)h
+-1(m)h
+-1(s.)h
+177 2750(P)s
+-1(ermission)h
+17(is)h
+17(gran)h
+-1(ted)h
+17(to)h
+18(mak)h
+-1(e)h
+15(and)h
+18(distribute)h
+18(v)h
+-1(erbatim)h
+15(copies)h
+18(of)h
+17(this)h
+18(man)h
+-1(ual)h
+14(pro)h
+-1(vided)h
+18(that)h
+17(the)h
+177 2800(cop)s
+-1(yrigh)h
+-1(t)h
+14(notice)h
+14(and)h
+14(this)h
+14(p)h
+1(ermission)h
+12(notice)h
+15(are)h
+14(preserv)h
+-1(ed)h
+16(on)h
+14(all)h
+12(copies.)h
+1053 2940(1)s
+1772 2 177 2597 r
+1772 2 177 2835 r
+2 @eop
+3 @bop0
+3 @bop1
+cmr10.300 sf
+1053 2940(2)s
+3 @eop
+4 @bop0
+/cmbx10.746 127 @newfont
+/cmbx10.300 127 @newfont
+/cmmi10.300 127 @newfont
+cmbx10.746 sf
+[<000000003FFE00000E0000000FFFFFC0001E0000007FFFFFF8003E000003FFFFFFFE00
+FE00000FFFFFFFFF81FE00003FFFF800FFC3FE0000FFFF80000FF7FE0001FFFC000003FF
+FE0007FFF0000001FFFE000FFFC00000007FFE001FFF800000003FFE003FFF000000001F
+FE007FFE000000000FFE00FFFC0000000007FE01FFF80000000007FE03FFF00000000003
+FE03FFF00000000001FE07FFE00000000001FE07FFE00000000000FE0FFFC00000000000
+FE0FFFC000000000007E1FFFC000000000007E1FFF8000000000007E3FFF800000000000
+7E3FFF8000000000003E3FFF8000000000003E7FFF8000000000003E7FFF000000000000
+3E7FFF000000000000007FFF00000000000000FFFF00000000000000FFFF000000000000
+00FFFF00000000000000FFFF00000000000000FFFF00000000000000FFFF000000000000
+00FFFF00000000000000FFFF00000000000000FFFF00000000000000FFFF000000000000
+00FFFF00000000000000FFFF00000000000000FFFF000000000000007FFF000000000000
+007FFF000000000000007FFF000000000000007FFF8000000000003E3FFF800000000000
+3E3FFF8000000000003E3FFF8000000000003E1FFF8000000000003E1FFFC00000000000
+3E0FFFC000000000007C0FFFC000000000007C07FFE000000000007C07FFE00000000000
+F803FFF00000000000F803FFF00000000001F801FFF80000000001F000FFFC0000000003
+E0007FFE0000000007E0003FFF000000000FC0001FFF800000001F80000FFFC00000003F
+000007FFF0000000FE000001FFFC000001FC000000FFFF80000FF80000003FFFF8007FF0
+0000000FFFFFFFFFC000000003FFFFFFFF00000000007FFFFFFC00000000000FFFFFE000
+00000000003FFE000000>
+72 73 -7 71 86] 67 dc
+[<00000FFF0000000000FFFFF000000007FFFFFE0000001FFFFFFF8000003FFC03FFC000
+00FFE0007FF00001FF80001FF80003FF00000FFC0007FE000007FE000FFE000007FF000F
+FC000003FF001FFC000003FF803FFC000003FFC03FF8000001FFC03FF8000001FFC07FF8
+000001FFE07FF8000001FFE07FF8000001FFE0FFF8000001FFF0FFF8000001FFF0FFF800
+0001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF80000
+01FFF0FFF8000001FFF0FFF8000001FFF07FF8000001FFE07FF8000001FFE07FF8000001
+FFE07FF8000001FFE03FFC000003FFC03FFC000003FFC01FFC000003FF801FFE000007FF
+800FFE000007FF0007FF00000FFE0003FF80001FFC0001FFC0003FF80000FFE0007FF000
+007FFC03FFE000001FFFFFFF80000007FFFFFE00000000FFFFF0000000000FFF000000>
+56 46 -3 45 59] 111 dc
+[<007FC001FFC00000FFFFC00FFFF80000FFFFC03FFFFE0000FFFFC0FFFFFF0000FFFFC1
+FC07FF8000FFFFC3E003FFC00003FFC7C001FFC00001FFCF0001FFE00001FFDE0000FFE0
+0001FFDC0000FFE00001FFFC0000FFF00001FFF80000FFF00001FFF00000FFF00001FFF0
+0000FFF00001FFF00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0
+0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0
+0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0
+0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0
+0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0
+0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0
+0000FFF000FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFF
+E0FFFFFFC07FFFFFE0>
+64 46 -4 45 66] 110 dc
+[<0001F000000001F000000001F000000001F000000001F000000001F000000003F00000
+0003F000000003F000000007F000000007F000000007F00000000FF00000000FF0000000
+1FF00000003FF00000003FF00000007FF0000001FFF0000003FFF000000FFFFFFFC0FFFF
+FFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC000FFF0000000FFF0000000FFF0000000FFF0
+000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF000
+0000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF00000
+00FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF001F000FFF001F000
+FFF001F000FFF001F000FFF001F000FFF001F000FFF001F000FFF001F000FFF001F0007F
+F001E0007FF803E0003FF803E0003FFC07C0001FFE0F80000FFFFF800007FFFE000001FF
+FC0000001FF000>
+40 66 -2 65 46] 116 dc
+[<00001FFE00000001FFFFE0000007FFFFF800001FFFFFFE00007FFC07FF0000FFE001FF
+8001FFC0007FC003FF80003FE007FF00003FF00FFE00001FF01FFE00000FF81FFC00000F
+F83FFC00000FFC3FFC000007FC7FFC000007FC7FF8000007FC7FF8000007FE7FF8000007
+FEFFF8000007FEFFF8000007FEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFF
+FCFFF800000000FFF800000000FFF800000000FFF8000000007FF8000000007FF8000000
+007FFC000000003FFC000000003FFC000000003FFC0000001C1FFE0000003E0FFE000000
+3E07FF0000007E07FF000000FC03FF800001F801FFC00003F0007FF0001FE0003FFE00FF
+C0001FFFFFFF800007FFFFFE000000FFFFF80000000FFF8000>
+48 46 -3 45 54] 101 dc
+[<000FFF00E0007FFFF3E001FFFFFFE007FFFFFFE00FF800FFE01FC0001FE03F80000FE0
+3F000007E07F000003E07F000003E0FF000003E0FF000003E0FF800003E0FFC0000000FF
+F0000000FFFE000000FFFFF800007FFFFFC0007FFFFFF0003FFFFFFC001FFFFFFF000FFF
+FFFF8007FFFFFFC003FFFFFFE000FFFFFFF0003FFFFFF00003FFFFF800001FFFF8000000
+FFFC0000001FFC7800000FFCF8000007FCF8000003FCFC000003FCFC000003FCFE000003
+F8FE000003F8FF000003F8FF800007F0FFC0000FF0FFF0001FE0FFFC00FFC0FFFFFFFF80
+FC7FFFFE00F81FFFF800E003FF8000>
+40 46 -4 45 47] 115 dc
+cmbx10.300 sf
+[<FFFFF800FFFFFE000FC03F800FC00F800FC007C00FC007E00FC007E00FC007E00FC007
+E00FC007E00FC007C00FC007C00FC00F800FC03F000FFFFC000FC000000FC000000FC000
+000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000FFFC00
+00FFFC0000>
+32 28 -2 27 33] 80 dc
+[<FE3E00FE47001E8F801E8F801E8F801F07001F00001F00001F00001F00001F00001F00
+001F00001F00001F00001F0000FFF000FFF000>
+24 18 -1 17 20] 114 dc
+[<01FC000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F800
+007800007C00603C00601E00C00F038001FC00>
+24 18 -1 17 22] 101 dc
+[<007F0001E38003C7C00787C00F87C00F83800F80000F80000F80000F80000F8000FFF8
+00FFF8000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80
+000F80000F80000F80007FF8007FF800>
+24 29 0 28 15] 102 dc
+[<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07
+C0F807C0F807C0F807C0780BC03E13F80FE1F8>
+24 18 -1 17 23] 97 dc
+[<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F80000F800
+007800007801803C01801C03000E0E0003F800>
+24 18 -2 17 21] 99 dc
+[<1801801FFF001FFE001FFC001FF8001FC00018000018000018000018000019F8001E0E
+00180F801007800007C00007E00007E00007E07807E0F807E0F807E0F807C0F007C0600F
+80381F001FFE0007F000>
+24 27 -2 26 24] 53 dc
+[<00038000000380000007C0000007C0000007C000000FE000000FE000001FF000001BF0
+00001BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E0000C07E0001803F
+0001FFFF0003FFFF8003001F8003001F8006000FC006000FC00E000FE00C0007E0FFC07F
+FEFFC07FFE>
+32 28 -2 27 36] 65 dc
+[<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0F
+F81F0FF81F03801F07001F0C001F18001F70001FF8001FFC001FBC001F3E001F1F001F0F
+001F0F801F07C01F03E0FFC7FCFFC7FC>
+24 29 -1 28 25] 107 dc
+[<FF0FC0FF31E01F40F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00
+F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF>
+24 18 -1 17 27] 110 dc
+[<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F800F8F800
+F87800F07800F03C01E01E03C00F078001FC00>
+24 18 -1 17 24] 111 dc
+[<FF8FF8FEFF8FF8FE1F03E0301F03E0301F83E0700F83F0600F86F06007C6F0C007CEF8
+C007EC79C003EC7D8003F83D8001F83F0001F83F0001F01F0000F01E0000E00E0000E00E
+00>
+32 18 -1 17 34] 119 dc
+[<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F00FFE0FFE0>
+16 29 -1 28 14] 108 dc
+[<000FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F001F9
+F00F07F01C03F03C01F07801F07801F0F801F0F801F0F801F0F801F0F801F0F801F07801
+F07801F03C01F01C03F00F0FFE03F9FE>
+24 29 -2 28 27] 100 dc
+[<03F8F00E0F381E0F381C07303C07803C07803C07803C07801C07001E0F000E0E001BF8
+001000001800001800001FFF001FFFC00FFFE01FFFF07801F8F00078F00078F000787000
+707800F01E03C007FF00>
+24 27 -1 17 24] 103 dc
+[<FF0FC07E00FF31E18F001F40F207801F80FC07C01F80FC07C01F00F807C01F00F807C0
+1F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F
+00F807C01F00F807C0FFE7FF3FF8FFE7FF3FF8>
+40 18 -1 17 40] 109 dc
+[<0300030003000300070007000F000F003FFCFFFC1F001F001F001F001F001F001F001F
+001F001F0C1F0C1F0C1F0C0F08079803F0>
+16 26 -1 25 19] 116 dc
+[<1FD830786018E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CE018F830CF
+C0>
+16 18 -2 17 19] 115 dc
+[<6000007FFFE07FFFE07FFFC07FFF807FFF80E00300C00600C00C00C018000030000030
+0000600000E00000E00001E00001C00003C00003C00003C00003C00007C00007C00007C0
+0007C00007C00007C000038000>
+24 28 -3 27 24] 55 dc
+[<1E003F003F003F003F001E00000000000000000000000000FF00FF001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F00FFE0FFE0>
+16 30 -1 29 14] 105 dc
+[<FFE003FFFFE003FF0FF000300FF800300DFC00300CFE00300C7E00300C3F00300C1F80
+300C1FC0300C0FE0300C07F0300C03F0300C01F8300C01FC300C00FE300C007F300C003F
+300C001FB00C001FF00C000FF00C0007F00C0003F00C0001F00C0000F00C0000F0FFC000
+70FFC00030>
+32 28 -2 27 37] 78 dc
+[<03F8000FFE001E0F003C07807807807803C0F803C0F803C0F803E0F803E0F803E0F803
+E07807E03807E03C0BE00E1BE003E3E00003E00003C00003C03807C07C07807C0700780F
+00383C001FF8000FE000>
+24 27 -2 26 24] 57 dc
+[<00600001E0000FE000FFE000F3E00003E00003E00003E00003E00003E00003E00003E0
+0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
+0003E0007FFF807FFF80>
+24 27 -3 26 24] 49 dc
+[<FFFFFF00FFFFFF000FC01F000FC007000FC003000FC003800FC003800FC001800FC181
+800FC181800FC180000FC180000FC380000FFF80000FFF80000FC380000FC180000FC180
+000FC180000FC180000FC000000FC000000FC000000FC000000FC000000FC00000FFFF00
+00FFFF0000>
+32 28 -2 27 30] 70 dc
+[<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
+F81F00F81F00F81F01F80F01F80786FF01F8FF>
+24 18 -1 17 27] 117 dc
+[<FFFC7FFE0FFCFFFC7FFE0FFC0FC007E000C00FC007F000C00FE003F001C007E003F001
+8007E007F8018003F007F8030003F007F8030003F80CFC070001F80CFC060001F81CFE06
+0001FC187E0E0000FC187E0C0000FC387F0C00007E303F1800007E303F1800007F601FB8
+00003F601FB000003FE01FF000003FC00FF000001FC00FE000001FC00FE000000F8007C0
+00000F8007C000000F0003C000000700038000000700038000>
+48 28 -1 27 49] 87 dc
+[<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F3F
+801FE1E01F80701F00781F003C1F003C1F003E1F003E1F003E1F003E1F003E1F003E1F00
+3C1F003C1F00781F80701EC1E01C3F00>
+24 29 -1 28 27] 98 dc
+[<FFFFF800FFFFFF000FC01FC00FC007E00FC001F00FC001F80FC000F80FC000FC0FC000
+7C0FC0007C0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC000
+7E0FC0007C0FC0007C0FC0007C0FC000F80FC000F80FC001F00FC007E00FC01FC0FFFFFF
+00FFFFF800>
+32 28 -2 27 37] 68 dc
+[<07F8001FFE00383F80780FC0FC07C0FC07E0FC03E0FC03E07803E00007E00007C00007
+C0000F80001F00001E0000380000700000E0000180600300600600600800E01FFFC03FFF
+C07FFFC0FFFFC0FFFFC0>
+24 27 -2 26 24] 50 dc
+[<FFFFFFFF07E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007
+E007E007E007E007E007E007E007E007E0FFFFFFFF>
+16 28 -1 27 18] 73 dc
+[<FF3F80FFE1E01F80F01F00781F007C1F003C1F003E1F003E1F003E1F003E1F003E1F00
+3E1F003C1F007C1F00781F80F01FC1E01F3F001F00001F00001F00001F00001F00001F00
+00FFE000FFE000>
+24 26 -1 17 27] 112 dc
+cmmi10.300 sf
+[<60F0F060>
+8 4 -4 3 12] 58 dc
+cmr10.300 sf
+[<FF8000FF800F8000F8000F8000F8000BC00178000BC00178000BC001780009E0027800
+09E002780008F004780008F004780008F004780008780878000878087800087808780008
+3C107800083C107800083C107800081E207800081E207800081E207800080F407800080F
+40780008078078000807807800080780780008030078001C03007800FF8307FF80>
+40 28 -2 27 38] 77 dc
+[<FFFFF80F00780F00180F00080F00080F000C0F00040F00040F02040F02000F02000F02
+000F06000FFE000F06000F02000F02000F02000F02000F00000F00000F00000F00000F00
+000F00000F00000F8000FFF800>
+24 28 -2 27 27] 70 dc
+[<FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
+000F000F000F000F000F000F000F000F000F00FFF0>
+16 28 -1 27 15] 73 dc
+[<07E01830201C201C781E780E781E381E001C001C00180030006007E00030001C001C00
+0E000F000F700FF80FF80FF80FF00E401C201C183007E0>
+16 29 -2 27 21] 51 dc
+[<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82000E1182000711C4
+000711C4000720C40003A0E80003A0E80003C0680001C0700001C0700001803000008020
+00>
+32 18 -1 17 30] 119 dc
+[<07E0801C1980300580700380600180E00180E00080E00080E00080F00000F800007C00
+007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001
+C0C00180C00180E00300D00200CC0C0083F800>
+24 30 -2 28 23] 83 dc
+[<7F8FF00F03800F030007020003840001C80001D80000F00000700000780000F800009C
+00010E00020E000607000403801E07C0FF0FF8>
+24 18 0 17 22] 120 dc
+[<000C00000C00001C00003C00003C00005C0000DC00009C00011C00031C00021C00041C
+000C1C00081C00101C00301C00201C00401C00C01C00FFFFC0001C00001C00001C00001C
+00001C00001C00001C0001FFC0>
+24 28 -1 27 21] 52 dc
+[<FFFFC0000F00F0000F003C000F000E000F0007000F0007000F0003800F0003C00F0001
+C00F0001C00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001
+E00F0001C00F0001C00F0003C00F0003800F0007800F0007000F000E000F001C000F0070
+00FFFFC000>
+32 28 -2 27 32] 68 dc
+[<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E00000E0000FFFF
+C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
+C00E01C00E01C00E01C00E01C07F87F8>
+24 29 0 28 23] 12 dc
+[<00F0030C06040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006E007E0
+07E007E007E007600760077006300E300C18180C3003E0>
+16 29 -2 27 21] 54 dc
+[<7FFC70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FF
+F8>
+16 18 -1 17 18] 122 dc
+[<300C3FF83FF03FC020002000200020002000200023E024302818301C200E000E000F00
+0F000F600FF00FF00FF00F800E401E401C2038187007C0>
+16 29 -2 27 21] 53 dc
+[<03E00C301008200C20066006600660067006780C3E083FB01FE007F007F818FC307E60
+1E600FC007C003C003C003C00360026004300C1C1007E0>
+16 29 -2 27 21] 56 dc
+[<000600000006000000060000000F0000000F0000000F00000017800000178000001780
+000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F0000180F8
+000100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C001F
+001E001F00FF80FFF0>
+32 29 -1 28 31] 65 dc
+[<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F00
+20000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
+00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F80
+0003FFFC00>
+32 28 -1 27 30] 84 dc
+[<4000007FFF807FFF007FFF004002008004008004008008000010000010000020000060
+0000400000C00000C00001C0000180000180000380000380000380000380000780000780
+00078000078000078000078000030000>
+24 29 -2 27 21] 55 dc
+[<FFF8000F80000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
+000F00000F00000F00000F00000F00000F00000F00080F00080F00080F00180F00180F00
+100F00300F00700F01F0FFFFF0>
+24 28 -2 27 26] 76 dc
+[<FFFFFC0F003C0F000C0F00040F00040F00060F00020F00020F02020F02000F02000F02
+000F06000FFE000F06000F02000F02000F02000F02010F00010F00020F00020F00020F00
+060F00060F000C0F003CFFFFFC>
+24 28 -2 27 28] 69 dc
+[<03C00C301818300C300C700E60066006E007E007E007E007E007E007E007E007E007E0
+07E007E007E00760066006700E300C300C18180C3007E0>
+16 29 -2 27 21] 48 dc
+[<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00
+780F01F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F000F0F000F0F000F0F00
+1E0F001E0F003C0F0078FFFFE0>
+24 28 -2 27 29] 66 dc
+[<FFF3FFC00F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
+000F003C000F003C000F003C000F003C000FFFFC000F003C000F003C000F003C000F003C
+000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
+00FFF3FFC0>
+32 28 -2 27 31] 72 dc
+[<60F0F8680808081010204080>
+8 12 -4 28 12] 39 dc
+[<FFF07FC00F000E000F0004000F0004000F0004000F0004000F0004000F0004000F0004
+000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004
+000F0004000F0004000F0004000F0004000700080007800800038010000180100000C020
+000070C000001F0000>
+32 29 -2 27 31] 85 dc
+4 @bop1
+cmbx10.746 sf
+177 397(Con)s
+-3(ten)h
+-3(ts)h
+cmbx10.300 sf
+177 679(Preface)s
+1592(5)h
+177 794(Ac)s
+-1(kno)h
+-1(wledgemen)h
+-2(ts)h
+1349(7)h
+177 909(Presen)s
+-1(tati)h
+-1(on)h
+13(Notes)h
+1347(9)h
+177 1024(1)s
+38(F)h
+-4(unnelW)h
+-4(eb)h
+14(Design)h
+1268(11)h
+177 2466(2)s
+38(F)h
+-4(unnelW)h
+-4(eb)h
+14(Implemen)h
+-2(tati)h
+-1(on)h
+1078(27)h
+cmmi10.300 sf
+833 1098(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+575 1172(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+898 1245(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1124 1319(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1027 1393(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1318 1467(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 1540(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1092 1614(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+930 1688(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 1761(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 1835(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+866 1909(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+866 1982(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1092 2056(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1382 2130(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1608 2204(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 2277(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+543 2351(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+575 2540(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1092 2614(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1188 2687(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+607 2761(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+640 2835(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+cmr10.300 sf
+239 1098(1.1)s
+42(Motiv)h
+-2(ation)h
+12(for)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+1092(11)h
+239 1172(1.2)s
+42(Inden)h
+-1(tation)h
+1362(12)h
+239 1245(1.3)s
+42(Review)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(Syn)h
+-1(tax)h
+1037(14)h
+335 1319(1.3.1)s
+46(Review)h
+13(of)h
+14(Macro)h
+14(De\014nition)h
+13(Syn)h
+-1(tax)h
+800(14)h
+335 1393(1.3.2)s
+46(Review)h
+13(of)h
+14(Macro)h
+14(Call)h
+12(Syn)h
+-1(tax)h
+906(16)h
+335 1467(1.3.3)s
+46(Review)h
+13(of)h
+14(P)h
+-1(arameterized)h
+14(Macro)h
+14(Call)h
+13(Syn)h
+-1(tax)h
+631(16)h
+239 1540(1.4)s
+42(Do)h
+1(cumen)h
+-1(t)h
+13(Structuring)h
+1165(16)h
+239 1614(1.5)s
+42(Discussion)h
+14(of)h
+13(Some)h
+13(Miscellaneous)h
+14(Issues)h
+845(18)h
+239 1688(1.6)s
+42(Automated)h
+13(Regression)h
+14(T)h
+-3(esting)h
+1015(18)h
+239 1761(1.7)s
+42(Comm)h
+-1(and)h
+12(Line)h
+13(In)h
+-1(terface)h
+1122(18)h
+239 1835(1.8)s
+42(File)h
+13(Name)h
+13(Managemen)h
+-1(t)h
+1137(19)h
+335 1909(1.8.1)s
+46(Filename)h
+12(Extensions)h
+1065(20)h
+335 1982(1.8.2)s
+46(Filename)h
+12(Inheritance)h
+1057(20)h
+335 2056(1.8.3)s
+46(P)h
+-1(ortable)h
+14(Structure)h
+15(of)h
+14(File)h
+13(Names)h
+835(21)h
+239 2130(1.9)s
+42(Sp)h
+1(ecifying)h
+13(Constrain)h
+-1(ts)h
+15(on)h
+13(the)h
+15(Num)h
+-1(b)h
+1(er)h
+13(of)h
+13(Instan)h
+-1(tiations)h
+563(22)h
+239 2204(1.10)s
+21(The)h
+14(Relationship)h
+13(Bet)h
+-1(w)h
+-1(een)h
+15(Do)h
+1(cumen)h
+-1(t)h
+13(Structure)h
+16(and)h
+14(Macro)h
+14(Structure)h
+318(23)h
+239 2277(1.11)s
+21(Diagnostic)h
+13(Messages)h
+1203(25)h
+239 2351(1.12)s
+21(Summ)h
+-1(ary)h
+1396(25)h
+239 2540(2.1)s
+42(In)h
+-1(tro)h
+1(duction)h
+1345(27)h
+239 2614(2.2)s
+42(History)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(Implemen)h
+-1(tatio)h
+-1(ns)h
+856(27)h
+239 2687(2.3)s
+42(Wh)h
+-1(y)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(W)h
+-3(asn't)h
+12(Used)h
+15(to)h
+14(W)h
+-3(rite)h
+14(Itself)h
+754(28)h
+239 2761(2.4)s
+42(Co)h
+1(ding)h
+13(St)h
+-1(yle)h
+1338(28)h
+239 2835(2.5)s
+42(Use)h
+15(of)h
+13(Memory)h
+1294(29)h
+1053 2940(3)s
+4 @eop
+5 @bop0
+cmbx10.300 sf
+[<03F8001FFE003C1F003C0F807C07C07E07C07C07C03807C0000F80000F80001E00003C
+0003F800001E00000F800007C00007C00007E03007E07807E0FC07E0FC07E0FC07C0780F
+80781F001FFE0007F800>
+24 27 -2 26 24] 51 dc
+[<FFC00003FFFFE00007FF0FE00007F00DF0000DF00DF0000DF00DF0000DF00CF80019F0
+0CF80019F00C7C0031F00C7C0031F00C3E0061F00C3E0061F00C1F00C1F00C1F00C1F00C
+1F00C1F00C0F8181F00C0F8181F00C07C301F00C07C301F00C03E601F00C03E601F00C01
+FC01F00C01FC01F00C01FC01F00C00F801F00C00F801F0FFC0701FFFFFC0701FFF>
+40 28 -2 27 45] 77 dc
+[<003FC00001F0300003C0380007C07C000F807C000F807C000F8038000F8000000F8000
+000F8000000F800000FFFFFC00FFFFFC000F807C000F807C000F807C000F807C000F807C
+000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C
+007FE1FF807FE1FF80>
+32 29 0 28 27] 12 dc
+[<000180000380000780000F80001F80003F80006F8000CF80008F80018F80030F80060F
+800C0F80180F80300F80600F80C00F80FFFFF8FFFFF8000F80000F80000F80000F80000F
+80000F8001FFF801FFF8>
+24 27 -1 26 24] 52 dc
+[<000FF008007FFE3801FC07F807E001F80F8000781F0000783F0000383E0000387E0000
+187C000018FC000000FC000000FC000000FC000000FC000000FC000000FC007FFFFC007F
+FF7C0001F87E0001F83E0001F83F0001F81F0001F80F8001F807E001F801FC07F8007FFE
+78000FF818>
+32 28 -3 27 38] 71 dc
+[<FFFC03FFFFFC03FF0FC000300FC000300FC000300FC000300FC000300FC000300FC000
+300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000
+300FC000300FC000300FC0003007C0003007C0006003E000E001F001C000FC0780007FFE
+00000FF800>
+32 28 -2 27 37] 85 dc
+[<FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0
+000FC0000FC0000FC0000FC0000FC0000FC0030FC0030FC0030FC0070FC0070FC0060FC0
+0E0FC01E0FC07EFFFFFEFFFFFE>
+24 28 -2 27 29] 76 dc
+[<FFFC01FF80FFFC01FF800FC000180007E000300007E000300007F000700003F0006000
+03F800E00001F800C00001FC00C00000FC01800000FC018000007E030000007E03000000
+7F070000003F060000003F8E0000001F8C0000001FCC0000000FD80000000FD800000007
+F000000007F000000007F000000003E000000003E000000001C000000001C00000>
+40 28 -1 27 36] 86 dc
+[<FFFFF800FFFFFF000FC01F800FC00FC00FC007C00FC007E00FC007E00FC007E00FC007
+E00FC007E00FC007C00FC00F800FC03F000FFFFE000FC00F800FC007C00FC007E00FC003
+E00FC003F00FC003F00FC003F00FC003F00FC003F00FC007E00FC007E00FC01FC0FFFFFF
+00FFFFFC00>
+32 28 -2 27 34] 66 dc
+[<FFFFF00000FFFFFE00000FC03F00000FC00F80000FC007C0000FC007E0000FC007E000
+0FC007E0000FC007E0000FC007E0000FC007C0000FC00F80000FC03E00000FFFF000000F
+C07C00000FC03E00000FC03F00000FC01F80000FC01F80000FC01F80000FC01F80000FC0
+1F80000FC01F80000FC01F81800FC01F81800FC00FC180FFFC07C300FFFC01FE00>
+40 28 -2 27 36] 82 dc
+[<FFC7FCFFC7FC1F81800F838007C70003EE0001FC0001F80000F800007C0000FE0001DF
+00039F00070F800607C00C03E0FF07FCFF07FC>
+24 18 -1 17 25] 120 dc
+cmr10.300 sf
+[<FFE00FF01F0003C00F0001800F0001000F800300078002000780020003C0040003C004
+0003C0040001E0080001E0080001F0080000F0100000F0100000F8300000782000007820
+00003C4000003C4000003C4000001E8000001E8000001F8000000F0000000F0000000600
+000006000000060000>
+32 29 -1 27 31] 86 dc
+[<003F800000E0E0000380380007001C000E000E001C0007003C00078038000380780003
+C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001
+E0F00001E0700001C0780003C0780003C0380003803C0007801C0007000E000E0007001C
+000380380000E0E000003F8000>
+32 30 -2 28 32] 79 dc
+[<003F07E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E00000
+0E00E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E
+00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00
+E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FC
+FF80>
+40 29 0 28 35] 14 dc
+[<001F808000E0618001801980070007800E0003801C0003801C00018038000180780000
+807800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F000FF
+F0F0000F80700007807800078078000780380007801C0007801C0007800E00078007000B
+800180118000E06080001F8000>
+32 30 -2 28 33] 71 dc
+[<0FE03038401CE00EF00EF00EF00E000C001C0030006000C00080018001000100010001
+0001000100000000000000000000000300078007800300>
+16 29 -2 28 20] 63 dc
+[<00030003000700060006000E000C001C0018001800380030003000700060006000E000
+C000C001C001800380030003000700060006000E000C000C001C00180018003800300070
+0060006000E000C000C000>
+16 41 -2 30 21] 47 dc
+[<FFE0FFE0>
+16 2 0 9 14] 45 dc
+5 @bop1
+cmbx10.300 sf
+177 382(3)s
+38(F)h
+-4(unnelW)h
+-4(eb)h
+14(Mo)h
+1(di\014cation)h
+1145(35)h
+177 1171(4)s
+38(F)h
+-4(unnelW)h
+-4(eb)h
+14(F)h
+-4(uture)h
+1270(43)h
+177 2482(A)s
+26(GNU)h
+16(General)h
+14(Publi)h
+-1(c)h
+14(License)h
+14(V)h
+-4(ersion)h
+14(2)h
+841(49)h
+177 2599(B)s
+28(References)h
+1436(57)h
+177 2715(Index)s
+1605(57)h
+cmr10.300 sf
+239 42(2.6)s
+42(The)h
+14(Heap)h
+1394(29)h
+239 116(2.7)s
+42(The)h
+14(Stac)h
+-1(k)h
+1388(30)h
+239 191(2.8)s
+42(Static)h
+14(V)h
+-3(ariables)h
+1285(30)h
+239 266(2.9)s
+42(Implem)h
+-1(en)h
+-1(ting)h
+12(T)h
+-3(ext)h
+14(Inden)h
+-1(tation)h
+1002(30)h
+239 457(3.1)s
+42(In)h
+-1(tro)h
+1(duction)h
+1345(35)h
+239 531(3.2)s
+42(The)h
+14(Danger)h
+14(of)h
+13(Mo)h
+1(difying)h
+13(Languages)h
+906(35)h
+239 606(3.3)s
+42(Authorit)h
+-1(y)h
+14(vs)h
+14(User)h
+15(Securit)h
+-1(y)h
+1084(36)h
+239 681(3.4)s
+42(What)h
+13(I)h
+14(W)h
+-3(an)h
+-1(t)h
+13(to)h
+14(Protect)h
+1131(37)h
+239 756(3.5)s
+42(Mo)h
+1(difying)h
+12(the)h
+15(Man)h
+-1(uals)h
+1149(38)h
+239 830(3.6)s
+42(Ho)h
+-1(w)h
+13(Cop)h
+-1(yrigh)h
+-1(t)h
+13(La)h
+-1(w)h
+14(W)h
+-3(orks)h
+1078(38)h
+239 905(3.7)s
+42(Managemen)h
+-1(t)h
+13(of)h
+13(the)h
+14(O\016cial)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+860(39)h
+239 980(3.8)s
+42(A)h
+14(GNU)h
+14(V)h
+-3(ersion?)h
+1264(41)h
+239 1054(3.9)s
+42(Summ)h
+-1(ary)h
+1396(41)h
+239 1245(4.1)s
+42(Do)h
+1(cumen)h
+-1(tation)h
+1292(43)h
+239 1320(4.2)s
+42(Comm)h
+-1(and)h
+12(Line)h
+13(In)h
+-1(terface)h
+1122(43)h
+239 1395(4.3)s
+42(Shell)h
+13(In)h
+-1(terpreter)h
+1277(43)h
+239 1469(4.4)s
+42(Language)h
+13(Design)h
+1263(44)h
+239 1544(4.5)s
+42(Scanner/Mapp)h
+1(er)h
+1269(44)h
+239 1619(4.6)s
+42(P)h
+-1(arser)h
+1458(45)h
+239 1694(4.7)s
+42(Analyser)h
+1413(45)h
+239 1768(4.8)s
+42(T)h
+-3(angle)h
+1450(45)h
+239 1843(4.9)s
+42(W)h
+-3(ea)h
+-1(v)h
+-1(e)h
+1455(45)h
+239 1918(4.10)s
+21(Lister)h
+1468(46)h
+239 1993(4.11)s
+21(Diagnostics)h
+1364(47)h
+239 2067(4.12)s
+21(Sp)h
+1(eed)h
+1466(47)h
+239 2142(4.13)s
+21(Correctness)h
+1364(47)h
+239 2217(4.14)s
+21(T)h
+-3(est)h
+14(Suite)h
+1389(47)h
+239 2291(4.15)s
+21(Mac)h
+-1(hine-Sp)h
+1(eci\014c)h
+15(Changes)h
+1103(48)h
+239 2366(4.16)s
+21(Summ)h
+-1(ary)h
+1396(48)h
+1053 2940(4)s
+cmmi10.300 sf
+543 42(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+543 116(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+640 191(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+930 266(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+575 457(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1027 531(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+866 606(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 681(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 756(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+866 830(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1059 905(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+672 980(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+543 1054(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+640 1245(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 1320(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+672 1395(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+672 1469(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+672 1544(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+478 1619(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+510 1694(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+478 1768(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+478 1843(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+478 1918(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+575 1993(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+478 2067(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+575 2142(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+543 2217(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+833 2291(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+543 2366(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+5 @eop
+6 @bop0
+cmbx10.746 sf
+[<FFFFFFFFFFFF800000FFFFFFFFFFFFFC0000FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFC0
+00FFFFFFFFFFFFFFF000001FFF80000FFFFC00001FFF800001FFFE00001FFF8000007FFF
+00001FFF8000003FFF80001FFF8000001FFFC0001FFF8000000FFFC0001FFF8000000FFF
+E0001FFF8000000FFFE0001FFF80000007FFF0001FFF80000007FFF0001FFF80000007FF
+F0001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FF
+F8001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FF
+F8001FFF80000007FFF0001FFF80000007FFF0001FFF80000007FFF0001FFF8000000FFF
+E0001FFF8000000FFFE0001FFF8000000FFFC0001FFF8000001FFF80001FFF8000003FFF
+80001FFF8000007FFF00001FFF800001FFFE00001FFF80000FFFF800001FFFFFFFFFFFF0
+00001FFFFFFFFFFFC000001FFFFFFFFFFE0000001FFFFFFFFFF00000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000FFFFFFFFF800000000FFFFFFFFF8000000
+00FFFFFFFFF800000000FFFFFFFFF800000000FFFFFFFFF800000000>
+72 71 -4 70 81] 80 dc
+[<00FF803F8000FFFF80FFF000FFFF83FFFC00FFFF87FFFE00FFFF8FC3FF00FFFF8F07FF
+0003FF9E0FFF8001FFBC0FFF8001FFB80FFF8001FFF80FFF8001FFF00FFF8001FFF007FF
+0001FFF007FF0001FFE003FE0001FFE000F80001FFE000000001FFE000000001FFC00000
+0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000
+0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000
+0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000
+0001FFC000000001FFC000000001FFC000000001FFC000000001FFC0000000FFFFFFE000
+00FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000>
+48 46 -4 45 49] 114 dc
+[<000000FFC000000007FFF80000003FFFFC000000FFFFFF000001FFC1FF000007FF03FF
+80000FFC03FF80000FF807FFC0001FF807FFC0003FF007FFC0003FF007FFC0003FE003FF
+80007FE003FF80007FE001FF00007FE000FE00007FE0003800007FE0000000007FE00000
+00007FE0000000007FE0000000007FE0000000007FE0000000007FE0000000007FE00000
+00007FE0000000007FE0000000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000FFFFFFFE00
+00FFFFFFFE0000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000
+00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000
+00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000
+00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000
+00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000
+00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000
+00007FF00000003FFFFFF800003FFFFFF800003FFFFFF800003FFFFFF800003FFFFFF800
+00>
+48 72 -3 71 36] 102 dc
+[<0007FFFC000000007FFFFFC0000001FFFFFFF8000003FFFFFFFE000007FE001FFF0000
+07FF0003FFC0000FFF8001FFE0000FFF8000FFF0000FFF80007FF0000FFF80007FF8000F
+FF80007FF80007FF00003FFC0007FF00003FFC0003FE00003FFC0000F800003FFC000000
+00003FFC00000000003FFC00000000003FFC00000000003FFC00000007FFFFFC000000FF
+FFFFFC000007FFFFFFFC00003FFFE03FFC0000FFFE003FFC0003FFF0003FFC0007FFC000
+3FFC000FFF00003FFC001FFE00003FFC003FFC00003FFC007FF800003FFC007FF800003F
+FC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC
+00FFF000007FFC007FF80000FFFC007FF80001EFFC003FFC0003EFFC003FFF0007CFFF00
+0FFFC03F8FFFF807FFFFFF07FFFC01FFFFFC03FFFC007FFFF001FFFC0003FF80007FF8>
+56 46 -3 45 58] 97 dc
+[<00001FFFC0000000FFFFF8000007FFFFFE00001FFFFFFF80007FFC00FFC000FFE001FF
+C001FFC003FFE003FF8003FFE007FF0003FFE00FFE0003FFE00FFE0003FFE01FFC0001FF
+C01FFC0001FFC03FFC0000FF803FFC00003E007FF8000000007FF8000000007FF8000000
+00FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8000000
+00FFF800000000FFF800000000FFF800000000FFF8000000007FF8000000007FF8000000
+007FFC000000003FFC000000003FFC000000001FFC000000F81FFE000000F80FFE000000
+F80FFF000001F007FF800003F003FFC00007E001FFE0000FC000FFF0001F80007FFE00FF
+00001FFFFFFE000007FFFFF8000000FFFFE00000001FFE0000>
+48 46 -4 45 53] 99 dc
+cmbx10.300 sf
+[<78FCFCFCFC78>
+8 6 -3 5 13] 46 dc
+[<78FCFCFEFE7A0202040408083040>
+8 14 -3 5 13] 44 dc
+[<FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C18003E30003E30001F70001F6
+0000FE0000FC0000FC00007800007800003000003000007000706000F86000F8C000F980
+007300003E0000>
+24 26 -1 17 25] 121 dc
+cmr10.300 sf
+[<60F0F0F0F0F0F0F060606060606060606060606060000000000060F0F060>
+8 30 -4 29 12] 33 dc
+[<60F0F0701010101020204080>
+8 12 -4 3 12] 44 dc
+[<60F0F0600000000000000000000060F0F060>
+8 18 -4 17 12] 58 dc
+[<004000800100020006000C000C0018001800300030007000600060006000E000E000E0
+00E000E000E000E000E000E000E000E000E000600060006000700030003000180018000C
+000C0006000200010000800040>
+16 42 -3 30 16] 40 dc
+[<800040002000100018000C000C000600060003000300038001800180018001C001C001
+C001C001C001C001C001C001C001C001C001C0018001800180038003000300060006000C
+000C0018001000200040008000>
+16 42 -2 30 16] 41 dc
+6 @bop1
+cmbx10.746 sf
+177 399(Preface)s
+cmbx10.300 sf
+177 1328(Ross)s
+15(N.)h
+17(Willi)h
+-1(ams)h
+177 1378(Adelaide,)s
+14(Australi)h
+-1(a)h
+177 1428(Ma)s
+-1(y)h
+16(1992)h
+cmr10.300 sf
+177 639(This)s
+15(man)h
+-1(ual)h
+12(is)h
+15(for)h
+14(hac)h
+-1(k)h
+-1(ers!)h
+22(An)h
+-1(y)h
+-1(one)h
+15(who)h
+15(w)h
+-1(an)h
+-1(ts)h
+14(to)h
+15(bash,)h
+15(diddle,)h
+14(frob,)h
+14(grind,)h
+15(mangl)h
+-1(e,)h
+13(patc)h
+-1(h,)h
+15(p)h
+1(ok)h
+-1(e,)h
+177 689(toggle,)s
+13(t)h
+-1(widdle,)h
+13(zap,)h
+14(or)h
+13(generally)h
+14(hac)h
+-1(k)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(should)h
+14(at)h
+14(least)h
+14(tak)h
+-1(e)h
+14(a)h
+13(lo)h
+1(ok)h
+13(at)h
+14(this)h
+14(man)h
+-1(ual)h
+-1(.)h
+177 764(This)s
+14(do)h
+1(cumen)h
+-1(t)h
+13(has)h
+14(b)h
+1(een)h
+15(created)h
+16(to)h
+14(serv)h
+-1(e)h
+15(t)h
+-1(w)h
+-1(o)h
+13(purp)h
+1(oses:)h
+228 880(1.)s
+20(T)h
+-3(o)h
+12(act)h
+13(as)h
+12(a)h
+13(rep)h
+1(ository)h
+13(for)h
+12(sp)h
+1(eci\014c)h
+15(design)h
+12(and)h
+13(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+11(informati)h
+-1(on)h
+11(not)h
+12(appropriate)h
+13(to)h
+281 930(b)s
+1(e)h
+14(included)h
+14(in)h
+14(program)h
+12(commen)h
+-1(ts.)h
+228 1013(2.)s
+20(T)h
+-3(o)h
+13(guide)h
+14(those)h
+14(in)h
+-1(terested)h
+16(in)h
+13(mo)h
+1(difying)h
+11(the)h
+15(program.)h
+177 1129(As)s
+13(a)h
+13(result,)h
+13(this)h
+13(do)h
+1(cumen)h
+-1(t)h
+12(has)h
+13(gro)h
+-1(wn)h
+13(in)h
+12(\014ts)h
+14(and)h
+12(starts.)h
+19(This)h
+13(man)h
+-1(ual)h
+10(is)h
+13(not)h
+12(a)h
+13(particularly)h
+12(p)h
+1(olished)h
+177 1179(or)s
+13(w)h
+-1(ell-balanced)h
+11(do)h
+1(cumen)h
+-1(t)h
+12(but)h
+13(it)h
+12(should)h
+13(b)h
+1(e)h
+13(of)h
+12(assistance)h
+13(to)h
+13(those)h
+13(\(including)h
+12(m)h
+-1(yself)h
+3(\))h
+11(in)h
+-1(v)h
+-1(olv)h
+-1(ed)h
+11(with)h
+177 1229(mo)s
+1(difyi)h
+-1(ng)h
+12(F)h
+-3(unnelW)h
+-3(eb.)h
+1053 2940(5)s
+6 @eop
+7 @bop0
+7 @bop1
+cmr10.300 sf
+1053 2940(6)s
+7 @eop
+8 @bop0
+/cmtt10.300 127 @newfont
+cmbx10.746 sf
+[<0000000003E000000000000000000007F000000000000000000007F000000000000000
+00000FF80000000000000000000FF80000000000000000000FF80000000000000000001F
+FC0000000000000000001FFC0000000000000000003FFE0000000000000000003FFE0000
+000000000000007FFF0000000000000000007FFF0000000000000000007FFF0000000000
+00000000FFFF800000000000000000FFFF800000000000000001FFFFC000000000000000
+01FFFFC00000000000000001FFFFC00000000000000003FFFFE00000000000000003EFFF
+E00000000000000007EFFFF00000000000000007CFFFF00000000000000007C7FFF00000
+00000000000FC7FFF8000000000000000F83FFF8000000000000001F83FFFC0000000000
+00001F03FFFC000000000000001F01FFFC000000000000003F01FFFE000000000000003E
+00FFFE000000000000007E00FFFF000000000000007C007FFF00000000000000FC007FFF
+80000000000000F8007FFF80000000000000F8003FFF80000000000001F8003FFFC00000
+00000001F0001FFFC0000000000003F0001FFFE0000000000003E0001FFFE00000000000
+03E0000FFFE0000000000007E0000FFFF0000000000007C00007FFF000000000000FC000
+07FFF800000000000F800007FFF800000000000F800003FFF800000000001F800003FFFC
+00000000001F000001FFFC00000000003FFFFFFFFFFE00000000003FFFFFFFFFFE000000
+00007FFFFFFFFFFF00000000007FFFFFFFFFFF00000000007FFFFFFFFFFF0000000000FC
+0000007FFF8000000000F80000003FFF8000000001F80000003FFFC000000001F0000000
+3FFFC000000001F00000001FFFC000000003F00000001FFFE000000003E00000000FFFE0
+00000007E00000000FFFF000000007C00000000FFFF000000007C000000007FFF0000000
+0FC000000007FFF80000000F8000000003FFF80000001F8000000003FFFC0000001F0000
+000003FFFC0000007FC000000001FFFC0000FFFFFFC00007FFFFFFFF80FFFFFFC00007FF
+FFFFFF80FFFFFFC00007FFFFFFFF80FFFFFFC00007FFFFFFFF80FFFFFFC00007FFFFFFFF
+80>
+88 72 -4 71 90] 65 dc
+[<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000
+FFFFC00000000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001
+FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF
+C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0
+0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000
+00000001FFC0007FFFF801FFC0007FFFF801FFC0007FFFF801FFC0007FFFF801FFC0007F
+FFF801FFC0000FFE0001FFC00007F00001FFC0000FE00001FFC0003FC00001FFC0007F80
+0001FFC000FE000001FFC001FC000001FFC007F8000001FFC00FF0000001FFC01FC00000
+01FFC03F80000001FFC0FF00000001FFC1FE00000001FFC3FF00000001FFCFFF80000001
+FFDFFFC0000001FFFFFFC0000001FFFFFFE0000001FFFFFFF0000001FFFCFFF8000001FF
+F87FFC000001FFE03FFC000001FFC01FFE000001FFC01FFF000001FFC00FFF800001FFC0
+07FFC00001FFC003FFC00001FFC001FFE00001FFC001FFF00001FFC000FFF80001FFC000
+7FFC0001FFC0003FFC0001FFC0001FFE0001FFC0000FFF0001FFC0000FFF8001FFC0000F
+FFC0FFFFFF807FFFFFFFFFFF807FFFFFFFFFFF807FFFFFFFFFFF807FFFFFFFFFFF807FFF
+FF>
+56 72 -4 71 63] 107 dc
+[<FFFFFF07FFFFE007FFFEFFFFFF07FFFFE007FFFEFFFFFF07FFFFE007FFFEFFFFFF07FF
+FFE007FFFEFFFFFF07FFFFE007FFFE03FFC0001FFC00003FC003FFE0000FFC00001F8001
+FFE0000FFC00001F0001FFE0000FFE00001F0001FFF00007FE00003F0000FFF0000FFF00
+003E0000FFF8000FFF00007E00007FF8000FFF00007C00007FF8001FFF80007C00003FFC
+001FFF8000F800003FFC003FFFC000F800003FFE003EFFC001F800001FFE003EFFC001F0
+00001FFE007EFFE003F000000FFF007C7FE003E000000FFF00FC7FF003E000000FFF80F8
+3FF007E0000007FF80F83FF007C0000007FF81F83FF80FC0000003FFC1F01FF80F800000
+03FFC3F01FFC0F80000003FFE3E00FFC1F80000001FFE3E00FFC1F00000001FFE7E00FFE
+3F00000000FFF7C007FE3E00000000FFFFC007FF3E00000000FFFF8003FF7E000000007F
+FF8003FF7C000000007FFF8003FFFC000000003FFF0001FFF8000000003FFF0001FFF800
+0000003FFE0000FFF8000000001FFE0000FFF0000000001FFE0000FFF0000000000FFC00
+007FE0000000000FFC00007FE0000000000FF800003FE00000000007F800003FC0000000
+0007F800003FC00000000003F000001F800000000001E000000F000000>
+80 46 -3 45 86] 119 dc
+[<007FC000FFFFC000FFFFC000FFFFC000FFFFC000FFFFC00003FFC00001FFC00001FFC0
+0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
+0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
+0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
+0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
+0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
+0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
+0001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF
+80>
+32 72 -4 71 32] 108 dc
+[<00000000007FC00000000000FFFFC00000000000FFFFC00000000000FFFFC000000000
+00FFFFC00000000000FFFFC0000000000003FFC0000000000001FFC0000000000001FFC0
+000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000000000
+0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0
+000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000000000
+0001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000000FFC01FFC0
+000000FFFF81FFC0000007FFFFE1FFC000001FFFFFF9FFC000007FFC03FFFFC00000FFF0
+007FFFC00001FFC0001FFFC00003FF80000FFFC00007FF000007FFC0000FFE000003FFC0
+000FFE000003FFC0001FFC000003FFC0001FFC000003FFC0003FFC000003FFC0003FFC00
+0003FFC0007FF8000003FFC0007FF8000003FFC0007FF8000003FFC000FFF8000003FFC0
+00FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF800
+0003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC0
+007FF8000003FFC0007FF8000003FFC0007FF8000003FFC0003FF8000003FFC0003FFC00
+0003FFC0003FFC000003FFC0001FFC000003FFC0001FFC000003FFC0000FFE000007FFC0
+0007FF00000FFFC00003FF00001FFFC00001FFC0003FFFC00000FFE000FFFFE000007FF8
+07FBFFFF80001FFFFFF3FFFF800007FFFFC3FFFF800001FFFF03FFFF8000001FF803FFFF
+80>
+64 72 -4 71 66] 100 dc
+[<00000000001F8000007FF000FFE00007FFFF03FFF0001FFFFFC7FFF0007FFFFFFFC7F8
+00FFE03FFE0FF801FF800FFC0FF803FF0007FE0FF807FE0003FF07F007FE0003FF07F00F
+FC0001FF81C00FFC0001FF80000FFC0001FF80001FFC0001FFC0001FFC0001FFC0001FFC
+0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0000FFC0001FF80000FFC00
+01FF80000FFC0001FF800007FE0003FF000007FE0003FF000003FF0007FE000001FF800F
+FC000000FFE03FF8000001FFFFFFF0000001DFFFFFC0000003C7FFFF00000003C07FF000
+000007C0000000000007C0000000000007C0000000000007C0000000000007E000000000
+0007F0000000000007F8000000000007FFFFFFF0000007FFFFFFFF000003FFFFFFFFE000
+03FFFFFFFFF80001FFFFFFFFFE0001FFFFFFFFFF0000FFFFFFFFFF80007FFFFFFFFF8003
+FFFFFFFFFFC00FFFFFFFFFFFC01FF800001FFFE03FE0000001FFE07FC00000007FF07FC0
+0000003FF0FF800000001FF0FF800000001FF0FF800000001FF0FF800000001FF0FF8000
+00001FF07FC00000003FE07FC00000003FE03FE00000007FC03FF0000000FFC01FFC0000
+03FF800FFF00000FFF0003FFF000FFFC0000FFFFFFFFF000003FFFFFFFC0000007FFFFFE
+000000003FFFC00000>
+56 68 -3 46 59] 103 dc
+[<007FC001FFC00000FFE00000FFFFC00FFFF80007FFFC0000FFFFC03FFFFE001FFFFF00
+00FFFFC0FFFFFF007FFFFF8000FFFFC1FC07FF80FE03FFC000FFFFC3E003FFC1F001FFE0
+0003FFC7C001FFC3E000FFE00001FFCF0001FFE78000FFF00001FFDE0000FFEF00007FF0
+0001FFDC0000FFEE00007FF00001FFFC0000FFFE00007FF80001FFF80000FFFC00007FF8
+0001FFF00000FFF800007FF80001FFF00000FFF800007FF80001FFF00000FFF800007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF800FFFFFFC07FFFFFE03FFFFF
+F0FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFF
+F0FFFFFFC07FFFFFE03FFFFFF0>
+96 46 -4 45 101] 109 dc
+cmbx10.300 sf
+[<FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C18003E30003E30001F60001F6
+0001FE0000FC0000FC00007800007800003000>
+24 18 -1 17 25] 118 dc
+[<FFFC3FFFFFFC3FFF0FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003
+F00FC003F00FC003F00FC003F00FFFFFF00FFFFFF00FC003F00FC003F00FC003F00FC003
+F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F0FFFC3F
+FFFFFC3FFF>
+32 28 -2 27 37] 72 dc
+[<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE0007FFE
+003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0E000
+E0F001C0FC03C0EFFF0083FC00>
+24 28 -3 27 27] 83 dc
+[<07FFF007FFF0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F
+80001F80001F80001F80001F80001F80001F80001F80001F80301F80781F80FC1F80FC1F
+80FC1F00783E00387C000FF000>
+24 28 -1 27 25] 74 dc
+cmtt10.300 sf
+[<003F00007F00003F0000070000070000070000070003C7000FF7003FFF003C1F00780F
+00F00700F00700E00700E00700E00700E00700F00700F00F00781F007C3F003FFFE01FF7
+F007C7E0>
+24 25 -1 24 22] 100 dc
+[<1FE0007FF8007FFC00783C00301E00000E00000E0003FE001FFE007E0E00F00E00E00E
+00E00E00F01E00F83E007FFFE03FE7E00F83E0>
+24 18 -2 17 22] 97 dc
+[<7F1FC0FF1FE07F1FC01C07001E0F000E0E000E0E000E0E00071C00071C00071C00071C
+0003B80003B80003B80001F00001F00000E000>
+24 18 -1 17 22] 118 dc
+[<03E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03
+F0>
+16 18 -3 17 22] 101 dc
+[<00F80003FE000FFF001F0F803E3F803C7F8078FFC071E7C0F1C3C0E3C3C0E381C0E381
+C0E381C0E381C0E381C0E3C3C0F1C38071E78078FF003C7E003E3C001F03C00FFFC003FF
+0000FC00>
+24 25 -2 24 22] 64 dc
+[<03F80FFE1FFE3C1E780C7000F000E000E000E000E000F000700778073E0F1FFE0FFC03
+F0>
+16 18 -3 17 22] 99 dc
+[<0FEC3FFC7FFCF03CE01CE01CF0007F801FF007FC003EE00EE00EF00EF81EFFFCFFF8C7
+E0>
+16 18 -3 17 22] 115 dc
+[<70F8F8F870>
+8 5 -8 4 22] 46 dc
+[<FFC000FFC000FFC00001C00001C00001C00001C00001C00001C00001C00001C00001C0
+0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF
+80FFFF80>
+24 25 -2 24 22] 108 dc
+[<018003C003C0018000000000000000007FC07FC07FC001C001C001C001C001C001C001
+C001C001C001C001C001C07FFFFFFF7FFF>
+16 26 -3 25 22] 105 dc
+[<7E1F80FE3F807E1F800E03800E03800E03800E03800E03800E03800E03800E03800E03
+800E03800E07800F0F800FFFF007FFF803E3F0>
+24 18 0 17 22] 117 dc
+[<F9C380FFEFC0FFFFE03E7CE03C78E03870E03870E03870E03870E03870E03870E03870
+E03870E03870E03870E0FE7CF8FE7CF8FE3C78>
+24 18 0 17 22] 109 dc
+[<03E0000FF8001FFC003C1E00780F00700700E00380E00380E00380E00380E00380F007
+80700700780F003C1E001FFC000FF80003E000>
+24 18 -2 17 22] 111 dc
+[<7E3C00FEFF007FFF800F87800F03800F03800E03800E03800E03800E03800E03800E03
+800E03800E03800E03807FC7F0FFE7F87FC7F0>
+24 18 0 17 22] 110 dc
+[<0300000700000700000700000700007FFF00FFFF00FFFF000700000700000700000700
+0007000007000007000007010007038007038007078007878003FF0003FE0000F800>
+24 23 -1 22 22] 116 dc
+[<FF0FC0FF3FE0FF7FE007F04007E00007C0000780000780000700000700000700000700
+00070000070000070000FFFC00FFFC00FFFC00>
+24 18 -1 17 22] 114 dc
+[<003000780078003000000000000000001FF81FF81FF800380038003800380038003800
+380038003800380038003800380038003800380038003800386070F0F0FFE07FC03F80>
+16 35 -2 25 22] 106 dc
+[<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C00071C00039C00039C
+0003980001B80001B80000F00000F00000F00000E00000E00000E00001C00079C0007BC0
+007F80003F00003C0000>
+24 27 -1 17 22] 121 dc
+[<FF1FE0FFBFE0FF1FE038038038038038038038038038E38019F30019F30019B3001DB7
+001DB7001DB7001DB7000F1E000F1E000F1E00>
+24 18 -1 17 22] 119 dc
+[<7E0000FE00007E00000E00000E00000E00000E00000E3E000EFF800FFFC00F83E00F01
+E00E00F00E00F00E00700E00700E00700E00700E00F00F00E00F01E00F83C00FFFC00EFF
+00063C00>
+24 25 0 24 22] 98 dc
+[<7E0000FE00007E00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E
+000E3C000E78000EF0000FF0000FF8000FBC000F1E000E0E000E07000E07807F87F0FFCF
+F07F87F0>
+24 25 0 24 22] 107 dc
+[<7E0000FE00007E00000E00000E00000E00000E00000E3C000EFF000FFF800F87800F03
+800F03800E03800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7
+F87FC7F0>
+24 25 0 24 22] 104 dc
+cmr10.300 sf
+[<00C001E001E000C000000000000000000000000000000FE000E000E000E000E000E000
+E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0C0F1C061
+803E00>
+16 37 3 28 13] 106 dc
+[<7FF0FFC00FC03E000780180003C0180003E0100001E0200001F0600000F04000007880
+00007D8000003D0000001E0000001F0000000F0000000F8000000F80000013C0000023E0
+000021E0000041F00000C0F8000080780001007C0003003C0002001E0006001F001F003F
+80FFC0FFF0>
+32 28 -1 27 31] 88 dc
+[<FFF03FE00F000F000F000C000F0008000F0010000F0020000F0040000F0080000F0100
+000F0200000F0400000F0E00000F1F00000F2F00000F2780000F4780000F83C0000F01E0
+000F01E0000F00F0000F00F8000F0078000F003C000F003C000F001E000F001F000F001F
+80FFF07FF0>
+32 28 -2 27 32] 75 dc
+8 @bop1
+cmbx10.746 sf
+177 399(Ac)s
+-3(kno)h
+-3(wledgemen)h
+-3(ts)h
+cmbx10.300 sf
+488 645(Da)s
+-1(vid)h
+18(Hulse)h
+430 1018(Simon)s
+14(Hac)h
+-1(k)h
+-1(ett)h
+438 1193(Jerem)s
+-1(y)h
+17(Begg)h
+450 1317(Barry)s
+57(Dwy)h
+-1(er)h
+772(Roger)h
+57(Brissend)h
+-1(en)h
+177 1591(Ross)s
+15(N.)h
+17(Willi)h
+-1(ams)h
+177 1641(Adelaide,)s
+14(Australi)h
+-1(a)h
+177 1691(Ma)s
+-1(y)h
+16(1992)h
+cmtt10.300 sf
+781 645(dave@cs.adela)s
+-1(ide.e)h
+-1(du.au)h
+768 1018(simon@internod)s
+-1(e.com)h
+-1(.au)h
+744 1193(jeremy@vsm.c)s
+-1(om.au)h
+832 1317(dwyer@cs.ad)s
+-1(elaid)h
+-1(e.edu)h
+-1(.au)h
+193 1367(rjb@koala.harv)s
+-1(ard.e)h
+-1(du)h
+cmr10.300 sf
+177 645(Man)s
+-1(y)h
+16(thanks)h
+17(to)h
+294(\()h
+503(\))h
+15(for)h
+17(translating)h
+16(the)h
+17(original)h
+15(v)h
+-1(ersion)h
+177 695(of)s
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(\(F)h
+-3(unnelW)h
+-3(eb)h
+16(V1\))h
+15(from)h
+14(Ada)h
+16(in)h
+-1(to)h
+15(C)h
+15(and)h
+16(getting)h
+15(it)h
+16(to)h
+15(w)h
+-1(ork)h
+15(on)h
+16(Unix)h
+15(and)h
+16(a)h
+15(PC.)h
+15(The)h
+177 744(C)s
+17(co)h
+1(de)h
+18(written)h
+17(b)h
+-1(y)h
+17(Da)h
+-1(vid)h
+15(\(F)h
+-3(unnelW)h
+-3(eb)h
+17(V2\))h
+16(formed)h
+16(the)h
+17(basis)h
+17(of)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(V3,)h
+17(but)h
+17(w)h
+-1(as)h
+17(en)h
+-1(tirely)h
+177 794(rewritten)s
+18(during)h
+17(the)h
+18(in)h
+-1(tensiv)h
+-1(e)h
+17(re\014nemen)h
+-1(t)h
+18(and)h
+16(feature-injection)h
+18(p)h
+1(erio)h
+1(d)h
+17(leading)h
+16(up)h
+17(to)h
+17(this)h
+18(release)h
+177 844(\(F)s
+-3(unnelW)h
+-3(eb)h
+12(V3)h
+12(is)h
+11(ab)h
+1(out)h
+12(three)h
+13(times)h
+11(the)h
+13(size)h
+13(of)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+11(V2\).)h
+18(Nev)h
+-1(ertheless,)h
+14(without)h
+12(this)h
+12(imp)h
+1(or-)h
+177 894(tan)s
+-1(t)h
+13(\014rst)h
+15(translation)h
+12(step,)h
+14(I)h
+14(w)h
+-1(ould)h
+12(probably)h
+13(not)h
+13(ha)h
+-1(v)h
+-1(e)h
+13(found)h
+13(the)h
+14(motiv)h
+-2(atio)h
+-1(n)h
+12(to)h
+13(dev)h
+-1(elop)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+177 944(to)s
+14(its)h
+14(presen)h
+-1(t)h
+15(state.)h
+177 1018(Thanks)s
+14(go)h
+12(to)h
+335(\()h
+482(\))h
+11(of)h
+13(In)h
+-1(terno)h
+1(de)h
+14(Systems)h
+13(Pt)h
+-1(y)h
+14(Ltd)h
+13(for)h
+13(the)h
+177 1068(use)s
+18(of)h
+16(his)h
+17(Sun,)h
+18(Mac,)h
+18(and)h
+16(PC,)h
+17(for)h
+17(assistance)h
+18(in)h
+17(p)h
+1(orting)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+17(to)h
+17(the)h
+17(Sun)h
+18(and)h
+16(PC,)h
+17(and)h
+17(for)h
+177 1118(helpful)s
+13(discussions.)h
+177 1193(Thanks)s
+16(go)h
+16(to)h
+305(\()h
+372(\))h
+14(of)h
+16(VSM)h
+16(Soft)h
+-1(w)h
+-1(are)h
+15(Services)h
+18(for)h
+15(the)h
+17(use)h
+17(of)h
+15(his)h
+177 1243(V)s
+-5(AX,)h
+14(and)h
+14(for)h
+14(assistance)h
+15(with)h
+13(the)h
+15(VMS-sp)h
+1(eci\014c)h
+15(co)h
+1(de.)h
+177 1317(Thanks)s
+50(to)h
+417(\()h
+525(\))h
+48(and)h
+177 1367(\()s
+460(\))h
+16(for)h
+18(trying)h
+18(out)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+18(V)h
+-3(ersion)h
+18(1)h
+18(in)h
+18(1987)h
+17(and)h
+18(pro)h
+-1(viding)h
+17(v)h
+-2(aluable)h
+177 1417(feedbac)s
+-1(k.)h
+177 1492(Thanks)s
+14(to)h
+14(Donald)h
+13(Kn)h
+-1(uth)h
+14(for)h
+13(establishing)h
+14(the)h
+14(idea)h
+14(of)h
+13(literate)h
+14(programm)h
+-1(ing)h
+12(in)h
+13(the)h
+15(\014rst)h
+14(place.)h
+1053 2940(7)s
+8 @eop
+9 @bop0
+9 @bop1
+cmr10.300 sf
+1053 2940(8)s
+9 @eop
+10 @bop0
+/cmti10.300 127 @newfont
+/cmcsc10.300 127 @newfont
+cmcsc10.300 sf
+[<00200000700000700000700000B80000B80000B800011C00011C00011C00020E00020E
+0004070004070007FF000803800803800803801801C03803C0FE0FF8>
+24 21 -1 20 25] 97 dc
+cmmi10.300 sf
+[<0000038000000F0000003C000000F0000003C000000F0000003C000000F0000003C000
+000F0000003C000000F0000000F00000003C0000000F00000003C0000000F00000003C00
+00000F00000003C0000000F00000003C0000000F0000000380>
+32 24 -3 21 32] 60 dc
+[<E0000000780000001E0000000780000001E0000000780000001E0000000780000001E0
+000000780000001E00000007800000078000001E00000078000001E00000078000001E00
+000078000001E00000078000001E00000078000000E0000000>
+32 24 -3 21 32] 62 dc
+cmti10.300 sf
+[<0001FC000703000C03001C07001C0300180000380000380000380000380000700007FF
+FC00701C00701C00701C00E03800E03800E03800E03800E07001C07001C07001C07001C0
+E201C0E201C0E20380E4038064038038038000030000070000060000C60000E40000CC00
+00700000>
+24 37 1 28 23] 12 dc
+[<3C3C26C2468747078E068E000E000E001C001C001C001C003800380038003800700030
+00>
+16 18 -4 17 18] 114 dc
+[<01F006080C080C1C18181C001F001FC00FF007F0007800386030E030C030806060C01F
+00>
+16 18 -3 17 17] 115 dc
+[<00C001C001C001C00380038003800380FFE00700070007000E000E000E000E001C001C
+001C001C00384038403840388019000E00>
+16 26 -3 25 14] 116 dc
+[<03CC063C0C3C181C3838303870387038E070E070E070E070E0E2C0E2C0E261E462643C
+38>
+16 18 -5 17 21] 97 dc
+[<1E0300270700470700470700870E00870E000E0E000E0E001C1C001C1C001C1C001C1C
+003838803838801838801839001C5900078E00>
+24 18 -4 17 22] 117 dc
+[<0FC00001C00001C0000380000380000380000380000700000700000700000700000E78
+000E8C000F0E000E0E001C0E001C0E001C0E001C0E00381C00381C00381C003838007038
+80703880707080707100E03200601C00>
+24 29 -3 28 21] 104 dc
+[<01E007180C0C180C380C300E700E700EE01CE01CE01CE018E038E030E06060C031801E
+00>
+16 18 -5 17 21] 111 dc
+[<1E03270747074707870E870E0E0E0E0E1C1C1C1C1C1C1C1C38383838183818381C7007
+F00070007000E0E0C0E1C0818047003C00>
+16 26 -4 17 20] 121 dc
+[<01E007100C1018083810701070607F80E000E000E000E000E000E0086010602030C01F
+00>
+16 18 -5 17 19] 101 dc
+cmbx10.746 sf
+[<00FC0001FF0003FF8007FFC00FFFC01FFFE01FFFE01FFFE01FFFE01FFFE01FFFE00FFF
+C007FFC003FF8001FF0000FC000000000000000000000000000000000000000000000000
+00000000000000000000007FC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC003FFC001FFC001FF
+C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
+C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
+C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFF>
+24 73 -4 72 32] 105 dc
+[<FFFFFFC0000000FFFFFFF0FFFFFFE0000000FFFFFFF0FFFFFFF0000000FFFFFFF0FFFF
+FFF8000000FFFFFFF0FFFFFFFC000000FFFFFFF0001FFFFC000000007FE000001FFFFE00
+0000001F8000001FFFFF000000001F8000001FFFFF800000001F8000001FFFFFC0000000
+1F8000001FBFFFE00000001F8000001F9FFFE00000001F8000001F9FFFF00000001F8000
+001F8FFFF80000001F8000001F87FFFC0000001F8000001F83FFFE0000001F8000001F81
+FFFF0000001F8000001F80FFFF0000001F8000001F80FFFF8000001F8000001F807FFFC0
+00001F8000001F803FFFE000001F8000001F801FFFF000001F8000001F800FFFF800001F
+8000001F8007FFF800001F8000001F8007FFFC00001F8000001F8003FFFE00001F800000
+1F8001FFFF00001F8000001F8000FFFF80001F8000001F80007FFFC0001F8000001F8000
+3FFFC0001F8000001F80003FFFE0001F8000001F80001FFFF0001F8000001F80000FFFF8
+001F8000001F800007FFFC001F8000001F800003FFFE001F8000001F800001FFFF001F80
+00001F800001FFFF001F8000001F800000FFFF801F8000001F8000007FFFC01F8000001F
+8000003FFFE01F8000001F8000001FFFF01F8000001F8000000FFFF81F8000001F800000
+0FFFF81F8000001F80000007FFFC1F8000001F80000003FFFE1F8000001F80000001FFFF
+1F8000001F80000000FFFF9F8000001F800000007FFFDF8000001F800000007FFFDF8000
+001F800000003FFFFF8000001F800000001FFFFF8000001F800000000FFFFF8000001F80
+00000007FFFF8000001F8000000003FFFF8000001F8000000003FFFF8000001F80000000
+01FFFF8000001F8000000000FFFF8000001F80000000007FFF8000001F80000000003FFF
+8000001F80000000001FFF8000001F80000000001FFF8000001F80000000000FFF800000
+1F800000000007FF8000001F800000000003FF8000001F800000000001FF8000007FE000
+00000000FF8000FFFFFFF000000000FF8000FFFFFFF0000000007F8000FFFFFFF0000000
+003F8000FFFFFFF0000000001F8000FFFFFFF0000000000F0000>
+88 71 -4 70 93] 78 dc
+cmtt10.300 sf
+[<01800380038007800F807F80FF80738003800380038003800380038003800380038003
+8003800380038003807FF87FFC7FF8>
+16 25 -4 24 22] 49 dc
+[<3FFE003FFE003FFE003800003800003800003800003800003800003800003BF0003FFC
+003FFE003C0F00300700000780000380600380F00380F00780F00F00F81F007FFE001FF8
+0007E000>
+24 25 -2 24 22] 53 dc
+[<03E0000FF8001FFC001E3C00380E00780F00700700700700E00380E00380E00380E003
+80E00380E00380E00380E00380F00780700700700700780F003C1E001E3C001FFC000FF8
+0003E000>
+24 25 -2 24 22] 48 dc
+[<03E3C00FFFE01FFFE01E3CC03C1E00380E00380E00380E003C1E001E3C001FFC001FF8
+003BE0003800003800001FFC001FFF003FFFC07803C0F001E0E000E0E000E0E000E0F001
+E07C07C03FFF800FFE0003F800>
+24 28 -1 17 22] 103 dc
+[<7E3E00FEFF807FFFC00F83E00F01E00E00F00E00F00E00700E00700E00700E00700E00
+F00F00E00F01E00F83C00FFFC00EFF000E3C000E00000E00000E00000E00000E00000E00
+007FC000FFE0007FC000>
+24 27 0 17 22] 112 dc
+cmbx10.300 sf
+[<78FCFCFCFC7800000000000078FCFCFCFC78>
+8 18 -3 17 13] 58 dc
+[<FEFEFEE0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0
+E0E0E0FEFEFE>
+8 41 -4 30 13] 91 dc
+[<FEFEFE0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E
+0E0E0EFEFEFE>
+8 41 -1 30 13] 93 dc
+[<7FFFFFE07FFFFFE0781F81E0701F80E0601F8060E01F8070C01F8030C01F8030C01F80
+30C01F8030001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80
+00001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800007FFFE
+0007FFFE00>
+32 28 -2 27 33] 84 dc
+[<FFFC07FFFFFC07FF0FC000E00FC001C00FC003800FC006000FC00C000FC038000FC070
+000FC0E0000FC1C0000FC3C0000FC7E0000FCFE0000FFBF0000FF3F8000FE1F8000FC0FC
+000FC0FE000FC07E000FC03F000FC01F800FC01FC00FC00FC00FC007E00FC007F0FFFC3F
+FFFFFC3FFF>
+32 28 -2 27 37] 75 dc
+[<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0F
+C01F31E01F40F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
+F81F00F81F00F81F00F8FFE7FFFFE7FF>
+24 29 -1 28 27] 104 dc
+[<03F8000FFF001C07803003803001C07001C07801C07E01C07F83807FC3003FF6001FFC
+000FFE0007FF801DFF80387FC0781FE0F007E0F003E0F001E0F001E0F001E07801C07803
+803E07801FFE0003F800>
+24 27 -2 26 24] 56 dc
+[<007E0003FF000781800F03C01E07C03C07C03C0380780000780000F80000F8F800FB0E
+00FA0780FC0380FC03C0F803E0F803E0F803E0F803E07803E07803E07803C03C03C03C07
+801E0F0007FE0003F800>
+24 27 -2 26 24] 54 dc
+cmr10.300 sf
+[<03C1000C3300180B00300F00700700700700E00700E00700E00700E00700E00700E007
+00600700700700300F00180F000C370007C7000007000007000007000007000007000007
+00000700003FE0>
+24 26 -2 17 22] 113 dc
+10 @bop1
+cmcsc10.300 sf
+1644 883(a)s
+1431 1008(a)s
+1695 1058(a)s
+754 1282(a)s
+cmmi10.300 sf
+190 689(<)s
+189(><)h
+76(>)h
+cmti10.300 sf
+222 689(\014rstauthor)s
+64(ye)h
+-2(ar)h
+cmbx10.746 sf
+177 399(Presen)s
+-3(tation)h
+42(Notes)h
+cmtt10.300 sf
+316 888(akt150@cscgpo.)s
+-1(anu.e)h
+-1(du.au)h
+1538 1013(verbatim)s
+cmbx10.300 sf
+177 639(References:)s
+177 689([)s
+393(])h
+177 764(Sp)s
+1(ecial)h
+11(terms:)h
+177 839(T)s
+-1(yp)h
+1(esetting)h
+-1(:)h
+1740 888([Kn)s
+-1(uth84])h
+177 938([Lamp)s
+1(ort86])h
+177 1013(Graphics:)s
+177 1187(Kno)s
+-1(wn)h
+13(t)h
+-1(yp)h
+1(esetti)h
+-1(ng)h
+11(probl)h
+-1(ems:)h
+cmr10.300 sf
+456 639(All)s
+24(reference)h
+1(s)h
+28(are)h
+25(set)h
+27(in)h
+25(b)h
+1(old)h
+24(and)h
+26(are)h
+25(cited)h
+26(in)h
+25(square)h
+26(brac)h
+-1(k)h
+-1(ets)h
+27(in)h
+25(the)h
+26(form)h
+596 689(.)s
+19(All)h
+13(references)h
+16(cited)h
+14(in)h
+13(the)h
+13(text)h
+14(app)h
+1(ear)h
+14(in)h
+13(the)h
+14(reference)h
+15(list)h
+13(and)h
+13(the)h
+14(index.)h
+487 764(New)s
+12(or)h
+11(imp)h
+1(ortan)h
+-1(t)h
+10(terminolog)h
+-1(y)h
+10(has)h
+11(b)h
+1(een)h
+13(set)h
+12(in)h
+11(b)h
+1(old)h
+11(face)h
+12(and)h
+11(app)h
+1(ears)h
+12(in)h
+11(the)h
+12(index.)h
+510 839(This)s
+41(do)h
+1(cumen)h
+-1(t)h
+40(w)h
+-1(as)h
+40(prepared)h
+42(b)h
+-1(y)h
+40(the)h
+41(author)h
+40(using)h
+41(Andrew)h
+41(T)h
+-3(rev)h
+-1(or-)h
+177 888(ro)s
+-1(w's)h
+29(\()h
+525(\))h
+28(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+28(\(OzT)h
+-3(eX\))h
+30(of)h
+29(the)h
+30(T)h
+1558 897(E)s
+1581 888(X/L)s
+4(T)h
+1686 901(E)s
+1709 888(X)s
+447 938(t)s
+-1(yp)h
+1(esetting)h
+15(system)h
+13(running)h
+14(on)h
+14(a)h
+13(Macin)h
+-1(tosh-SE.)h
+394 1013(All)s
+11(diagram)h
+-1(s)h
+10(ha)h
+-1(v)h
+-1(e)h
+11(b)h
+1(een)h
+13(constructed)h
+13(out)h
+11(of)h
+11(text)h
+12(using)h
+11(the)h
+12(L)h
+4(T)h
+1473 1026(E)s
+1496 1013(X)s
+197(en)h
+-1(vironmen)h
+-1(t)h
+177 1063(so)s
+17(as)h
+16(to)h
+17(allo)h
+-1(w)h
+15(this)h
+16(do)h
+1(cumen)h
+-1(t)h
+16(to)h
+17(b)h
+1(e)h
+17(disseminated)h
+15(electronically)h
+17(and)h
+16(prin)h
+-1(ted)h
+17(using)h
+16(L)h
+4(T)h
+1737 1076(E)s
+1761 1063(X)s
+16(without)h
+177 1112(access)s
+16(to)h
+14(the)h
+14(author's)h
+14(dra)h
+-1(wing)h
+13(to)h
+1(ols.)h
+805 1187(While)s
+11(ev)h
+-1(ery)h
+12(attempt)h
+11(has)h
+12(b)h
+1(een)h
+12(made)h
+10(to)h
+12(giv)h
+-1(e)h
+11(a)h
+11(go)h
+1(o)h
+1(d)h
+11(presen)h
+-1(tation)h
+177 1237(within)s
+12(the)h
+13(time)h
+11(a)h
+-1(v)h
+-2(ailabl)h
+-1(e,)h
+11(some)h
+12(shortcuts)h
+14(ha)h
+-1(v)h
+-1(e)h
+12(had)h
+12(to)h
+12(b)h
+1(e)h
+13(tak)h
+-1(en.)h
+18(In)h
+13(particular,)h
+12(the)h
+13(author)h
+12(has)h
+13(b)h
+1(een)h
+177 1287(unable)s
+14(to)h
+14(w)h
+-1(ork)h
+13(out)h
+14(ho)h
+-1(w)h
+14(to)h
+13(get)h
+14(L)h
+4(T)h
+796 1300(E)s
+820 1287(X)s
+14(to)h
+14(suppress)h
+15(blank)h
+14(pages)h
+14(at)h
+13(the)h
+15(start)h
+14(of)h
+14(c)h
+-1(hapters.)h
+1053 2940(9)s
+10 @eop
+11 @bop0
+11 @bop1
+cmr10.300 sf
+1042 2940(10)s
+11 @eop
+12 @bop0
+/cmbx10.622 127 @newfont
+/cmbx10.432 127 @newfont
+/cmr7.300 127 @newfont
+/cmr6.300 127 @newfont
+/cmr8.300 127 @newfont
+cmr6.300 sf
+[<0C003C00CC000C000C000C000C000C000C000C000C000C000C000C000C00FF80>
+16 16 -2 15 15] 49 dc
+cmr7.300 sf
+[<0C001C00EC000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C
+00FFC0>
+16 19 -3 18 17] 49 dc
+cmbx10.622 sf
+[<0000001FFF000070000001FFFFE000F000000FFFFFFC01F000007FFFFFFF03F00001FF
+FE007F87F00007FFE0000FEFF0000FFF000003FFF0003FFE000001FFF0007FF8000000FF
+F000FFF00000007FF001FFE00000003FF003FFC00000001FF003FF800000001FF007FF80
+0000000FF00FFF0000000007F00FFF0000000007F01FFE0000000007F01FFE0000000003
+F03FFC0000000003F03FFC0000000003F07FFC0000000001F07FFC0000000001F07FFC00
+00000001F07FF8000000000000FFF8000000000000FFF8000000000000FFF80000000000
+00FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800
+0000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF80000000000
+00FFF80000000000007FF80000000000007FFC0000000000007FFC0000000000F07FFC00
+00000000F03FFC0000000000F03FFC0000000000F01FFE0000000000F01FFE0000000001
+F00FFF0000000001E00FFF0000000003E007FF8000000003E003FF8000000007C003FFC0
+00000007C001FFE00000000F8000FFF00000001F00007FF80000003E00003FFE0000007C
+00000FFF000001F8000007FFE00007F0000001FFFE003FC00000007FFFFFFF800000000F
+FFFFFC0000000001FFFFF000000000001FFF000000>
+64 61 -5 59 71] 67 dc
+[<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF000000
+0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
+0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
+0003FF0000000003FF0000000003FF0000000003FF0000000003FF007FC00003FF01FFF8
+0003FF07FFFE0003FF1F03FF0003FF3C01FF0003FF7801FF8003FF7000FF8003FFE000FF
+C003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFF
+FF>
+48 60 -4 59 55] 104 dc
+[<001FFF00000001FFFFF0000007FFFFFC00000FF807FF00001FF801FF80001FFC00FFC0
+001FFC007FE0001FFC007FE0001FFC007FF0001FFC003FF0000FF8003FF00007F0003FF0
+0001C0003FF0000000003FF0000000003FF0000000003FF0000000FFFFF000000FFFFFF0
+00007FF83FF00003FF803FF00007FE003FF0001FFC003FF0003FF8003FF0007FF0003FF0
+007FE0003FF000FFE0003FF000FFC0003FF000FFC0003FF000FFC0003FF000FFC0007FF0
+00FFC0007FF000FFE000FFF0007FF001DFF0003FF803DFF8001FFC0F8FFFF00FFFFE0FFF
+F001FFFC07FFF0003FE000FFF0>
+48 38 -3 37 48] 97 dc
+[<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE03FF00FFFFF001FFC003FFE0007F
+E003FF80007FF003FF80003FF803FF00001FF803FF00001FFC03FF00000FFC03FF00000F
+FE03FF00000FFE03FF00000FFE03FF000007FF03FF000007FF03FF000007FF03FF000007
+FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007
+FF03FF00000FFE03FF00000FFE03FF00000FFE03FF00001FFC03FF00001FFC03FF00001F
+F803FF80003FF003FFC0007FF003FFE000FFE003FFF001FF8003FFFC07FF0003FF3FFFFC
+0003FF0FFFF00003FF01FF000003FF0000000003FF0000000003FF0000000003FF000000
+0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
+0003FF0000000003FF0000000003FF00000000FFFFFC000000FFFFFC000000FFFFFC0000
+00FFFFFC000000>
+48 55 -3 37 55] 112 dc
+[<0007800000078000000780000007800000078000000F8000000F8000000F8000000F80
+00001F8000001F8000003F8000003F8000007F800000FF800001FF800007FF80001FFFFF
+F0FFFFFFF0FFFFFFF0FFFFFFF001FF800001FF800001FF800001FF800001FF800001FF80
+0001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF80
+0001FF800001FF800001FF800001FF800001FF803C01FF803C01FF803C01FF803C01FF80
+3C01FF803C01FF803C01FF803C00FF807800FFC078007FC0F8007FE1F0001FFFE00007FF
+C00001FF00>
+32 55 -2 54 38] 116 dc
+[<0001FFC000000FFFF800003FFFFE0000FF80FF0001FE003F8007FC001FC00FF8000FE0
+0FF8000FF01FF00007F03FF00007F83FF00007F87FE00007F87FE00003FC7FE00003FC7F
+E00003FCFFE00003FCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFE0000000FFE0000000FFE0
+000000FFE00000007FE00000007FE00000007FE00000003FE00000003FF000003C1FF000
+003C1FF000003C0FF800007807FC0000F803FE0001F001FF0007E000FFC03FC0003FFFFF
+000007FFFC000000FFE000>
+40 38 -3 37 45] 101 dc
+[<00FE03F000FFFE0FFE00FFFE3FFF80FFFE3C7FC0FFFE707FC007FEF0FFE003FEE0FFE0
+03FEC0FFE003FFC0FFE003FF80FFE003FF807FC003FF803F8003FF800E0003FF00000003
+FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF
+00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00
+000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE00
+00FFFFFE0000FFFFFE0000>
+40 38 -3 37 41] 114 dc
+[<00001E000000003E00000000FE00000003FE0000003FFE0000FFFFFE0000FFFFFE0000
+FFFFFE0000FFCFFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000
+0FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000F
+FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE
+0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00
+00000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000
+000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000
+0FFE0000000FFE00007FFFFFFFC07FFFFFFFC07FFFFFFFC07FFFFFFFC0>
+40 56 -7 55 49] 49 dc
+cmtt10.300 sf
+[<01C00001C00001C00001C00071C700F9CF807FFF001FFC0007F00007F0001FFC007FFF
+00F9CF8071C70001C00001C00001C00001C000>
+24 18 -2 21 22] 42 dc
+[<00E00001F00001F00001B00001B00003B80003B80003B800031800071C00071C00071C
+00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007F1FC0FF1F
+E07F1FC0>
+24 25 -1 24 22] 65 dc
+[<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C001C1C001FFC
+001FFC001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00E07FFFE0FFFF
+E07FFFE0>
+24 25 -1 24 22] 69 dc
+[<FC07E0FE0FE0FC07E07001C07001C07001C030018038038038038038038038E38039F3
+8039F38039B38019B30019B30019B30019B30019B30019B3001913001B1B000F1E000F1E
+000E0E00>
+24 25 -1 24 22] 87 dc
+[<7FF800FFFE007FFF001C0F001C07801C03801C03801C03801C07801C07001FFF001FFE
+001FFE001C1F001C03801C03C01C01C01C01C01C01C01C01C01C03C01C07807FFF80FFFF
+007FFC00>
+24 25 -1 24 22] 66 dc
+cmbx10.746 sf
+[<FFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFFC
+00FFFFFFFFFFFFFFFE00001FFFC00003FFFE00001FFFC000003FFE00001FFFC000000FFE
+00001FFFC0000003FE00001FFFC0000001FE00001FFFC0000000FE00001FFFC0000000FE
+00001FFFC00000007E00001FFFC00000007F00001FFFC00000003F00001FFFC00000003F
+00001FFFC00000001F00001FFFC00000001F00001FFFC00000001F00001FFFC00000001F
+00001FFFC0007C001F00001FFFC0007C000F80001FFFC0007C000F80001FFFC0007C000F
+80001FFFC0007C000F80001FFFC0007C000000001FFFC000FC000000001FFFC000FC0000
+00001FFFC000FC000000001FFFC001FC000000001FFFC003FC000000001FFFC01FFC0000
+00001FFFFFFFFC000000001FFFFFFFFC000000001FFFFFFFFC000000001FFFFFFFFC0000
+00001FFFFFFFFC000000001FFFC01FFC000000001FFFC003FC000000001FFFC001FC0000
+00001FFFC000FC000000001FFFC000FC000000001FFFC000FC000000001FFFC0007C0000
+00001FFFC0007C000000001FFFC0007C000000001FFFC0007C000000001FFFC0007C0000
+00001FFFC0007C000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000FFFFFFFFFF00000000FFFFFFFFFF00000000FFFFFFFFFF000000
+00FFFFFFFFFF00000000FFFFFFFFFF00000000>
+72 70 -4 69 75] 70 dc
+[<007FE000003FF000FFFFE0007FFFF000FFFFE0007FFFF000FFFFE0007FFFF000FFFFE0
+007FFFF000FFFFE0007FFFF00003FFE00001FFF00001FFE00000FFF00001FFE00000FFF0
+0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0
+0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0
+0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0
+0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0
+0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0
+0000FFF00001FFE00000FFF00001FFE00001FFF00001FFE00001FFF00001FFE00001FFF0
+0001FFE00003FFF00000FFE00007FFF00000FFE0000F7FF000007FE0001F7FF000007FF0
+003E7FF800003FFC00FC7FFFE0001FFFFFF87FFFE00007FFFFE07FFFE00001FFFF807FFF
+E000003FFE007FFFE0>
+64 46 -4 45 66] 117 dc
+[<FFFFFFFFC03FFFFFFFF0001FFFFFF0FFFFFFFFC03FFFFFFFF0001FFFFFF0FFFFFFFFC0
+3FFFFFFFF0001FFFFFF0FFFFFFFFC03FFFFFFFF0001FFFFFF0FFFFFFFFC03FFFFFFFF000
+1FFFFFF0007FFF0000001FFFE00000000FF800007FFF0000000FFFE000000003E000007F
+FF8000000FFFE000000007E000003FFF8000000FFFF000000007C000003FFFC0000007FF
+F000000007C000003FFFC0000007FFF80000000FC000001FFFC0000003FFF80000000F80
+00001FFFE0000003FFF80000001F8000000FFFE0000003FFFC0000001F0000000FFFE000
+0001FFFC0000001F0000000FFFF0000001FFFE0000003F00000007FFF0000001FFFE0000
+003E00000007FFF8000001FFFE0000007E00000003FFF8000003FFFF0000007C00000003
+FFF8000003FFFF0000007C00000003FFFC000003FFFF000000FC00000001FFFC000007FF
+FF800000F800000001FFFE000007FFFF800000F800000001FFFE000007FFFFC00001F800
+000000FFFE00000F9FFFC00001F000000000FFFF00000F9FFFC00003F0000000007FFF00
+001F9FFFE00003E0000000007FFF00001F0FFFE00003E0000000007FFF80001F0FFFE000
+07E0000000003FFF80003F0FFFF00007C0000000003FFFC0003E07FFF00007C000000000
+1FFFC0007E07FFF8000F80000000001FFFC0007C03FFF8000F80000000001FFFE0007C03
+FFF8001F80000000000FFFE000FC03FFFC001F00000000000FFFE000F801FFFC001F0000
+0000000FFFF000F801FFFE003F000000000007FFF001F801FFFE003E000000000007FFF8
+01F000FFFE007E000000000003FFF803F000FFFF007C000000000003FFF803E0007FFF00
+7C000000000003FFFC03E0007FFF00FC000000000001FFFC07E0007FFF80F80000000000
+01FFFE07C0003FFF80F8000000000001FFFE0FC0003FFFC1F8000000000000FFFE0F8000
+1FFFC1F0000000000000FFFF0F80001FFFC3F00000000000007FFF1F80001FFFE3E00000
+000000007FFF1F00000FFFE3E00000000000007FFF9F00000FFFF7E00000000000003FFF
+BF00000FFFF7C00000000000003FFFFE000007FFFFC00000000000001FFFFE000007FFFF
+800000000000001FFFFC000003FFFF800000000000001FFFFC000003FFFF800000000000
+000FFFFC000003FFFF000000000000000FFFF8000001FFFF000000000000000FFFF80000
+01FFFF0000000000000007FFF0000000FFFE0000000000000007FFF0000000FFFE000000
+0000000003FFF0000000FFFC0000000000000003FFE00000007FFC0000000000000003FF
+E00000007FFC0000000000000001FFE00000007FF80000000000000001FFC00000003FF8
+0000000000000001FFC00000003FF80000000000000000FF800000001FF0000000000000
+0000FF800000001FF000000000000000007F800000001FE000000000000000007F000000
+000FE000000000000000007F000000000FE000000000000000003E0000000007C0000000
+00>
+120 72 -3 70 123] 87 dc
+[<007FC00000000000FFFFC00000000000FFFFC00000000000FFFFC00000000000FFFFC0
+0000000000FFFFC0000000000003FFC0000000000001FFC0000000000001FFC000000000
+0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0
+000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000000000
+0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0
+000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00FFC0000
+0001FFC07FFFC0000001FFC3FFFFF0000001FFCFFFFFFC000001FFDFF00FFF000001FFFF
+8003FF800001FFFE0001FFC00001FFF800007FE00001FFF000007FF00001FFE000003FF8
+0001FFE000001FFC0001FFE000001FFC0001FFE000001FFE0001FFE000001FFE0001FFE0
+00000FFF0001FFE000000FFF0001FFE000000FFF0001FFE000000FFF0001FFE000000FFF
+8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE0
+00000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF
+8001FFE000000FFF0001FFE000000FFF0001FFE000000FFF0001FFE000001FFE0001FFE0
+00001FFE0001FFE000001FFC0001FFE000001FFC0001FFE000003FF80001FFF000003FF8
+0001FFF800007FF00001FFFC0000FFE00001FFFE0001FFC00001FFBF0007FF800001FF1F
+E01FFE000001FE0FFFFFFC000001FC03FFFFF0000001F800FFFF80000001F0001FF80000
+00>
+64 72 -4 71 66] 98 dc
+[<FFFFFFFFFFFFC0000000FFFFFFFFFFFFFE000000FFFFFFFFFFFFFFC00000FFFFFFFFFF
+FFFFF00000FFFFFFFFFFFFFFFC0000001FFF800007FFFF0000001FFF8000007FFF800000
+1FFF8000000FFFE000001FFF80000007FFF000001FFF80000001FFF800001FFF80000000
+FFFC00001FFF800000007FFE00001FFF800000003FFF00001FFF800000001FFF00001FFF
+800000000FFF80001FFF800000000FFFC0001FFF8000000007FFC0001FFF8000000007FF
+E0001FFF8000000003FFE0001FFF8000000003FFF0001FFF8000000003FFF0001FFF8000
+000003FFF8001FFF8000000001FFF8001FFF8000000001FFF8001FFF8000000001FFFC00
+1FFF8000000001FFFC001FFF8000000001FFFC001FFF8000000001FFFC001FFF80000000
+01FFFC001FFF8000000001FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF
+8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FF
+FE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000
+000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000001FFFE00
+1FFF8000000001FFFC001FFF8000000001FFFC001FFF8000000001FFFC001FFF80000000
+01FFFC001FFF8000000001FFF8001FFF8000000001FFF8001FFF8000000001FFF8001FFF
+8000000003FFF0001FFF8000000003FFF0001FFF8000000003FFF0001FFF8000000007FF
+E0001FFF8000000007FFE0001FFF800000000FFFC0001FFF800000000FFF80001FFF8000
+00001FFF80001FFF800000003FFF00001FFF800000003FFE00001FFF800000007FFC0000
+1FFF80000001FFF800001FFF80000003FFF000001FFF8000000FFFE000001FFF8000007F
+FFC000001FFF800003FFFF0000FFFFFFFFFFFFFFFE0000FFFFFFFFFFFFFFF80000FFFFFF
+FFFFFFFFC00000FFFFFFFFFFFFFE000000FFFFFFFFFFFFC0000000>
+80 71 -4 70 91] 68 dc
+cmbx10.432 sf
+[<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+007FFFFE7FFFFE7FFFFE>
+24 39 -5 38 34] 49 dc
+[<1C007F00FF80FF80FF80FF80FF807F001C00>
+16 9 -5 8 19] 46 dc
+[<FFFE0000001FFFC0FFFE0000001FFFC0FFFF0000003FFFC003FF0000003FF00003FF00
+00003FF00003BF80000077F00003BF80000077F000039FC00000E7F000039FC00000E7F0
+00038FE00001C7F000038FE00001C7F0000387F0000387F0000387F0000387F0000387F0
+000387F0000383F8000707F0000383F8000707F0000381FC000E07F0000381FC000E07F0
+000380FE001C07F0000380FE001C07F0000380FF003807F00003807F003807F00003807F
+003807F00003803F807007F00003803F807007F00003801FC0E007F00003801FC0E007F0
+0003800FE1C007F00003800FE1C007F00003800FE1C007F000038007F38007F000038007
+F38007F000038003FF0007F000038003FF0007F000038001FE0007F000038001FE0007F0
+00038000FC0007F000038000FC0007F000FFFE00FC01FFFFC0FFFE007801FFFFC0FFFE00
+7801FFFFC0>
+64 41 -3 40 65] 77 dc
+[<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F0007F07F0007
+F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007
+F87F0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001FFFC00003FE0
+00>
+32 27 -2 26 34] 111 dc
+[<00700000700000700000700000F00000F00000F00001F00003F00003F00007F0001FFF
+F0FFFFF0FFFFF007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
+0007F00007F00007F00007F03807F03807F03807F03807F03807F03807F03803F87001F8
+F000FFE0001F80>
+24 38 -1 37 27] 116 dc
+[<07001FC01FE03FE03FE03FE01FE01FC007000000000000000000000000000000FFE0FF
+E0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
+E00FE00FE00FE00FE0FFFEFFFEFFFE>
+16 43 -3 42 20] 105 dc
+[<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F000700007F800F00003F800E000
+03FC01E00001FC01C00001FC01C00000FE03800000FE038000007F070000007F07000000
+7F8F0000003F8E0000003FDE0000001FDC0000001FDC0000000FF80000000FF80000000F
+F800000007F000000007F000000003E000000003E000000001C00000>
+40 27 -1 26 36] 118 dc
+[<01FF800007FFF0000F81FC001FC0FE001FC07F001FC07F001FC03F800F803F8000003F
+8000003F8000003F80000FFF8000FFFF8007FC3F801FE03F803F803F807F803F807F003F
+80FE003F80FE003F80FE003F80FE007F80FF007F807F00FFC03F83DFFC0FFF0FFC01FC03
+FC>
+32 27 -2 26 33] 97 dc
+[<FFC07F0000FFC1FFC000FFC787E0000FCE07F0000FDC03F8000FF803F8000FF003F800
+0FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
+E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
+03F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80>
+40 27 -3 26 38] 110 dc
+[<0007F0003FFC00FE3E01FC7F03F87F03F87F07F07F07F03E07F00007F00007F00007F0
+0007F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F0
+0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
+0007F00007F00007F0007FFF807FFF807FFF80>
+24 42 -2 41 21] 102 dc
+[<FFC1F0FFC7FCFFCE3E0FDC7F0FD87F0FF87F0FF07F0FF03E0FF0000FE0000FE0000FE0
+000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0
+00FFFF00FFFF00FFFF00>
+24 27 -2 26 28] 114 dc
+[<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC003FC003FC000FE003FC0003E003FC0001E0
+03FC0001E003FC0000E003FC0000E003FC0000E003FC0000F003FC03807003FC03807003
+FC03807003FC03800003FC07800003FC07800003FC1F800003FFFF800003FFFF800003FF
+FF800003FC1F800003FC07800003FC07800003FC03800003FC03800003FC03800003FC03
+800003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
+0003FC00000003FC000000FFFFFC0000FFFFFC0000FFFFFC0000>
+40 41 -3 40 43] 70 dc
+[<FFE03FF800FFE03FF800FFE03FF8000FE003F8000FE003F8000FE003F8000FE003F800
+0FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
+E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE007F8000FE0
+07F8000FE00FF80007E01FF80003F03BFF8001FFF3FF80003FC3FF80>
+40 27 -3 26 38] 117 dc
+[<003FE00001FFF80003F07E000FE03F001FC01F803F800FC03F800FC07F000FC07F0007
+E0FF0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF000000FF0000
+007F0000007F8000003F8000E03F8001E01FC001C00FE003C003F81F8000FFFE00001FF0
+00>
+32 27 -2 26 32] 101 dc
+[<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
+E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
+E00FE00FE00FE0FFFEFFFEFFFE>
+16 42 -3 41 20] 108 dc
+[<FFFFE07FFFF007FFF0FFFFE07FFFF007FFF0FFFFE07FFFF007FFF003FC0001FE00001C
+0003FC0001FE00001C0001FE0001FF0000380001FE0000FF0000380001FF0000FF000078
+0000FF0000FF8000700000FF0000FF8000700000FF8000FF8000F000007F8001FFC000E0
+00007F8001FFC000E000003FC003FFE001C000003FC0039FE001C000003FE0039FE003C0
+00001FE0070FF0038000001FE0070FF0038000001FF00F0FF0078000000FF00E07F80700
+00000FF00E07F80700000007F81E07FC0E00000007F81C03FC0E00000007FC1C03FC1E00
+000003FC3801FE1C00000003FC3801FE1C00000001FE7801FF3800000001FE7000FF3800
+000001FE7000FF3800000000FFF000FFF000000000FFE0007FF000000000FFE0007FF000
+0000007FC0003FE0000000007FC0003FE0000000003FC0003FC0000000003F80001FC000
+0000003F80001FC0000000001F80001F80000000001F00000F80000000001F00000F8000
+0000000E000007000000>
+72 41 -1 40 71] 87 dc
+[<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE00000000FE0000000
+0FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
+E00000000FE1FE00000FE7FF80000FFE07E0000FF803F8000FF001FC000FE000FE000FE0
+00FE000FE0007F000FE0007F000FE0007F800FE0007F800FE0007F800FE0007F800FE000
+7F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F000FE000FF000FE000FE
+000FF000FE000FF001FC000FF803F8000F9E07E0000F0FFF80000E01FC0000>
+40 42 -2 41 38] 98 dc
+cmti10.300 sf
+[<01FFFC00003C070000380380003801C0003801C0003801C0007003C0007003C0007003
+C00070038000E0078000E0070000E00E0000E0380001FFE00001C0000001C0000001C000
+0003800000038000000380000003800000070000000700000007000000070000000F0000
+00FFE00000>
+32 28 -3 27 28] 80 dc
+[<00F3018F030F06070E0E0C0E1C0E1C0E381C381C381C381C383830383038187818F00F
+700070007000E000E0C0C0E1C0C3007E00>
+16 26 -3 17 19] 103 dc
+[<3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701
+C01C0701C01C0701C01C070380380E0388380E0388380E0708380E0710701C0320300C01
+C0>
+32 18 -4 17 34] 109 dc
+[<01800380010000000000000000000000000000001C002600470047008E008E000E001C
+001C001C0038003800710071007100720072003C00>
+16 28 -4 27 13] 105 dc
+[<3C3C002646004687004707008E07008E07000E07000E07001C0E001C0E001C0E001C1C
+00381C40381C40383840383880701900300E00>
+24 18 -4 17 23] 110 dc
+[<1F800380038007000700070007000E000E000E000E001C001C001C001C003800380038
+0038007000700070007000E400E400E400E40068003800>
+16 29 -4 28 11] 108 dc
+[<0003F020001E0C60003002E000E003C001C001C0038001C0070000C00E0000801E0000
+801C0000803C0000803C000000780000007800000078000000F0000000F0000000F00000
+00F0000000F0000400F0000400F0000400F0000800700008007000100038002000180040
+000C0180000706000001F80000>
+32 30 -6 28 30] 67 dc
+[<01F007080C08181C3838300070007000E000E000E000E000E000E008E010602030C01F
+00>
+16 18 -5 17 19] 99 dc
+[<0003C0000670000C70001C60001C00001C0000380000380000380000380000380003FF
+8000700000700000700000700000700000E00000E00000E00000E00000E00001C00001C0
+0001C00001C00001C000038000038000038000030000030000070000C60000E60000CC00
+00780000>
+24 37 1 28 13] 102 dc
+[<0000180000001800000038000000380000007800000078000000B8000001B800000138
+000002380000023C0000041C0000041C0000081C0000181C0000101C0000201C0000201C
+00007FFC0000401C0000801C0001801C0001001C0002001C0002001C0004000E000C000E
+001C001E00FF00FFC0>
+32 29 -2 28 31] 65 dc
+[<01FE0007F8003E000780002E000F00002E001700002E001700002E002700004E002E00
+004E004E00004E004E00004E008E00008E011C00008E011C00008E021C00008E021C0001
+070438000107043800010708380001071038000207107000020720700002072070000207
+407000040740E000040780E000040700E0000C0700E0001C0601E000FF861FFC00>
+40 28 -3 27 37] 77 dc
+cmr8.300 sf
+[<001000003800003800003800005C00005C00005C00008E00008E00008E000107000107
+0003078002038002038007FFC00401C00401C00800E00800E01800E03800F0FE03FE>
+24 23 -1 22 26] 65 dc
+[<1F4060C0C040C040E000FF007F801FC001E080608060C060E0C09F00>
+16 14 -1 13 14] 115 dc
+[<183C3C1800000000007C1C1C1C1C1C1C1C1C1C1C1C1CFF>
+8 23 0 22 10] 105 dc
+[<080008000800180018003800FF80380038003800380038003800380038403840384038
+401C800F00>
+16 20 -1 19 14] 116 dc
+[<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C7C001D8E001E07
+001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF9FE0>
+24 23 0 22 20] 104 dc
+[<1FC0386038301038003803F81E3830387038E039E039E07970FF1F1E>
+16 14 -1 13 18] 97 dc
+[<FCF8001F0E001C03001C03801C01801C01C01C01C01C01C01C01C01C01801C03801C07
+001F0E001CF8001C00001C00001C00001C00001C0000FF8000>
+24 20 0 13 20] 112 dc
+[<0FC0186030307038E018FFF8E000E000E000600070083010183007C0>
+16 14 -1 13 16] 101 dc
+[<FC7C001D8E001E07001C07001C07001C07001C07001C07001C07001C07001C07001C07
+001C0700FF9FE0>
+24 14 0 13 20] 110 dc
+[<60F0F070101020204040>
+8 10 -3 3 10] 44 dc
+[<FCFE7C3838383838101C3C201C3C201C4C200E4E400E4E400E86400787800787800703
+80030300030300>
+24 14 -1 13 25] 119 dc
+[<07C018303018600C600CE00EE00EE00EE00EE00E701C3018183007C0>
+16 14 -1 13 18] 111 dc
+[<FC7C1F001D8E63801E0781C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701
+C01C0701C01C0701C01C0701C01C0701C0FF9FE7F8>
+32 14 0 13 30] 109 dc
+[<03E006700E701C201C001C001C001C001C00FF801C001C001C001C001C001C001C001C
+001C001C001C001C00FF80>
+16 23 0 22 11] 102 dc
+[<FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
+001C001C001C001C00FF80>
+16 23 0 22 10] 108 dc
+[<FC3F001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0F
+000E170003E7E0>
+24 14 0 13 20] 117 dc
+[<07F01838303870106000E000E000E000E000600070083008183007C0>
+16 14 -1 13 16] 99 dc
+[<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C3F801C1C001C18
+001C20001C40001CC0001FE0001CF0001C70001C78001C3C001C1E001C1E00FF3FC0>
+24 23 0 22 19] 107 dc
+[<FE1F3C0E3C0C1C081C080E100E100720072003C003C003C00180018001000100E200E2
+00A4007800>
+16 20 -1 13 19] 121 dc
+[<FCF01D381E381C101C001C001C001C001C001C001C001C001C00FF80>
+16 14 0 13 14] 114 dc
+[<60F0F060>
+8 4 -3 3 10] 46 dc
+[<FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
+000E000E000E000E00FFE0>
+16 23 -1 22 13] 73 dc
+[<007E00000E00000E00000E00000E00000E00000E00000E00000E0007CE001C3E00300E
+00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E00182E0007CFC0>
+24 23 -1 22 20] 100 dc
+[<0300078007800300000000000000000000001F80038003800380038003800380038003
+8003800380038003800380038003804380E300E7007C00>
+16 29 2 22 11] 106 dc
+[<00FC100383300E00B01C0070380030300030700010600010E00010E00000E00000E000
+00E00000E00000E000106000107000103000203800201C00400E008003830000FC00>
+24 23 -2 22 25] 67 dc
+[<FE0003F81E0003C0170005C0170005C0170005C0138009C0138009C011C011C011C011
+C011C011C010E021C010E021C0107041C0107041C0107041C0103881C0103881C0101D01
+C0101D01C0100E01C0100E01C0380E01C0FE040FF8>
+32 23 -1 22 32] 77 dc
+[<03000700FF000700070007000700070007000700070007000700070007000700070007
+00070007007FF0>
+16 21 -2 20 18] 49 dc
+[<07C0183030186018E00CE00CE00EE00EE00E601E301E186E0F8E000E000C001C701870
+18603020C01F80>
+16 21 -1 20 18] 57 dc
+[<07E018302018600C600C700C78183E101F600FC00FF018F8607C601EC00EC006C006C0
+04600C38300FE0>
+16 21 -1 20 18] 56 dc
+[<01F00608080C181C301C70006000E000E3E0EC30F018F00CE00EE00EE00E600E600E30
+0C3018183007C0>
+16 21 -1 20 18] 54 dc
+[<00FC000782000E07001C07001C02001C00001C00001C00001C0000FFFF001C07001C07
+001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF1FE0>
+24 23 0 22 20] 12 dc
+[<FE1F3C0E3C0C1C081C080E100E100720072003C003C003C001800180>
+16 14 -1 13 19] 118 dc
+cmr10.300 sf
+[<08081010202040404040808080808080B0B0F8F878783030>
+16 12 -6 28 21] 92 dc
+[<6060F0F0F8F8686808080808080810101010202040408080>
+16 12 -1 28 21] 34 dc
+[<007FC001C1C00303C00703C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFF
+C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
+C00E01C00E01C00E01C00E01C07FCFF8>
+24 29 0 28 23] 13 dc
+[<1FFF00F800780078007800780078007800780078007800780078007800780078007800
+780078007800787078F878F878F878F0F040E021C01F00>
+16 29 -1 27 21] 74 dc
+12 @bop1
+cmr6.300 sf
+223 2783(1)s
+cmr7.300 sf
+1824 2221(1)s
+cmbx10.622 sf
+177 381(Chapter)s
+34(1)h
+cmtt10.300 sf
+567 1665(@*@*)s
+479(@*)h
+304 1765(@A)s
+48(@E)h
+1065 2186(WEB)s
+cmbx10.746 sf
+177 617(F)s
+-10(unnelW)h
+-10(eb)h
+41(Design)h
+cmbx10.432 sf
+177 2066(1.1)s
+70(Motiv)h
+-4(ation)h
+22(for)h
+24(F)h
+-6(unnelW)h
+-6(eb)h
+cmbx10.300 sf
+1059 911(F)s
+-4(unnelW)h
+-4(eb)h
+16(V1)h
+1577 2236([Ben)s
+-1(tl)h
+-1(ey86])h
+1378 2286([Kn)s
+-1(uth83])h
+cmti10.300 sf
+442 2236(Pr)s
+-2(o)h
+-2(gr)h
+-2(amming)h
+17(Pe)h
+-2(arls)h
+215(Communic)h
+-2(ations)h
+18(of)h
+18(the)h
+18(A)h
+-1(CM)h
+cmr8.300 sf
+241 2795(As)s
+14(it)h
+14(happ)h
+1(ens)h
+-1(,)h
+13(this)h
+13(w)h
+-1(as)h
+14(somewhat)h
+13(of)h
+13(a)h
+14(luc)h
+-1(ky)h
+12(encoun)h
+-1(ter)h
+-1(.)h
+21(I)h
+14(had)h
+13(only)h
+13(just)h
+13(joined)h
+12(the)h
+13(A)h
+-1(CM)h
+15(and)h
+13(the)h
+14(Ma)h
+-1(y)h
+13(1986)h
+177 2835(issue)s
+11(of)h
+11(CA)h
+-1(CM)h
+14(in)h
+11(whic)h
+-1(h)h
+11(the)h
+10(column)h
+10(app)h
+1(eare)h
+-1(d)h
+10(w)h
+-1(as)h
+12(the)h
+10(\014rst)h
+11(issue)h
+11(I)h
+11(receiv)h
+-1(ed.)h
+cmr10.300 sf
+177 861(This)s
+18(c)h
+-1(hapter)h
+20(con)h
+-1(tains)h
+18(notes)h
+19(on)h
+18(the)h
+19(design)h
+18(of)h
+18(F)h
+-3(unnelW)h
+-3(eb.)h
+31(These)h
+19(notes)h
+19(w)h
+-1(ere)h
+20(not)h
+18(created)h
+20(\\from)h
+177 911(scratc)s
+-1(h",)h
+17(as)h
+16(the)h
+16(original)h
+14(v)h
+-1(ersion)h
+16(of)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(\()h
+313(\))h
+16(w)h
+-1(as)h
+16(designed)h
+16(and)h
+16(constructed)h
+177 961(in)s
+13(a)h
+14(h)h
+-1(urry)h
+13(late)h
+14(in)h
+13(1986,)h
+12(and)h
+13(no)h
+14(design)h
+13(notes)h
+15(w)h
+-1(ere)h
+14(ev)h
+-1(er)h
+15(recorded.)h
+19(These)h
+15(notes)h
+14(are)h
+14(in)h
+13(fact)h
+14(the)h
+14(result)h
+177 1011(of)s
+14(a)h
+15(complete)h
+14(review)h
+15(of)h
+14(the)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(design)h
+15(that)h
+15(to)h
+1(ok)h
+14(place)h
+15(in)h
+14(late)h
+15(1991)h
+13(as)h
+15(part)h
+15(of)h
+14(the)h
+15(pro)h
+1(cess)h
+177 1061(of)s
+13(upgrading)h
+14(it)h
+13(for)h
+14(public)h
+13(release.)h
+177 1139(Throughout)s
+12(the)h
+13(design)h
+13(pro)h
+1(cess)h
+14(I)h
+13(tried)h
+13(to)h
+12(stic)h
+-1(k)h
+12(to)h
+13(the)h
+13(principles)h
+13(of)h
+11(simplicit)h
+-1(y)h
+10(and)h
+12(clarit)h
+-1(y)h
+-3(.)h
+17(As)h
+13(a)h
+12(rule,)h
+177 1188(it)s
+17(w)h
+-1(as)h
+18(considered)h
+19(more)h
+17(imp)h
+1(ortan)h
+-1(t)h
+16(that)h
+18(a)h
+17(feature)h
+18(b)h
+1(e)h
+19(simple)h
+16(and)h
+17(not)h
+18(allo)h
+-1(w)h
+16(the)h
+18(user)h
+19(to)h
+18(outsmart)h
+177 1238(himself)s
+15(than)h
+16(it)h
+16(w)h
+-1(as)h
+16(for)h
+16(the)h
+17(feature)h
+16(to)h
+17(b)h
+1(e)h
+16(particularly)h
+16(crisp.)h
+26(F)h
+-3(or)h
+15(example,)h
+15(the)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(macro)h
+177 1288(calling)s
+13(syn)h
+-1(tax)h
+13(is)h
+14(not)h
+14(as)h
+14(crisp)h
+14(as)h
+14(the)h
+15(C)h
+14(syn)h
+-1(tax,)h
+13(but)h
+14(is)h
+14(more)h
+13(visible.)h
+177 1366(T)s
+-3(o)h
+15(some)h
+14(exten)h
+-1(t)h
+16(the)h
+16(design)h
+15(review)h
+16(w)h
+-1(as)h
+15(in\015uenced)h
+17(b)h
+-1(y)h
+15(the)h
+16(requiremen)h
+-1(ts)h
+15(of)h
+15(bac)h
+-1(kw)h
+-1(ard)h
+15(compatibil)h
+-1(it)h
+-1(y)h
+-4(.)h
+177 1416(During)s
+12(the)h
+13(review)h
+13(it)h
+13(w)h
+-1(as)h
+12(hard)h
+13(not)h
+12(to)h
+13(think)h
+12(ab)h
+1(out)h
+12(all)h
+12(the)h
+13(source)h
+14(\014les)h
+12(in)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(V1)h
+12(format)h
+11(that)h
+177 1466(I)s
+14(ha)h
+-1(v)h
+-1(e)h
+13(written)h
+15(o)h
+-1(v)h
+-1(er)h
+14(the)h
+14(y)h
+-1(ears)h
+14(that)h
+14(w)h
+-1(ould)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(to)h
+13(b)h
+1(e)h
+15(con)h
+-1(v)h
+-1(erted)h
+15(w)h
+-1(ere)h
+14(I)h
+14(to)h
+14(signi\014can)h
+-1(tly)h
+12(deviate)h
+15(from)h
+177 1516(the)s
+16(old)h
+15(input)h
+15(language.)h
+22(Luc)h
+-1(kily)h
+14(it)h
+15(turned)h
+17(out)h
+15(that)h
+16(there)h
+16(w)h
+-1(as)h
+16(little)h
+14(clash)h
+16(b)h
+1(et)h
+-1(w)h
+-1(een)h
+17(these)h
+17(in)h
+-1(terests,)h
+177 1565(and)s
+17(the)h
+18(resulting)h
+17(design)h
+17(is)h
+17(b)h
+1(oth)h
+17(clean)h
+17(and)h
+17(do)h
+1(es)h
+18(not)h
+17(require)h
+18(m)h
+-1(uc)h
+-1(h)h
+16(con)h
+-1(v)h
+-1(ersion)h
+17(of)h
+16(old)h
+17(source)h
+18(\014les.)h
+177 1615(The)s
+17(main)h
+14(revision)h
+16(is)h
+17(in)h
+16(the)h
+17(do)h
+1(cumen)h
+-1(t)h
+15(structuring)h
+18(facilit)h
+-1(y)h
+-3(.)h
+23(F)h
+-3(unnelW)h
+-3(eb)h
+16(V1)h
+16(had)h
+16(just)h
+17(t)h
+-1(w)h
+-1(o)h
+16(lev)h
+-1(els)h
+16(of)h
+177 1665(heading)s
+13(indicated)h
+13(b)h
+-1(y)h
+114(\(for)h
+13(ma)h
+2(jor)h
+11(headings\))h
+14(and)h
+70(\(for)h
+13(minor)h
+11(headings\).)h
+18(This)h
+13(sc)h
+-1(heme)h
+14(\(whic)h
+-1(h)h
+177 1715(w)s
+-1(as)h
+16(copied)h
+16(from)h
+14(Kn)h
+-1(uth's)h
+16(W)h
+-3(eb\))h
+15(has)h
+16(b)h
+1(een)h
+17(replaced)h
+17(b)h
+-1(y)h
+15(a)h
+16(hierarc)h
+-1(hical)h
+15(sc)h
+-1(heme)h
+16(of)h
+15(\014v)h
+-1(e)h
+16(heading)h
+16(lev)h
+-1(els)h
+177 1765(lev)s
+-1(els)h
+14(\()h
+44(.)h
+7(.)h
+7(.)h
+42(\).)h
+177 1843(This)s
+18(c)h
+-1(hapter)h
+19(is)h
+17(rather)h
+19(unstructure)h
+1(d,)h
+20(acting)h
+17(as)h
+18(it)h
+18(has,)h
+18(mainly)h
+16(as)h
+18(a)h
+17(dumping)h
+16(ground)h
+18(for)h
+17(random)h
+177 1893(ideas)s
+14(ab)h
+1(out)h
+14(F)h
+-3(unnelW)h
+-3(eb.)h
+177 2186(During)s
+16(1986,)h
+15(I)h
+16(w)h
+-1(as)h
+16(exp)h
+1(osed)h
+18(to)h
+16(Donald)h
+15(Kn)h
+-1(uth's)h
+98(literate)h
+17(programm)h
+-1(i)h
+-1(ng)h
+14(system)h
+16(in)h
+16(the)h
+17(form)h
+14(of)h
+177 2236(Jon)s
+17(Ben)h
+-1(tley's)h
+405(column)h
+15(in)h
+800(.)h
+44(This)h
+177 2286(prompted)s
+17(me)h
+16(to)h
+17(obtain)h
+17(a)h
+17(cop)h
+-1(y)h
+17(of)h
+17(the)h
+18(rep)h
+1(ort)h
+18(on)h
+17(the)h
+18(W)h
+-3(eb)h
+17(system)h
+226(and)h
+17(to)h
+17(try)h
+18(out)h
+17(the)h
+177 2336(program)s
+12(whic)h
+-1(h)h
+14(had)h
+14(b)h
+1(een)h
+15(installed)h
+13(on)h
+14(the)h
+14(lo)h
+1(cal)h
+13(V)h
+-3(axen.)h
+177 2414(W)s
+-3(eb)h
+14(w)h
+-1(as)h
+13(the)h
+15(b)h
+1(est)h
+14(system)h
+14(that)h
+14(I)h
+13(had)h
+14(seen)h
+15(for)h
+13(pro)h
+1(ducing)h
+14(prin)h
+-1(ted)h
+14(and)h
+14(online,)h
+13(inline)h
+12(do)h
+1(cumen)h
+-1(tation.)h
+177 2464(T)s
+-3(o)h
+16(me)h
+16(the)h
+18(most)h
+16(extraordinary)h
+17(asp)h
+1(ect)h
+18(of)h
+17(the)h
+17(system)h
+17(w)h
+-1(as)h
+17(its)h
+17(success)h
+20(despite)h
+18(the)h
+17(fact)h
+17(that)h
+17(it)h
+17(had)h
+177 2514(b)s
+1(een)h
+18(built)h
+16(in)h
+-1(to)h
+17(the)h
+17(horribly)h
+17(an)h
+-1(tiquated)h
+16(\014le/batc)h
+-1(h)h
+17(pro)h
+1(cessing)h
+18(systems)h
+17(that)h
+17(w)h
+-1(e)h
+18(all)h
+15(kno)h
+-1(w)h
+17(and)h
+16(lo)h
+-1(v)h
+-1(e)h
+177 2563(\(and)s
+15(use\).)h
+20(I)h
+15(had)h
+14(imagi)h
+-1(ned)h
+13(sophisticated)h
+15(do)h
+1(cumen)h
+-1(tation)h
+14(systems)h
+14(b)h
+1(efore)h
+15(this)h
+15(time,)h
+13(but)h
+15(had)h
+14(alw)h
+-1(a)h
+-1(ys)h
+177 2613(assumed)s
+16(that)h
+17(they)h
+17(w)h
+-1(ould)h
+16(b)h
+1(e)h
+18(parts)h
+17(of)h
+16(complex)h
+15(programm)h
+-1(ing)h
+14(en)h
+-1(vironmen)h
+-1(ts.)h
+26(Kn)h
+-1(uth)h
+17(sho)h
+-1(w)h
+-1(ed)h
+17(that,)h
+177 2663(to)s
+16(some)h
+14(exten)h
+-1(t,)h
+17(it)h
+15(can)h
+16(b)h
+1(e)h
+16(done)h
+16(using)h
+15(1960s)h
+15(soft)h
+-1(w)h
+-1(are)h
+16(tec)h
+-1(hnology)h
+15(\(excluding)h
+16(the)h
+16(1980s)h
+15(t)h
+-1(yp)h
+1(esetting)h
+177 2713(tec)s
+-1(hnology\).)h
+18(This)h
+14(w)h
+-1(as)h
+14(exciting.)h
+1042 2940(11)s
+709 2 177 2757 r
+12 @eop
+13 @bop0
+cmsy10.300 sf
+[<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E0>
+16 16 -2 17 21] 15 dc
+cmbx10.432 sf
+[<00FF800003FFF0000FFFFC003F03FF007C00FF807C007FC0FE007FC0FF003FE0FF003F
+E0FF003FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F8000007F
+800000FF000001FE000001FC000003F0000007E000000FC000001F0000003E0000007C00
+E0007800E000F000E001E001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFF
+C0FFFFFF80FFFFFF80FFFFFF80>
+32 39 -3 38 34] 50 dc
+[<FFFFFCFFFFFCFFFFFC01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
+0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
+0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
+0001FE0001FE00FFFFFCFFFFFCFFFFFC>
+24 41 -2 40 26] 73 dc
+[<00003FF80000003FF80000003FF800000003F800000003F800000003F800000003F800
+000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
+0003F800001FE3F80000FFFBF80003F03FF8000FE00FF8001FC007F8003F8003F8003F80
+03F8007F8003F8007F0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003
+F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8003F8003F8
+003F8007F8001FC00FF8000FE01FF80003F03FFF8000FFF3FF80003FC3FF80>
+40 42 -2 41 38] 100 dc
+cmtt10.300 sf
+[<001F00007F8000FF8001E78001C30001C00001C0007FFF00FFFF00FFFF0001C00001C0
+0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0003FFE007FFF
+003FFE00>
+24 25 -1 24 22] 102 dc
+[<00C00001C00001C00001C00007F0001FFC003FFF007DCF00F1C780E1C780E1C780E1C7
+80F1C30079C0007FC0001FF00007FC0001FE0001CF0001C780F1C380F1C380F1C380E1C7
+80F1C78079DF003FFE001FFC0007E00001C00001C00000C000>
+24 32 -2 28 22] 36 dc
+[<000180000780001F80003E0000F80001F00007C0000F80003E0000FC0000F00000FC00
+003E00000F800007C00001F00000F800003E00001F80000780000180>
+24 21 -2 22 22] 60 dc
+[<07E3001FFF007FFF00781F00F00F00E00700E00700E00000F000007800007F80001FF0
+0007FC0000FE00000F00000780000380000380E00380E00380F00780F80F00FFFE00FFFC
+00C7F000>
+24 25 -2 24 22] 83 dc
+[<C00000F00000FC00003E00000F800007C00001F00000F800003E00001F80000780001F
+80003E0000F80001F00007C0000F80003E0000FC0000F00000C00000>
+24 21 -2 22 22] 62 dc
+[<7FFF00FFFF80FFFF80000000000000000000000000000000FFFF80FFFF807FFF00>
+24 11 -2 17 22] 61 dc
+[<001F80007F8001FF8001E00001C00001C00001C00001C00001C00001C00001C00001C0
+0001C00003C0007F8000FF0000FF00007F800003C00001C00001C00001C00001C00001C0
+0001C00001C00001C00001C00001E00001FF80007F80001F80>
+24 32 -2 28 22] 123 dc
+[<FFFF80FFFF80FFFF80>
+24 3 -2 13 22] 45 dc
+[<FC0000FF0000FFC00003C00001C00001C00001C00001C00001C00001C00001C00001C0
+0001C00001E00000FF00007F80007F8000FF0001E00001C00001C00001C00001C00001C0
+0001C00001C00001C00001C00003C000FFC000FF0000FC0000>
+24 32 -2 28 22] 125 dc
+[<1FFC003FFE007FFF00780F00F00780E00380E00380E00380E00380E00380E00380E003
+80E00380E00380E00380E00380E00380E00380E00380F00780F00780780F007FFF003FFE
+001FFC00>
+24 25 -2 24 22] 79 dc
+[<7FFF80FFFF80FFFF80E00700E00F00E01E00E01C00003C0000780000700000F00001E0
+0001C00003C0000780000700000F00001E03801C03803C0380780380700380FFFF80FFFF
+80FFFF80>
+24 25 -2 24 22] 90 dc
+[<03E30007FF001FFF003E1F003C0F00780F00780700700700F00000E00000E00000E000
+00E00000E03F80E07FC0E03F80F00700700700780F00780F003C0F003E1F001FFF0007FF
+0003E700>
+24 25 -2 24 22] 71 dc
+cmr10.300 sf
+[<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01C0000E01C0
+000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0
+000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0
+000E01C0007F87FC00>
+32 29 0 28 24] 11 dc
+13 @bop1
+cmsy10.300 sf
+239 247(\017)s
+239 327(\017)s
+239 507(\017)s
+239 686(\017)s
+239 816(\017)s
+239 896(\017)s
+239 1026(\017)s
+239 1156(\017)s
+cmbx10.432 sf
+177 1990(1.2)s
+70(Inden)h
+-2(tation)h
+cmbx10.300 sf
+1346 2103(inden)s
+-1(t)h
+-1(ed)h
+12(macro)h
+13(call)h
+1169 2153(no)s
+13(inden)h
+-2(tat)h
+-1(ion)h
+20(blank)h
+12(inden)h
+-1(t)h
+-1(ati)h
+-1(on)h
+177 2202(text)s
+15(inden)h
+-1(t)h
+-1(ati)h
+-1(on)h
+177 2835(No)s
+16(inden)h
+-1(t)h
+-1(ati)h
+-1(on:)h
+cmtt10.300 sf
+520 1461(tt)s
+21(font)h
+177 2308(@$@<Sloth@>==)s
+-1(@{@-)h
+177 2358(Aardvark)s
+177 2408(Walrus@})s
+177 2508(@O@<Output@>=)s
+-1(=@{@-)h
+177 2557(Zebra@<Sloth@)s
+-1(>)h
+177 2607(Giraffe)s
+177 2657(@})s
+1066 2763(Sloth)s
+cmr10.300 sf
+177 42(The)s
+16(W)h
+-3(eb)h
+16(system)h
+15(w)h
+-1(as)h
+16(en)h
+-1(ticing)h
+15(and)h
+16(promising)h
+13(but)h
+16(to)h
+16(me)h
+14(su\013ered)h
+18(from)h
+14(man)h
+-1(y)h
+14(dra)h
+-1(wbac)h
+-1(ks,)h
+16(man)h
+-1(y)h
+13(of)h
+177 91(whic)s
+-1(h)h
+16(Kn)h
+-1(uth)h
+16(had)h
+16(promoted)h
+15(as)h
+16(adv)h
+-2(an)h
+-1(tages.)h
+23(The)h
+17(follo)h
+-1(wi)h
+-1(ng)h
+14(highly)h
+15(sub)h
+2(jectiv)h
+-1(e)h
+17(list)h
+15(of)h
+15(disadv)h
+-2(an)h
+-1(tages)h
+177 141(formed)s
+13(a)h
+13(springb)h
+1(oard)h
+14(for)h
+14(the)h
+14(construction)h
+15(of)h
+14(F)h
+-3(unnelW)h
+-3(eb.)h
+281 247(W)s
+-3(eb)h
+13(can)h
+15(only)h
+13(pro)h
+1(cess)h
+15(P)h
+-1(ascal)h
+14(programs.)h
+281 327(W)s
+-3(eb)h
+16(can)h
+17(pro)h
+1(duce)h
+18(only)h
+16(one)h
+17(output)h
+16(\014le.)h
+27(In)h
+16(man)h
+-1(y)h
+15(instances)h
+18(it)h
+16(is)h
+16(desirable)h
+17(to)h
+17(generate)h
+18(more)h
+281 377(than)s
+18(one)h
+19(output)h
+19(\014le.)h
+31(F)h
+-3(or)h
+18(example,)h
+18(when)h
+19(programm)h
+-1(ing)h
+16(in)h
+18(Ada,)h
+19(it)h
+18(is)h
+18(desirable)h
+19(to)h
+18(write)h
+19(a)h
+281 427(pac)s
+-1(k)h
+-2(age)h
+13(sp)h
+1(eci\014cation)h
+15(and)h
+14(a)h
+13(pac)h
+-1(k)h
+-2(age)h
+14(b)h
+1(o)h
+1(dy)h
+14(together)h
+15(in)h
+13(the)h
+15(same)h
+13(\014le.)h
+281 507(W)s
+-3(eb)h
+15(enforces)h
+16(Kn)h
+-1(uth's)h
+15(individual)h
+13(st)h
+-1(yle)h
+16(of)h
+14(inden)h
+-1(tation.)h
+21(W)h
+-3(eb)h
+15(supplies)h
+15(comm)h
+-1(ands)h
+14(to)h
+15(o)h
+-1(v)h
+-1(er-ride)h
+281 557(the)s
+16(automatic)h
+14(inden)h
+-1(tation)h
+15(but)h
+15(it)h
+15(is)h
+16(an)h
+15(uphill)h
+14(battle)h
+16(and)h
+15(the)h
+16(co)h
+1(de)h
+17(b)h
+1(ecomes)h
+15(clogged)h
+16(up)h
+15(with)h
+281 606(format)s
+12(directiv)h
+-1(es.)h
+281 686(W)s
+-3(eb)h
+20(do)h
+1(es)h
+22(not)h
+21(cater)h
+21(for)h
+21(non-standard)h
+21(P)h
+-1(ascal)h
+20(programs.)h
+38(In)h
+21(particular,)h
+21(all)h
+20(iden)h
+-1(ti\014ers)h
+21(are)h
+281 736(truncated)s
+15(to)h
+14(ab)h
+1(out)h
+14(eigh)h
+-1(t)h
+13(c)h
+-1(haracters.)h
+281 816(W)s
+-3(eb)h
+13(formats)h
+13(the)h
+14(program)h
+13(output)h
+14(\014le)h
+14(in)h
+-1(to)h
+13(a)h
+13(form)h
+13(that)h
+13(is)h
+14(unreadable)h
+14(to)h
+14(h)h
+-1(umans.)h
+281 896(W)s
+-3(eb)h
+11(do)h
+1(es)h
+13(not)h
+12(pro)h
+-1(vide)h
+12(an)h
+11(include)h
+12(facilit)h
+-1(y)h
+-3(.)h
+15(This)h
+12(w)h
+-1(as)h
+12(considered)h
+13(a)h
+12(feature)h
+12(essen)h
+-1(tial)h
+13(for)h
+11(supp)h
+1(ort-)h
+281 946(ing)s
+13(macro)h
+13(libraries.)h
+281 1026(W)s
+-3(eb)h
+13(pro)h
+-1(vides)h
+14(macros)h
+13(with)h
+13(at)h
+14(most)h
+12(one)h
+14(parameter.)h
+18(Kn)h
+-1(uth)h
+14(describ)h
+1(es)h
+16(a)h
+13(hac)h
+-1(k)h
+14(that)h
+14(can)h
+14(extract)h
+281 1076(a)s
+11(m)h
+-1(ultiple)h
+10(parameter)h
+11(macro)h
+11(facilit)h
+-1(y)h
+10(from)h
+10(a)h
+11(single)h
+11(parameter)h
+12(one,)h
+12(but)h
+12(it)h
+11(is)h
+11(hardly)h
+12(satisfactory)h
+-3(.)h
+281 1156(W)s
+-3(eb)h
+13(do)h
+1(es)h
+15(not)h
+14(pro)h
+-1(vide)h
+14(conditionals.)h
+177 1262(Most)s
+19(of)h
+17(these)h
+20(ob)h
+2(jections)h
+19(b)h
+1(oiled)h
+17(do)h
+-1(wn)h
+18(to)h
+18(t)h
+-1(w)h
+-1(o)h
+18(p)h
+1(oin)h
+-1(ts:)h
+27(that)h
+18(W)h
+-3(eb)h
+18(is)h
+18(far)h
+18(to)h
+1(o)h
+18(sp)h
+1(ecialized,)h
+20(and)h
+18(that)h
+177 1312(Kn)s
+-1(uth's)h
+19(\\Occam's)h
+18(Razor")h
+19(had)h
+19(cut)h
+19(to)h
+1(o)h
+19(far.)h
+33(What)h
+18(I)h
+19(w)h
+-1(an)h
+-1(ted)h
+19(w)h
+-1(as)h
+19(a)h
+18(do)h
+1(cumen)h
+-1(tation)h
+18(system)h
+19(that)h
+177 1362(emplo)s
+-1(y)h
+-1(ed)h
+11(all)h
+11(the)h
+13(same)h
+12(principles)h
+13(as)h
+12(W)h
+-3(eb)h
+12(but)h
+13(w)h
+-1(as)h
+13(far)h
+12(more)h
+11(general.)h
+18(The)h
+13(result)h
+13(w)h
+-1(as)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(V1,)h
+177 1412(whic)s
+-1(h)h
+14(can)h
+14(pro)h
+1(cess)h
+16(programs)h
+12(in)h
+13(an)h
+-1(y)h
+14(language)h
+13(or)h
+14(an)h
+-1(y)h
+13(com)h
+-1(binatio)h
+-1(n)h
+12(of)h
+13(languages)h
+14(at)h
+13(the)h
+15(cost)h
+14(of)h
+13(t)h
+-1(yp)h
+1(e-)h
+177 1461(setting)s
+14(the)h
+15(text)h
+14(in)h
+167(.)h
+177 1533(Originally)s
+-3(,)h
+13(it)h
+15(w)h
+-1(as)h
+15(in)h
+-1(tended)h
+16(that)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(w)h
+-1(ould)h
+15(b)h
+1(e)h
+16(t)h
+-1(yp)h
+1(esetter)h
+17(indep)h
+1(enden)h
+-1(t)h
+17(as)h
+15(w)h
+-1(ell)h
+14(as)h
+16(language)h
+177 1583(indep)s
+1(enden)h
+-1(t.)h
+23(It)h
+15(w)h
+-1(as)h
+14(in)h
+-1(tended)h
+16(that)h
+15(a)h
+14(format)h
+13(\014le)h
+15(consisting)h
+15(of)h
+15(a)h
+14(set)h
+16(of)h
+14(pro)h
+1(ductions)h
+16(describing)h
+15(ho)h
+-1(w)h
+177 1633(the)s
+16(do)h
+1(cumen)h
+-1(t)h
+14(\014le)h
+16(w)h
+-1(as)h
+15(to)h
+14(b)h
+1(e)h
+16(formatted)h
+14(w)h
+-1(ould)h
+14(b)h
+1(e)h
+16(handed)h
+16(to)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+15(along)h
+14(with)h
+15(the)h
+15(input)h
+15(\014le.)h
+177 1683(In)s
+19(the)h
+19(end,)h
+19(time)h
+17(pressure)h
+1(s)h
+20(forced)h
+19(me)h
+18(to)h
+18(tak)h
+-1(e)h
+18(the)h
+19(bac)h
+-1(k)h
+19(do)h
+1(or)h
+18(and)h
+18(hac)h
+-1(k)h
+19(up)h
+18(a)h
+18(T)h
+1627 1692(E)s
+1650 1683(X)s
+19(do)h
+1(cumen)h
+-1(t)h
+18(\014le)h
+177 1732(generator.)s
+19(This)h
+14(comprom)h
+-1(ise)h
+12(has)h
+14(found)h
+13(its)h
+14(w)h
+-1(a)h
+-1(y)h
+13(in)h
+-1(to)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(V3.0)h
+13(whic)h
+-1(h)h
+13(is)h
+14(still)h
+12(relian)h
+-1(t)h
+14(on)h
+13(T)h
+1883 1741(E)s
+1906 1732(X,)s
+177 1782(although)s
+12(V3.0)h
+12(at)h
+13(least)h
+13(encourages)h
+14(input)h
+13(\014les)h
+13(to)h
+13(b)h
+1(e)h
+13(t)h
+-1(yp)h
+1(esetter)h
+15(indep)h
+1(enden)h
+-1(t.)h
+19(It)h
+13(is)h
+13(hop)h
+1(ed)h
+13(that)h
+13(future)h
+177 1832(v)s
+-1(ersions)h
+15(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(will)h
+13(include)h
+14(more)h
+12(sophisticated)h
+15(t)h
+-1(yp)h
+1(esetting)h
+15(facilities.)h
+177 2103(A)s
+12(macro)h
+11(call)h
+12(that)h
+12(do)h
+1(es)h
+13(not)h
+12(app)h
+1(ear)h
+13(at)h
+12(the)h
+13(left)h
+11(margin)h
+11(is)h
+12(called)h
+12(an)h
+431(and)h
+12(seems)h
+177 2153(to)s
+11(lead)h
+12(to)h
+11(three)h
+12(di\013eren)h
+-1(t)h
+13(alternativ)h
+-1(es)h
+11(for)h
+11(its)h
+12(expansion:)h
+319(,)h
+377(,)h
+9(and)h
+517 2202(.)s
+16(Here)h
+15(are)h
+14(examples)h
+13(of)h
+13(eac)h
+-1(h)h
+15(kind)h
+13(of)h
+13(inden)h
+-1(tation.)h
+18(First)h
+14(the)h
+14(example)h
+13(problem.)h
+177 2763(There)s
+15(are)h
+15(three)h
+15(w)h
+-1(a)h
+-1(ys)h
+13(that)h
+14(the)h
+15(second)h
+15(line)h
+13(of)h
+13(the)h
+138(macro)h
+12(can)h
+14(b)h
+1(e)h
+15(inden)h
+-1(ted.)h
+1042 2940(12)s
+13 @eop
+14 @bop0
+cmti10.300 sf
+[<001F80000380000380000700000700000700000700000E00000E00000E00000E0003DC
+00063C000C3C00181C00383800303800703800703800E07000E07000E07000E07000E0E2
+00C0E200C0E20061E4006264003C3800>
+24 29 -5 28 21] 100 dc
+cmtt10.300 sf
+[<FC07E0FE0FE0FE0FE03A0B803B1B803B1B803B1B803B1B803B1B803BBB8039B38039B3
+8039B38039B38039F38038E38038E380380380380380380380380380380380FE0FE0FE0F
+E0FE0FE0>
+24 25 -1 24 22] 77 dc
+[<00E001E007C007000F001E003C0038007800700070007000F000E000E000E000E000E0
+00E000E000F000700070007000780038003C001E000F00070007C001E000E0>
+16 33 -6 28 22] 40 dc
+[<E000F0007C001C001E000F000780038003C001C001C001C001E000E000E000E000E000
+E000E000E001E001C001C001C003C0038007800F001E001C007C00F000E000>
+16 33 -4 28 22] 41 dc
+[<7F1FC07F3FC07F1FC00F1C00073C0003B80003F00001F00000E00001E00001F00003B8
+00073C00071C000E0E007F1FC0FF3FE07F1FC0>
+24 18 -1 17 22] 120 dc
+[<70F8F8F870000000000000000070F8F8F870>
+8 18 -8 17 22] 58 dc
+[<01C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF8001C0
+0001C00001C00001C00001C00001C00001C00001C000>
+24 19 -2 21 22] 43 dc
+[<387C7C7C380000000000000000387C7C7C3C1C3C38F8F060>
+8 24 -7 17 22] 59 dc
+14 @bop1
+cmti10.300 sf
+1834 2002(clarity)s
+1147 2051(danger)s
+cmbx10.300 sf
+177 252(Blank)s
+15(inden)h
+-1(t)h
+-1(ati)h
+-1(on:)h
+177 572(T)s
+-4(ext)h
+16(inden)h
+-2(tati)h
+-1(on)h
+-1(:)h
+cmtt10.300 sf
+286 42(ZebraAardvark)s
+286 91(Walrus)s
+286 141(Giraffe)s
+286 362(ZebraAardvark)s
+395 412(Walrus)s
+286 462(Giraffe)s
+286 683(ZebraAardvark)s
+286 733(ZebraWalrus)s
+286 783(Giraffe)s
+1530 1043(--)s
+177 2271(--Misuse)s
+20(of)h
+22(blank)h
+20(\(and)h
+21(no\))h
+22(indentation)h
+-1(.)h
+177 2320(--@<Sloth@>)s
+340 2490(--)s
+670(@<Sloth@>)h
+703 2539(--)s
+1146 2589(@<Sloth@>)s
+177 2785(--Misuse)s
+20(of)h
+22(text)h
+21(indentation)h
+-1(:)h
+177 2835(a++;)s
+21(@<Sloth@>)h
+cmr10.300 sf
+177 893(No)s
+16(inden)h
+-1(tation)h
+15(is)h
+16(useful)h
+16(where)h
+18(the)h
+16(user)h
+17(wishes)h
+17(to)h
+16(deal)h
+16(with)h
+16(the)h
+16(output)h
+16(stream)h
+16(as)h
+16(a)h
+16(pure)h
+17(output)h
+177 943(stream.)s
+17(Blank)h
+11(inden)h
+-1(tation)h
+11(is)h
+11(useful)h
+11(when)h
+12(the)h
+12(user)h
+13(wishes)h
+12(to)h
+11(generate)h
+12(inden)h
+-1(ted)h
+12(computer)h
+11(programs.)h
+177 993(T)s
+-3(ext)h
+15(inden)h
+-1(tation)h
+14(is)h
+14(useful)h
+15(where)h
+16(the)h
+15(user)h
+16(wishes)h
+15(to)h
+15(pre\014x)h
+15(eac)h
+-1(h)h
+16(line)h
+14(of)h
+14(an)h
+14(en)h
+-1(tire)h
+16(macro)h
+13(in)h
+-1(v)h
+-1(o)h
+1(cation)h
+177 1043(with)s
+9(a)h
+10(string.)h
+16(This)h
+10(can)h
+9(b)h
+1(e)h
+11(useful)h
+9(for)h
+9(commen)h
+-1(ting)h
+7(out)h
+10(co)h
+1(de)h
+10(\(e.g.)h
+9(in)h
+9(Ada)h
+9(using)h
+54(\),)h
+9(and)h
+10(for)h
+9(prep)h
+1(ending)h
+177 1092(things)s
+14(lik)h
+-1(e)h
+13(a)h
+14(dollar)h
+12(sign)h
+14(at)h
+14(the)h
+14(start)h
+15(of)h
+13(eac)h
+-1(h)h
+14(line)h
+14(an)h
+13(a)h
+14(V)h
+-5(AX)h
+15(VMS)h
+14(DCL)h
+13(script)h
+15(comm)h
+-1(and)h
+12(\014le.)h
+177 1168(F)s
+-3(unnelW)h
+-3(eb)h
+13(V1)h
+14(pro)h
+-1(vided)h
+14(a)h
+13(c)h
+-1(hoice)h
+15(of)h
+13(no)h
+14(inden)h
+-1(tation)h
+13(or)h
+14(blank)h
+13(inden)h
+-1(tation.)h
+17(The)h
+14(c)h
+-1(hoice)h
+15(w)h
+-1(as)h
+14(made)h
+12(in)h
+177 1218(the)s
+15(comm)h
+-1(and)h
+12(line)h
+13(and)h
+14(could)h
+14(not)h
+13(b)h
+1(e)h
+15(o)h
+-1(v)h
+-1(erridden.)h
+177 1294(The)s
+14(design)h
+15(questions)h
+14(are)h
+14(as)h
+14(follo)h
+-1(ws:)h
+228 1414(1.)s
+20(Whic)h
+-1(h)h
+13(of)h
+14(the)h
+14(three)h
+15(kinds)h
+14(of)h
+13(inden)h
+-1(tation)h
+14(should)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(supp)h
+1(ort?)h
+228 1499(2.)s
+20(What)h
+13(should)h
+14(b)h
+1(e)h
+15(the)h
+14(gran)h
+-1(ularit)h
+-1(y)h
+13(of)h
+13(sw)h
+-1(apping)h
+13(b)h
+1(et)h
+-1(w)h
+-1(een)h
+15(inden)h
+-1(tation)h
+14(mo)h
+1(des?)h
+228 1585(3.)s
+20(Are)h
+15(particular)h
+13(inden)h
+-1(tation)h
+14(mo)h
+1(des)h
+13(dangerous?)h
+228 1671(4.)s
+20(Is)h
+14(the)h
+15(presence)h
+16(of)h
+13(particular)h
+14(com)h
+-1(binatio)h
+-1(ns)h
+13(of)h
+13(inden)h
+-1(tation)h
+13(mo)h
+1(des)h
+13(confusing)h
+14(to)h
+14(the)h
+14(user?)h
+228 1756(5.)s
+20(Ho)h
+-1(w)h
+13(and)h
+14(when)h
+15(should)h
+13(the)h
+15(c)h
+-1(hoice)h
+14(of)h
+13(inden)h
+-1(tation)h
+14(b)h
+1(e)h
+14(sp)h
+1(eci\014ed?)h
+177 1876(All)s
+17(sorts)h
+18(of)h
+17(sc)h
+-1(hemes)h
+17(w)h
+-1(ere)h
+19(considered,)h
+19(including)h
+16(a)h
+17(\014nely)h
+17(grained)h
+17(system)h
+18(in)h
+16(whic)h
+-1(h)h
+18(the)h
+18(user)h
+18(could)h
+177 1926(sp)s
+1(ecify)h
+13(at)h
+13(the)h
+13(p)h
+1(oin)h
+-1(t)h
+12(of)h
+12(call)h
+12(whic)h
+-1(h)h
+12(inden)h
+-1(tation)h
+12(mo)h
+1(de)h
+11(should)h
+13(b)h
+1(e)h
+13(used)h
+13(for)h
+13(the)h
+13(called)h
+12(macro)h
+11(expansion.)h
+177 2002(After)s
+10(a)h
+9(lot)h
+9(of)h
+9(though)h
+-1(t,)h
+9(the)h
+11(domi)h
+-1(nan)h
+-1(t)h
+8(factor)h
+9(that)h
+10(should)h
+9(a\013ect)h
+10(the)h
+10(design)h
+10(w)h
+-1(as)h
+9(decided)h
+10(to)h
+10(b)h
+1(e)h
+10(the)h
+177 2051(in)s
+14(the)h
+14(user's)h
+15(mind)h
+12(of)h
+13(the)h
+15(inden)h
+-1(tation)h
+13(facilit)h
+-1(y)h
+12(and)h
+14(the)h
+150(asso)h
+1(ciated)h
+14(with)h
+14(misunderstanding)h
+13(it.)h
+177 2101(Here)s
+12(are)h
+11(t)h
+-1(w)h
+-1(o)h
+10(examples)h
+9(that)h
+11(sho)h
+-1(w)h
+10(ho)h
+-1(w)h
+10(easily)h
+10(a)h
+11(confusion)h
+10(or)h
+10(misunderstanding)h
+10(of)h
+10(the)h
+11(inden)h
+-1(ting)h
+10(b)h
+1(eing)h
+177 2151(used)s
+15(can)h
+14(cause)h
+15(danger.)h
+18(The)h
+15(\014rst)h
+14(example)h
+13(sho)h
+-1(ws)h
+14(ho)h
+-1(w)h
+14(blank)h
+13(or)h
+14(no)h
+13(inden)h
+-1(tation)h
+13(migh)h
+-1(t)h
+12(b)h
+1(e)h
+15(misused.)h
+177 2440(Here)s
+19(the)h
+19(user)h
+19(has)h
+19(assumed)h
+17(that)h
+18(text)h
+19(inden)h
+-1(tation)h
+17(is)h
+18(in)h
+18(action)h
+18(and)h
+18(has)h
+18(placed)h
+18(an)h
+18(Ada)h
+18(comm)h
+-1(en)h
+-1(t)h
+177 2490(sym)s
+-1(b)h
+1(ol)h
+12(\\)h
+44(")h
+12(b)h
+1(efore)h
+14(the)h
+14(in)h
+-1(v)h
+-1(o)h
+1(cation)h
+12(of)h
+13(the)h
+14(macro)h
+221(in)h
+13(the)h
+14(hop)h
+1(e)h
+14(that)h
+13(the)h
+14(en)h
+-1(tire)h
+14(text)h
+14(of)h
+13(the)h
+177 2539(macro)s
+10(w)h
+-1(ould)h
+11(b)h
+1(e)h
+11(pre\014xed)h
+13(b)h
+-1(y)h
+11(\\)h
+44(".)h
+16(The)h
+12(result)h
+12(could)h
+11(b)h
+1(e)h
+12(passed)h
+12(b)h
+-1(y)h
+11(the)h
+12(compiler)h
+9(whic)h
+-1(h)h
+12(w)h
+-1(ould)h
+10(activ)h
+-2(ate)h
+177 2589(all)s
+13(but)h
+14(the)h
+14(\014rst)h
+15(statemen)h
+-1(t)h
+14(in)h
+13(the)h
+15(expansion)h
+14(of)h
+13(macro)h
+211(.)h
+177 2665(The)s
+14(next)h
+15(example)h
+12(demonstrates)h
+15(ho)h
+-1(w)h
+13(text)h
+15(inden)h
+-1(tation)h
+13(could)h
+14(b)h
+1(e)h
+14(misused.)h
+1042 2940(13)s
+14 @eop
+15 @bop0
+/cmbx12.300 127 @newfont
+cmbx10.432 sf
+[<007F800003FFF00007FFFC001F81FE001F00FF003F80FF003F807F803FC07F803F807F
+803F807F801F007F800000FF800000FF000000FF000001FE000003F8000007F00000FFC0
+0000FFF0000001FC000000FF0000007F8000007FC000003FC000003FE000003FE000003F
+E03C003FE07E003FE0FF003FE0FF003FE0FF003FC0FF007FC0FE007F807C00FF803F01FF
+001FFFFC0007FFF00000FF8000>
+32 39 -3 38 34] 51 dc
+[<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC007FE00003FC000FF00003FC0007F8
+0003FC0007FC0003FC0003FC0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE
+0003FC0003FE0003FC0003FE0003FC0003FC0003FC0007F80003FC0007F80003FC001FE0
+0003FC007FC00003FFFFFE000003FFFFF0000003FC01FC000003FC007F000003FC007F80
+0003FC003FC00003FC003FC00003FC001FE00003FC001FE00003FC001FE00003FC001FE0
+0003FC001FF00003FC001FF00003FC001FF00003FC001FF00003FC001FF00703FC001FF8
+0703FC000FF80703FC000FFC0FFFFFF007FE1EFFFFF001FFFCFFFFF0003FF0>
+48 41 -3 40 52] 82 dc
+[<FFFE7FFC0FFEFFFE7FFC0FFEFFFE7FFC0FFE0FE007E000E007F003F001C007F003F001
+C007F807F803C003F807F8038003F807F8038001FC0EFC070001FC0EFC070001FE1EFC0F
+0000FE1C7E0E0000FE1C7E0E0000FF383F1E00007F383F1C00007F783F3C00003FF01FB8
+00003FF01FB800003FF01FF800001FE00FF000001FE00FF000000FC007E000000FC007E0
+00000FC007E00000078003C00000078003C000>
+48 27 -1 26 50] 119 dc
+[<007F806003FFF0E00FFFFFE01F807FE03F001FE07E0007E07E0003E07C0003E0FC0001
+E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFE00007FFFE0003FFFFC
+003FFFFF001FFFFF8007FFFFC003FFFFE000FFFFF00007FFF000007FF000000FF8000007
+F8000003F8E00003F8E00001F8E00001F8E00001F8F00001F8F00001F0F80003F0FC0003
+E0FF0007E0FFE01FC0FFFFFF00E0FFFE00C01FF000>
+32 41 -4 40 38] 83 dc
+[<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F000700007F800F00003F800E000
+03FC01E00001FC01C00001FC01C00000FE03800000FE038000007F070000007F07000000
+7F8F0000003F8E0000003FDE0000001FDC0000001FDC0000000FF80000000FF80000000F
+F800000007F000000007F000000003E000000003E000000001C000000001C00000000380
+0000000380000038078000007C07000000FE0F000000FE0E000000FE1E000000FE3C0000
+007C780000003FE00000000FC0000000>
+40 39 -1 26 36] 121 dc
+[<FFFC0FFF00FFFC0FFF00FFFC0FFF0007F003C00003F807800001FC07800000FE0F0000
+00FF1E0000007F3C0000003FF80000001FF00000000FF00000000FF000000007F0000000
+07F80000000FFC0000001FFE0000001EFE0000003C7F000000783F800000F01FC00001E0
+1FE00001C00FE00003C007F000FFF01FFF80FFF01FFF80FFF01FFF80>
+40 27 -1 26 36] 120 dc
+cmbx12.300 sf
+[<00180000780001F800FFF800FFF80001F80001F80001F80001F80001F80001F80001F8
+0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
+0001F80001F80001F80001F80001F80001F8007FFFE07FFFE0>
+24 32 -4 31 28] 49 dc
+[<387CFEFEFE7C38>
+8 7 -4 6 16] 46 dc
+[<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F00003
+E00007C0001F8001FE0001FF000007C00001F00001F80000FC0000FC3C00FE7E00FEFF00
+FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE00>
+24 32 -2 31 28] 51 dc
+[<FFFFFE0000FFFFFFC00007F007F00007F001F80007F000FC0007F0007E0007F0007F00
+07F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FC0007
+F001F80007F007F00007FFFFC00007FFFF800007F00FE00007F007F00007F003F80007F0
+01FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001
+FC0007F001FC0607F000FE0607F000FF0CFFFF803FF8FFFF800FF0>
+40 34 -2 33 42] 82 dc
+[<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC00
+00FC0000FC00007C00007C00007E00003E00181F00300FC07003FFC000FF00>
+24 22 -2 21 26] 101 dc
+[<FFE01FE0FFE01FE00F8006000F8006000FC00E0007C00C0007E01C0003E0180003E018
+0001F0300001F0300000F8600000F86000007CC000007CC000007FC000003F8000003F80
+00001F0000001F0000000E0000000E0000>
+32 22 -1 21 30] 118 dc
+[<1C003F007F007F007F003F001C000000000000000000000000000000FF00FF001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FF
+E0>
+16 36 -2 35 16] 105 dc
+[<FFE7FF07F8FFE7FF07F81F007800C00F807801800F807C01800F807C018007C07E0300
+07C0DE030007E0DE070003E0DF060003E18F060001F18F0C0001F38F8C0001FB079C0000
+FB07D80000FE03D800007E03F000007E03F000007C01F000003C01E000003800E0000018
+00C000>
+40 22 -1 21 40] 119 dc
+[<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC00
+7EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE00>
+24 22 -2 21 28] 111 dc
+[<003F8000FFC001E3E003C7E007C7E00F87E00F83C00F80000F80000F80000F80000F80
+000F8000FFFC00FFFC000F80000F80000F80000F80000F80000F80000F80000F80000F80
+000F80000F80000F80000F80000F80000F80000F80000F80000F80007FF8007FF800>
+24 35 -1 34 17] 102 dc
+[<FFF000000FFFFFF800001FFF07F800001FE006FC000037E006FC000037E006FC000037
+E0067E000067E0067E000067E0063F0000C7E0063F0000C7E0061F800187E0061F800187
+E0060FC00307E0060FC00307E0060FC00307E00607E00607E00607E00607E00603F00C07
+E00603F00C07E00601F81807E00601F81807E00601F81807E00600FC3007E00600FC3007
+E006007E6007E006007E6007E006003FC007E006003FC007E006001F8007E006001F8007
+E006001F8007E006000F0007E0FFF00F00FFFFFFF00600FFFF>
+48 34 -2 33 53] 77 dc
+[<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1
+F03F01F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F>
+24 22 -2 21 27] 97 dc
+[<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC00
+00FC0000FC00007C00007E00007E00003E00301F00600FC0E007FF8000FE00>
+24 22 -2 21 25] 99 dc
+[<FE1F00FE3FC01E67E01EC7E01E87E01E87E01F83C01F00001F00001F00001F00001F00
+001F00001F00001F00001F00001F00001F00001F00001F0000FFF000FFF000>
+24 22 -2 21 23] 114 dc
+[<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F0003F0007F0001F8007F0000FC0
+07F00007E007F00007E007F00007F007F00003F007F00003F007F00003F007F00003F807
+F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F0
+0003F807F00003F007F00003F007F00003F007F00007E007F00007E007F0000FC007F000
+1F8007F0003F0007F0007E0007F003FC00FFFFFFF000FFFFFF8000>
+40 34 -2 33 43] 68 dc
+[<000FF000007FFC0001F80E0003E01F0007C03F000F803F000F803F000F801E000F800C
+000F8000000F8000000F8000000F800000FFFFFF00FFFFFF000F801F000F801F000F801F
+000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F
+000F801F000F801F000F801F000F801F000F801F000F801F007FF0FFE07FF0FFE0>
+32 35 -1 34 31] 12 dc
+[<FF07E000FF1FF8001F307C001F403C001F803E001F803E001F003E001F003E001F003E
+001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E
+001F003E001F003E00FFE1FFC0FFE1FFC0>
+32 22 -2 21 31] 110 dc
+[<0180000180000180000180000380000380000780000780000F80003F8000FFFF00FFFF
+000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F81
+800F81800F81800F81800F81800F830007C30003FE0000F800>
+24 32 -1 31 22] 116 dc
+[<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000CF8000CFC000CFC0000FF00
+00FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF00007F00003F0000
+3FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF80>
+24 34 -3 33 31] 83 dc
+[<FFE01FE0FFE01FE00F8006000F8006000FC00E0007C00C0007E01C0003E0180003E018
+0001F0300001F0300000F8600000F86000007CC000007CC000007FC000003F8000003F80
+00001F0000001F0000000E0000000E0000000C0000000C00000018000078180000FC3800
+00FC300000FC60000069C000007F8000001F000000>
+32 32 -1 21 30] 121 dc
+[<FFE07FC0FFE07FC00F801C0007C0380003E0700003F0600001F8C00000F98000007F80
+00003F0000001F0000001F8000003FC0000037C0000063E00000C1F00001C0F8000380FC
+0007007E000E003E00FF80FFE0FF80FFE0>
+32 22 -1 21 30] 120 dc
+cmtt10.300 sf
+[<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F
+801FFF001FFE001FF8001C00001C00001C00001C00001C00001C00001C00007F0000FF80
+007F0000>
+24 25 -1 24 22] 80 dc
+[<01F18007FF800FFF801F0F803C0780780780780380700380F00000E00000E00000E000
+00E00000E00000E00000E00000F000007003807803807803803C07801F0F000FFE0007FC
+0001F000>
+24 25 -2 24 22] 67 dc
+15 @bop1
+cmbx10.300 sf
+177 1593(Decision:)s
+cmti10.300 sf
+1305 366(c)s
+-2(onfusion)h
+cmbx10.432 sf
+177 1907(1.3)s
+70(Review)h
+20(of)h
+24(F)h
+-6(unnelW)h
+-6(eb)h
+22(Syn)h
+-2(tax)h
+cmbx12.300 sf
+177 2415(1.3.1)s
+55(Review)h
+18(of)h
+18(Macro)h
+19(De\014nition)h
+18(Syn)h
+-2(tax)h
+cmtt10.300 sf
+837 42(@<Sloth@>)s
+633(a)h
+859 91(a++;)s
+806(@<Sloth@>)h
+1012 141(a)s
+1835 2173(==)s
+177 2685(@$@<Put)s
+21(out)h
+21(the)h
+21(cat@>==@{@-)h
+177 2735(Open)s
+21(the)h
+21(door)h
+177 2785(Say)s
+21(out)h
+177 2835(Close)s
+21(the)h
+21(door@})h
+cmr10.300 sf
+177 42(Here)s
+15(the)h
+15(user)h
+15(has)h
+14(placed)h
+14(the)h
+15(call)h
+13(to)h
+224(after)h
+14(the)h
+15(incremen)h
+-1(ting)h
+13(of)h
+13(v)h
+-2(ariable)h
+35(.)h
+18(The)h
+14(result)h
+15(is)h
+177 91(that)s
+13(there)h
+14(is)h
+12(a)h
+13(go)h
+1(o)h
+1(d)h
+12(c)h
+-1(hance)h
+14(that)h
+12(the)h
+14(\\)h
+88(")h
+11(prep)h
+1(ended)h
+15(to)h
+12(eac)h
+-1(h)h
+14(line)h
+12(of)h
+12(the)h
+13(expansion)h
+13(of)h
+177 141(will)s
+13(b)h
+1(e)h
+14(passed)h
+15(b)h
+-1(y)h
+14(the)h
+14(compiler)h
+13(and)h
+13(will)h
+13(cause)h
+50(to)h
+14(b)h
+1(e)h
+15(o)h
+-1(v)h
+-1(erincremen)h
+-1(ted.)h
+177 216(These)s
+16(examples)h
+14(are)h
+15(not)h
+15(to)h
+14(b)h
+1(e)h
+16(laughed)h
+14(at.)h
+20(It)h
+15(is)h
+15(p)h
+1(ossible)h
+14(that)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(will)h
+14(b)h
+1(e)h
+15(used)h
+16(widely)h
+-3(,)h
+13(and)h
+177 266(the)s
+15(problems)h
+13(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+14(ma)h
+-1(y)h
+13(cause)h
+15(problems)h
+13(in)h
+14(critical)h
+14(systems.)h
+20(The)h
+14(examples)h
+14(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+14(are)h
+15(particularly)h
+177 316(scary)s
+16(b)h
+1(ecause)h
+16(they)h
+16(are)h
+15(re\015exiv)h
+-1(e.)h
+22(One)h
+15(cannot)h
+15(simply)h
+13(pin)h
+14(the)h
+16(blame)h
+13(on)h
+15(one)h
+15(particular)h
+14(inden)h
+-1(tation)h
+177 366(form.)s
+17(A)h
+14(little)h
+14(though)h
+-1(t)h
+13(rev)h
+-1(eals)h
+15(that)h
+14(the)h
+15(greatest)h
+15(danger)h
+15(lies)h
+14(in)h
+198(in)h
+14(the)h
+14(user's)h
+16(mind.)h
+16(If)h
+14(the)h
+177 416(user)s
+15(is)h
+14(confused)h
+15(b)h
+1(et)h
+-1(w)h
+-1(een)h
+15(text)h
+14(or)h
+14(blank)h
+13(inden)h
+-1(ting,)h
+13(problems)h
+13(will)h
+13(arise.)h
+177 491(There)s
+20(seem)h
+18(to)h
+19(b)h
+1(e)h
+19(t)h
+-1(w)h
+-1(o)h
+18(w)h
+-1(a)h
+-1(ys)h
+18(to)h
+18(solv)h
+-1(e)h
+19(the)h
+19(problem.)h
+31(The)h
+19(\014rst)h
+19(is)h
+18(to)h
+19(ban)h
+18(all)h
+17(macro)h
+18(calls)h
+18(that)h
+18(are)h
+177 541(preceded)s
+17(b)h
+-1(y)h
+15(non-blank)h
+14(text.)h
+23(This)h
+15(is)h
+15(not)h
+15(a)h
+14(go)h
+1(o)h
+1(d)h
+15(option)h
+14(b)h
+1(ecause)h
+17(there)h
+17(are)h
+15(so)h
+15(man)h
+-1(y)h
+13(cases)h
+17(where)h
+16(it)h
+177 591(is)s
+16(desirable)h
+16(to)h
+15(expand)h
+16(more)h
+15(than)h
+15(one)h
+16(single)h
+16(line)h
+15(macros)h
+15(on)h
+15(the)h
+16(same)h
+15(line.)h
+23(A)h
+16(second)h
+16(option)h
+15(is)h
+16(to)h
+177 640(eliminate)s
+14(one)h
+16(of)h
+16(the)h
+16(t)h
+-1(w)h
+-1(o)h
+16(forms)h
+14(so)h
+16(as)h
+16(to)h
+16(reduce)h
+18(the)h
+16(p)h
+1(oten)h
+-1(tial)h
+16(for)h
+15(am)h
+-1(biguit)h
+-1(y)h
+13(in)h
+16(the)h
+16(user's)h
+17(mind.)h
+23(I)h
+177 690(c)s
+-1(ho)h
+1(ose)h
+17(the)h
+17(latter)h
+16(option.)h
+24(Of)h
+16(the)h
+16(t)h
+-1(w)h
+-1(o)h
+16(forms,)h
+15(the)h
+16(clear)h
+17(c)h
+-1(hoice)h
+16(for)h
+16(eliminati)h
+-1(on)h
+14(is)h
+16(text)h
+17(inden)h
+-1(ting)h
+15(for)h
+177 740(the)s
+15(follo)h
+-1(wi)h
+-1(ng)h
+12(reasons:)h
+228 858(1.)s
+20(It)h
+14(actually)h
+13(in)h
+-1(tro)h
+1(duces)h
+15(extra)h
+14(text)h
+15(whic)h
+-1(h)h
+13(giv)h
+-1(es)h
+14(it)h
+14(an)h
+13(a)h
+14(priori)h
+13(p)h
+1(oten)h
+-1(tial)h
+13(for)h
+14(problems.)h
+228 942(2.)s
+20(It)h
+14(is)h
+14(harder)h
+14(to)h
+14(implem)h
+-1(en)h
+-1(t)h
+12(and)h
+14(w)h
+-1(ould)h
+13(slo)h
+-1(w)h
+13(do)h
+-1(wn)h
+14(T)h
+-3(angle.)h
+228 1026(3.)s
+20(It)h
+14(w)h
+-1(ould)h
+13(not)h
+14(b)h
+1(e)h
+14(compatible)h
+12(with)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(V1)h
+14(whic)h
+-1(h)h
+14(uses)h
+15(blank)h
+13(inden)h
+-1(tation.)h
+177 1144(The)s
+18(only)h
+17(other)h
+18(decision)h
+18(is)h
+17(the)h
+19(lev)h
+-1(el)h
+17(of)h
+17(gran)h
+-1(ularit)h
+-1(y)h
+16(of)h
+17(c)h
+-1(hoice)h
+18(b)h
+1(et)h
+-1(w)h
+-1(een)h
+19(the)h
+18(remaining)h
+16(options:)h
+25(no)h
+177 1194(inden)s
+-1(tation)h
+11(and)h
+12(blank)h
+11(inden)h
+-1(tation.)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+11(V1)h
+12(allo)h
+-1(w)h
+-1(ed)h
+10(this)h
+12(c)h
+-1(hoice)h
+12(to)h
+12(b)h
+1(e)h
+12(made)h
+11(in)h
+11(the)h
+13(comm)h
+-1(and)h
+177 1243(line.)s
+27(In)h
+17(retrosp)h
+1(ec)h
+1(t,)h
+19(this)h
+17(w)h
+-1(as)h
+17(bad)h
+17(design)h
+17(b)h
+1(ecause)h
+19(the)h
+18(user)h
+18(migh)h
+-1(t)h
+15(un)h
+-1(wittingly)h
+15(co)h
+1(de)h
+18(certain)h
+18(macro)h
+177 1293(calls)s
+12(relying)h
+13(on)h
+12(one)h
+13(or)h
+13(the)h
+13(other)h
+14(mo)h
+1(de.)h
+16(A)h
+13(b)h
+1(etter)h
+14(system)h
+13(is)h
+12(to)h
+13(allo)h
+-1(w)h
+11(the)h
+13(user)h
+14(to)h
+13(sp)h
+1(ecify)h
+13(whic)h
+-1(h)h
+13(mo)h
+1(de)h
+177 1343(in)s
+14(the)h
+14(input)h
+14(\014le)h
+14(itself.)h
+17(This)h
+14(has)h
+14(b)h
+1(een)h
+15(done)h
+14(in)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(V3.)h
+177 1418(Again,)s
+20(to)h
+20(a)h
+-1(v)h
+-1(oid)h
+19(confusion,)h
+21(it)h
+20(seems)h
+20(sensible)h
+21(to)h
+20(allo)h
+-1(w)h
+18(the)h
+21(user)h
+21(only)h
+19(one)h
+20(inden)h
+-1(tation)h
+20(mo)h
+1(de)h
+19(p)h
+1(er)h
+177 1468(F)s
+-3(unnelW)h
+-3(eb)h
+14(input)h
+15(\014le.)h
+20(In)h
+15(most)h
+13(cases,)h
+16(the)h
+16(user)h
+15(will)h
+14(b)h
+1(e)h
+15(happ)h
+-1(y)h
+14(with)h
+15(blank)h
+14(inden)h
+-1(tation)h
+14(\(the)h
+15(default\))h
+177 1518(and)s
+14(there)h
+15(will)h
+12(b)h
+1(e)h
+15(no)h
+14(need)h
+15(for)h
+13(c)h
+-1(hange)h
+14(an)h
+-1(yw)h
+-1(a)h
+-1(y)h
+-3(.)h
+385 1593(Implem)s
+-1(en)h
+-1(t)h
+13(only)h
+14(\\no)h
+14(inden)h
+-1(tation")h
+13(and)h
+14(\\blank)h
+14(inden)h
+-1(tation".)h
+18(Mak)h
+-1(e)h
+14(the)h
+15(c)h
+-1(hoice)h
+15(of)h
+14(inden-)h
+177 1643(tation)s
+17(a)h
+17(static)h
+18(attribute)h
+18(of)h
+17(a)h
+17(particular)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(run)h
+17(that)h
+18(is)h
+17(sp)h
+1(eci\014ed)h
+19(in)h
+17(the)h
+19(input)h
+17(\014le.)h
+29(This)h
+177 1693(solution)s
+13(is)h
+14(the)h
+15(same)h
+13(as)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(V1)h
+14(except)h
+15(that)h
+14(the)h
+15(c)h
+-1(hoice)h
+14(has)h
+14(b)h
+1(een)h
+15(mo)h
+-1(v)h
+-1(ed)h
+13(from)h
+12(the)h
+15(comm)h
+-1(and)h
+177 1743(line)s
+14(to)h
+13(the)h
+15(input)h
+13(\014le.)h
+177 2023(One)s
+12(of)h
+10(the)h
+12(distressing)h
+12(asp)h
+1(ects)h
+13(of)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+11(V1)h
+10(w)h
+-1(as)h
+11(its)h
+11(clumsy)h
+10(macro)h
+10(de\014nition)h
+11(and)h
+11(calling)h
+9(syn)h
+-1(tax.)h
+177 2073(Compared)s
+14(to)h
+15(\(sa)h
+-1(y\))h
+15(the)h
+15(C)h
+15(prepro)h
+1(cess)h
+1(or,)h
+16(F)h
+-3(unnelW)h
+-3(eb's)h
+14(macro)h
+14(call)h
+14(syn)h
+-1(tax)h
+15(is)h
+15(lik)h
+-1(e)h
+14(a)h
+14(freigh)h
+-1(t)h
+15(train)h
+15(in)h
+14(a)h
+177 2123(c)s
+-1(hina)h
+16(sho)h
+-1(w.)h
+24(During)h
+15(the)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(redesign,)h
+17(a)h
+16(complete)h
+15(review)h
+16(of)h
+16(this)h
+15(syn)h
+-1(tax)h
+16(to)h
+1(ok)h
+16(place)h
+16(to)h
+16(try)h
+177 2173(to)s
+15(neaten)h
+16(it)h
+15(up.)h
+22(Surprisingly)h
+-3(,)h
+14(the)h
+16(V1)h
+15(syn)h
+-1(tax)h
+15(surviv)h
+-1(ed)h
+16(unscathed)h
+16(with)h
+15(the)h
+16(exception)h
+16(that)h
+15(\\)h
+44(")h
+14(in)h
+177 2223(macro)s
+16(de\014nitions)h
+18(w)h
+-1(as)h
+17(made)h
+17(optional.)h
+27(The)h
+18(surviv)h
+-2(al)h
+17(of)h
+17(this)h
+17(clumsy)h
+17(syn)h
+-1(tax)h
+17(w)h
+-1(as)h
+18(a)h
+17(pro)h
+1(duct)h
+18(of)h
+17(the)h
+177 2272(design)s
+14(goal)h
+13(of)h
+13(making)h
+12(ev)h
+-1(erything)h
+14(simple,)h
+12(explicit,)h
+13(and)h
+13(not)h
+14(sub)h
+2(ject)h
+16(to)h
+13(subtle)h
+15(errors.)h
+177 2518(F)s
+-3(unnelW)h
+-3(eb)h
+20(V1)h
+21(used)h
+21(a)h
+20(macro)h
+20(de\014nition)h
+20(syn)h
+-1(tax)h
+21(that)h
+20(resulted)h
+22(in)h
+20(macro)h
+20(de\014nitions)h
+20(suc)h
+-1(h)h
+21(as)h
+21(the)h
+177 2568(follo)s
+-1(wing.)h
+1042 2940(14)s
+15 @eop
+16 @bop0
+cmsy10.300 sf
+[<003C00E001C00180038003800380038003800380038003800380038003800380038003
+0007001C00F0001C00070003000380038003800380038003800380038003800380038003
+800380018001C000E0003C>
+16 41 -3 30 21] 102 dc
+[<F0001C0007000300038003800380038003800380038003800380038003800380038001
+8001C000E0003C00E001C001800380038003800380038003800380038003800380038003
+800380030007001C00F000>
+16 41 -3 30 21] 103 dc
+cmtt10.300 sf
+[<07E0001FFC007FFE00781F00780F00780700000700000F00000F00003E0007FC0007F8
+0007FC00001E00000700000780000380000380F00380F00780F00700F81F007FFE003FFC
+0007E000>
+24 25 -2 24 22] 51 dc
+[<387C7E7E3E0E1E3C7CF860>
+8 11 -7 4 22] 44 dc
+[<07E0001FF8007FFE00783F00F00F00F00780F00380F003800003800003800007800007
+00000F00001E00003C0000780000F00003E0000780000F00001E03803C03807FFF80FFFF
+807FFF80>
+24 25 -2 24 22] 50 dc
+16 @bop1
+cmsy10.300 sf
+677 141(f)s
+114(g)h
+517 191(f)s
+117(g)h
+cmbx10.300 sf
+177 1238(Decision:)s
+177 2835(Decision:)s
+cmtt10.300 sf
+1511 42(@$)s
+1823 91(@<)s
+177 141(@>)s
+434(@)h
+113(@)h
+431(@-)h
+495 191(@)s
+116(@)h
+690 260(+=)s
+135(==)h
+1618 310(+=)s
+177 458(@$@<Put)s
+21(out)h
+21(the)h
+21(cat@>@{)h
+177 507(Open)s
+21(the)h
+21(door)h
+177 557(Say)s
+21(out)h
+177 607(Close)s
+21(the)h
+21(door@})h
+538 705(+=)s
+177 921(@<Put)s
+21(out)h
+21(the)h
+21(cat@>)h
+177 971(Open)s
+21(the)h
+21(door)h
+177 1021(Say)s
+21(out)h
+177 1071(Close)s
+21(the)h
+21(door@})h
+1113 1238(+=)s
+88(==)h
+177 1385(@$@<Put)s
+21(out)h
+21(the)h
+21(cat@>@{)h
+177 1435(Open)s
+21(the)h
+21(door)h
+177 1485(Say)s
+21(out)h
+177 1534(Close)s
+21(the)h
+21(door@})h
+177 1779(@$@<Put)s
+21(out)h
+21(the)h
+21(cat@>@\(@3@\)=)h
+-1(=@{@-)h
+177 1829(Open)s
+21(the)h
+21(door)h
+177 1879(Say)s
+21(out)h
+177 1929(Close)s
+21(the)h
+21(door@})h
+177 2124(@$@<Put)s
+21(out)h
+21(the)h
+21(cat@>@\(@1@,@)h
+-1(2@,@3)h
+-1(@\)==@)h
+-1({@-)h
+177 2174(Open)s
+21(the)h
+21(door)h
+177 2224(Say)s
+21(out)h
+177 2273(Close)s
+21(the)h
+21(door@})h
+177 2518(@$@<Put)s
+21(out)h
+21(the)h
+21(cat@>@3==@{@)h
+-1(-)h
+177 2568(Open)s
+21(the)h
+21(door)h
+177 2618(Say)s
+21(out)h
+177 2668(Close)s
+21(the)h
+21(door@})h
+888 2835(@\(@3@\))s
+cmr10.300 sf
+177 42(This)s
+16(is)h
+15(messy)h
+-3(,)h
+15(but)h
+16(I)h
+16(couldn't)h
+15(think)h
+16(of)h
+15(an)h
+-1(ything)h
+15(b)h
+1(etter)h
+17(at)h
+15(the)h
+17(time.)h
+22(The)h
+75(is)h
+16(necessary)h
+18(to)h
+15(cue)h
+17(a)h
+177 91(de\014nition.)s
+21(Without)h
+14(it,)h
+15(the)h
+15(de\014nition)h
+15(migh)h
+-1(t)h
+13(someho)h
+-1(w)h
+13(b)h
+1(e)h
+16(mistak)h
+-1(en)h
+14(for)h
+14(an)h
+15(in)h
+-1(v)h
+-1(o)h
+1(cation.)h
+20(The)h
+74(and)h
+234 141(delimi)s
+-1(t)h
+11(the)h
+14(name.)h
+17(The)h
+69(and)h
+68(delimit)h
+11(the)h
+13(text.)h
+19(The)h
+70(is)h
+12(a)h
+13(pro)h
+1(duct)h
+14(of)h
+12(the)h
+14(rule)h
+13(\\exactly)h
+13(the)h
+177 191(text)s
+15(b)h
+1(et)h
+-1(w)h
+-1(een)h
+15(the)h
+71(and)h
+57(".)h
+177 260(The)s
+14(only)h
+13(real)h
+14(target)h
+14(is)h
+14(the)h
+14(\\)h
+44(")h
+13(and)h
+13(\\)h
+44(")h
+13(whic)h
+-1(h)h
+14(really)h
+13(break)h
+14(all)h
+13(the)h
+14(rules)h
+14(and)h
+14(should)h
+13(b)h
+1(e)h
+15(c)h
+-1(hanged.)h
+177 310(Unfortunately)s
+14(I)h
+15(couldn't)h
+13(think)h
+14(of)h
+14(an)h
+-1(ything)h
+13(to)h
+14(c)h
+-1(hange)h
+15(them)h
+13(to.)h
+19(If)h
+14(there)h
+16(w)h
+-1(as)h
+14(no)h
+72(mec)h
+-1(hanism,)h
+12(w)h
+-1(e)h
+177 360(could)s
+14(use:)h
+177 705(In)s
+14(fact,)h
+13(elimi)h
+-1(nating)h
+68(is)h
+14(think)h
+-2(able)h
+12(b)h
+1(ecause)h
+16(it)h
+13(do)h
+1(es)h
+14(not)h
+14(app)h
+1(ear)h
+14(in)h
+13(man)h
+-1(y)h
+11(of)h
+13(m)h
+-1(y)h
+12(existing)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+177 754(source)s
+15(\014les.)h
+19(This)h
+14(indicates)h
+14(at)h
+13(least)h
+15(that)h
+13(it)h
+14(w)h
+-1(as)h
+14(not)h
+14(needed)h
+15(m)h
+-1(uc)h
+-1(h)h
+13(b)h
+-1(y)h
+13(m)h
+-1(yself.)h
+177 824(A)s
+14(minim)h
+-2(ali)h
+-1(st)h
+13(construct)h
+15(could)h
+14(b)h
+1(e)h
+177 1168(but)s
+14(this)h
+14(is)h
+14(to)h
+1(o)h
+14(dangerous)h
+14(for)h
+14(m)h
+-1(y)h
+12(tastes.)h
+383 1238(F)s
+-3(or)h
+11(compatibi)h
+-1(li)h
+-1(t)h
+-1(y)h
+9(reasons,)h
+12(retain)h
+12(the)h
+11(old)h
+65(and)h
+66(constructs,)h
+13(but)h
+11(mak)h
+-1(e)h
+9(them)h
+11(optional.)h
+177 1287(The)s
+14(new)h
+15(syn)h
+-1(tax)h
+14(for)h
+13(de\014ning)h
+14(macros)h
+13(is:)h
+177 1632(Next)s
+12(w)h
+-1(e)h
+11(turn)h
+12(to)h
+11(parameterized)h
+11(macro)h
+10(de\014nitions.)h
+17(A)h
+11(con)h
+-1(v)h
+-1(en)h
+-1(tional)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+11(parameterized)h
+11(macro)h
+177 1682(de\014nition)s
+14(lo)h
+1(oks)h
+13(lik)h
+-1(e)h
+13(this:)h
+177 2026(whic)s
+-1(h)h
+14(is)h
+14(a)h
+13(bit)h
+14(messy)h
+-3(.)h
+17(The)h
+14(natural)h
+14(alternativ)h
+-1(e)h
+13(is)h
+14(ev)h
+-1(en)h
+15(w)h
+-1(orse:)h
+177 2371(Th)s
+-1(us,)h
+12(just)h
+12(sp)h
+1(ecifying)h
+11(the)h
+12(n)h
+-1(um)h
+-1(b)h
+1(er)h
+11(of)h
+11(parameters)h
+12(seems)h
+12(sensible.)h
+18(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+12(p)h
+1(erhaps)h
+12(the)h
+12(syn)h
+-1(tax)h
+12(could)h
+177 2421(b)s
+1(e)h
+15(trimm)h
+-1(ed)h
+12(to)h
+177 2765(I)s
+14(decided)h
+15(to)h
+14(reject)h
+15(this)h
+14(in)h
+13(fa)h
+-1(v)h
+-1(our)h
+13(of)h
+14(the)h
+14(old)h
+13(syn)h
+-1(tax.)h
+384 2835(Retain)s
+14(the)h
+14(old)h
+13(syn)h
+-1(tax)h
+14(of)h
+13(.)h
+7(.)h
+7(.)h
+131(.)h
+7(.)h
+7(.)h
+1042 2940(15)s
+16 @eop
+17 @bop0
+cmbx10.432 sf
+[<00000E0000001E0000003E0000007E000000FE000000FE000001FE000003FE0000077E
+00000E7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E0001C07E0003807E
+0007007E000E007E000E007E001C007E0038007E0070007E00E0007E00FFFFFFF8FFFFFF
+F8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE
+00007FFFF8007FFFF8007FFFF8>
+32 39 -2 38 34] 52 dc
+[<FFFFFFF80000FFFFFFFF8000FFFFFFFFE00003FC001FF80003FC0007FC0003FC0001FE
+0003FC0000FF0003FC00007F8003FC00003FC003FC00001FC003FC00001FE003FC00001F
+E003FC00000FF003FC00000FF003FC00000FF003FC00000FF003FC00000FF803FC00000F
+F803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000F
+F803FC00000FF803FC00000FF803FC00000FF003FC00000FF003FC00000FF003FC00001F
+E003FC00001FE003FC00001FC003FC00003FC003FC00007F8003FC00007F0003FC0001FE
+0003FC0003FC0003FC001FF800FFFFFFFFE000FFFFFFFF8000FFFFFFFC0000>
+48 41 -3 40 53] 68 dc
+[<001FF80000FFFE0003F01F000FE03F801FC03F803F803F803F803F807F801F007F0000
+00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
+007F0000007F8000003F8001C03FC001C01FC003C00FE0078003F01F0000FFFC00001FE0
+00>
+32 27 -2 26 31] 99 dc
+[<FFC07F800FF000FFC1FFE03FFC00FFC783F0F07E000FCE03F9C07F000FDC01FB803F00
+0FF801FF003F800FF001FE003F800FF001FE003F800FF001FE003F800FE001FC003F800F
+E001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE0
+01FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001
+FC003F800FE001FC003F800FE001FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE1FFF
+C3FFF8FFFE1FFFC3FFF8>
+56 27 -3 26 60] 109 dc
+[<00FF81F003FFE7FC0FC1FE7C1F80FC7C3F80FE7C3F007E107F007F007F007F007F007F
+007F007F007F007F007F007F003F007E003F80FE001F80FC000FC1F8001FFFE00018FF80
+00380000003C0000003C0000003E0000003FFFF8003FFFFF001FFFFFC00FFFFFE007FFFF
+F01FFFFFF07E0007F87C0001F8F80001F8F80000F8F80000F8F80000F8FC0001F87E0003
+F03F0007E00FC01F8003FFFE00007FF000>
+32 40 -2 26 34] 103 dc
+cmbx12.300 sf
+[<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8FE01F87C01F83803F80003
+F80003F00003F00007E00007C0000F80001F00003E0000380000700000E01801C0180380
+180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF0>
+24 32 -3 31 28] 50 dc
+[<0003FE0080001FFF818000FF01E38001F8003F8003E0001F8007C0000F800F80000780
+1F800007803F000003803F000003807F000001807E000001807E00000180FE00000000FE
+00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000007E00
+0000007E000001807F000001803F000001803F000003801F800003000F8000030007C000
+060003F0000C0001F800380000FF00F000001FFFC0000003FE0000>
+40 34 -3 33 40] 67 dc
+[<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE0>
+16 35 -2 34 16] 108 dc
+[<FFFFFF00FFFFFFE007F007F007F001FC07F000FC07F0007E07F0007E07F0007F07F000
+7F07F0007F07F0007F07F0007F07F0007E07F0007E07F000FC07F001FC07F007F007FFFF
+E007FFFF0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
+0007F0000007F0000007F0000007F0000007F00000FFFF8000FFFF8000>
+32 34 -2 33 38] 80 dc
+[<FF07F007F000FF1FFC1FFC001F303E303E001F403E403E001F801F801F001F801F801F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F00FFE0FFE0FFE0FFE0FFE0FFE0>
+48 22 -2 21 48] 109 dc
+[<7FFFF07FFFF07C03E07007C0600FC0E01F80C01F00C03E00C07E0000FC0000F80001F0
+0003F03007E03007C0300F80701F80703F00603E00E07C03E0FFFFE0FFFFE0>
+24 22 -2 21 25] 122 dc
+[<0001FE000001FE0000003E0000003E0000003E0000003E0000003E0000003E0000003E
+0000003E0000003E0000003E0000003E0001FC3E0007FFBE000F81FE001F007E003E003E
+007E003E007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E
+00FC003E007C003E007C003E003E007E001E00FE000F83BE0007FF3FC001FC3FC0>
+32 35 -2 34 31] 100 dc
+cmtt10.300 sf
+[<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600000000060F0F060>
+8 25 -9 24 22] 33 dc
+[<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001FFC
+001FFC001FFC001C1C001C1C001C00001C00001C00001C00001C00001C0000FF8000FFC0
+00FF8000>
+24 25 -1 24 22] 70 dc
+[<1C303F78FFF8F7E061C0>
+16 5 -4 24 22] 126 dc
+[<FE0FE0FF1FE0FE0FE03803801C07001C07001C07001C07000E0E000E0E000E0E000E0E
+00060C00071C00071C00071C00071C0003180003B80003B80003B80001B00001F00001F0
+0000E000>
+24 25 -1 24 22] 86 dc
+[<E038F078F078F078F078F078F078F078E038E0386030>
+16 11 -4 24 22] 34 dc
+17 @bop1
+cmbx10.300 sf
+177 1291(Decision:)s
+177 2366(Decision:)s
+cmbx10.432 sf
+177 2538(1.4)s
+70(Do)h
+2(cum)h
+-1(e)h
+-1(n)h
+-2(t)h
+21(Structuring)h
+cmbx12.300 sf
+177 42(1.3.2)s
+55(Review)h
+18(of)h
+18(Macro)h
+19(Call)h
+19(Syn)h
+-2(tax)h
+177 1540(1.3.3)s
+55(Review)h
+18(of)h
+18(P)h
+-2(arameterized)h
+17(Macro)h
+19(Call)h
+18(Syn)h
+-2(tax)h
+cmtt10.300 sf
+177 270(Open)s
+21(the)h
+21(door)h
+177 320(@<Say)s
+21(Out@>)h
+195(@!)h
+21(FunnelWeb~V1)h
+20(style.)h
+177 370(Close)s
+21(the)h
+21(door)h
+177 470(Open)s
+21(the)h
+21(door)h
+177 520(@<Say)s
+21(out>@)h
+177 569(Close)s
+21(the)h
+21(door)h
+177 669(Open)s
+21(the)h
+21(door)h
+177 719(@"Say)s
+21(out@")h
+177 769(Close)s
+21(the)h
+21(door)h
+177 868(Open)s
+21(the)h
+21(door)h
+177 918(@\(Say)s
+21(out@\))h
+177 968(Close)s
+21(the)h
+21(door)h
+177 1068(Open)s
+21(the)h
+21(door)h
+177 1117(@<Say)s
+21(out>)h
+177 1167(Close)s
+21(the)h
+21(door)h
+1052 1340(@<say)s
+21(out>@)h
+177 1769(@<Say)s
+21(Out@>@\(@"fir)h
+-1(stpar)h
+-1(am@")h
+19(@,)h
+22(@"Secondpar)h
+-1(am@")h
+19(@,)h
+22(@"thirdparam)h
+-1(@")h
+20(@\))h
+1280 1893(@")s
+177 2066(@<Say)s
+21(Out@>@\(first)h
+-1(param)h
+-1(@,Sec)h
+-1(ondpa)h
+-1(ram@,)h
+-1(thir)h
+-1(dpara)h
+-1(m@\))h
+554 2239(@")s
+cmr10.300 sf
+177 147(Here)s
+15(are)h
+15(some)h
+13(ideas)h
+14(for)h
+13(alternativ)h
+-1(es)h
+14(to)h
+14(the)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(V1)h
+13(macro)h
+13(call)h
+13(syn)h
+-1(tax.)h
+397 1291(Con)s
+-1(tin)h
+-1(ue)h
+20(with)h
+20(the)h
+20(old)h
+20(notation.)h
+36(It)h
+20(ma)h
+-1(y)h
+18(not)h
+20(b)h
+1(e)h
+21(neat,)h
+22(but)h
+20(at)h
+20(least)h
+21(it)h
+19(is)h
+20(clear)h
+21(and)h
+177 1340(consisten)s
+-1(t.)h
+24(The)h
+16(main)h
+13(temptation)h
+14(is)h
+15(the)h
+16(format)h
+269(whic)h
+-1(h)h
+15(lo)h
+1(oks)h
+15(rather)h
+17(go)h
+1(o)h
+1(d.)h
+22(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+177 1390(it)s
+14(breaks)h
+14(the)h
+15(sp)h
+1(ecial)h
+14(sequence)h
+16(rational)h
+13(and)h
+13(hence)h
+16(is)h
+13(to)h
+1(o)h
+14(confusing.)h
+177 1646(F)s
+-3(unnelW)h
+-3(eb)h
+14(V1)h
+13(pro)h
+-1(vided)h
+14(a)h
+14(messy)h
+13(parameterized)h
+14(macro)h
+13(call)h
+13(syn)h
+-1(tax:)h
+177 1893(This)s
+16(syn)h
+-1(tax)h
+16(can)h
+16(b)h
+1(e)h
+16(cleaned)h
+17(up)h
+16(considerably)h
+16(b)h
+-1(y)h
+16(making)h
+13(the)h
+76(sym)h
+-1(b)h
+1(ols)h
+15(optional.)h
+22(This)h
+16(results)h
+17(in)h
+177 1942(calls)s
+14(suc)h
+-1(h)h
+14(as)h
+14(the)h
+15(follo)h
+-1(wi)h
+-1(ng:)h
+177 2189(As)s
+17(the)h
+17(\014rst)h
+17(form)h
+15(allo)h
+-1(ws)h
+15(the)h
+17(alignm)h
+-1(en)h
+-1(t)h
+15(of)h
+15(complicated)h
+16(parameters)h
+16(b)h
+-1(y)h
+16(allo)h
+-1(wing)h
+14(white)h
+17(space)h
+17(to)h
+16(b)h
+1(e)h
+177 2239(inserted)s
+17(outside)h
+16(the)h
+60(,)h
+15(and)h
+16(the)h
+16(second)h
+17(form)h
+14(is)h
+15(cleaner,)h
+17(b)h
+1(oth)h
+16(are)h
+16(retained)h
+16(simply)h
+14(b)h
+-1(y)h
+15(making)h
+13(the)h
+177 2289(quotes)s
+15(optional.)h
+384 2366(Mak)s
+-1(e)h
+14(the)h
+15(double)h
+13(quotes)h
+15(optional.)h
+177 2657(Exp)s
+1(erience)h
+19(with)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(V1,)h
+17(whic)h
+-1(h)h
+17(pro)h
+-1(vided)h
+17(only)h
+16(t)h
+-1(w)h
+-1(o)h
+17(lev)h
+-1(els)h
+17(of)h
+16(headings)h
+17(\(ma)h
+2(jor)h
+16(and)h
+16(minor\))h
+177 2707(pro)s
+-1(v)h
+-1(ed)h
+10(that)h
+11(there)h
+11(w)h
+-1(as)h
+10(a)h
+10(strong)h
+10(need)h
+11(for)h
+10(fully)h
+9(hierarc)h
+-1(hical)h
+10(m)h
+-1(ulti)h
+-1(ple-lev)h
+-1(el)h
+8(headings.)h
+17(The)h
+10(only)h
+10(question)h
+177 2757(w)s
+-1(as)h
+14(ho)h
+-1(w)h
+13(it)h
+14(should)h
+14(b)h
+1(e)h
+14(done.)h
+177 2835(Here)s
+15(are)h
+15(some)h
+13(ideas)h
+14(that)h
+14(w)h
+-1(ere)h
+14(considered.)h
+1042 2940(16)s
+17 @eop
+18 @bop0
+cmtt10.300 sf
+[<7FE000FFF8007FFC001C1E001C0F001C07001C07001C07001C07001C0F001C1E001FFC
+001FF8001FFC001C1C001C0E001C0E001C0E001C0E001C0E201C0E701C0E707F07E0FF87
+E07F03C0>
+24 25 -1 24 22] 82 dc
+[<7FFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0E0E000E00000E00000E00000E00000E0
+0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00007FC000FFE
+0007FC00>
+24 25 -1 24 22] 84 dc
+[<FFFEFFFEFFFE0380038003800380038003800380038003800380038003800380038003
+800380038003800380FFFEFFFEFFFE>
+16 25 -3 24 22] 73 dc
+[<03E0000FF8003FFC007C1E00780F00F00700E00700E00780E00780E00380F00780F007
+80780F803FFF803FFB800FE380000780000700300F00780E00781E00787C007FF8003FE0
+000F8000>
+24 25 -2 24 22] 57 dc
+18 @bop1
+cmsy10.300 sf
+239 2518(\017)s
+239 2601(\017)s
+239 2835(\017)s
+cmr10.300 sf
+177 2351(Cho)s
+1(osing)h
+19(b)h
+1(et)h
+-1(w)h
+-1(een)h
+21(these)h
+21(alternativ)h
+-1(es)h
+19(w)h
+-1(as)h
+20(not)h
+19(easy)h
+-3(.)h
+35(The)h
+20(follo)h
+-1(wing)h
+17(though)h
+-1(ts)h
+20(con)h
+-1(tributed)h
+20(to)h
+19(the)h
+177 2400(decision.)s
+281 2518(Syn)s
+-1(taxes)h
+14(that)h
+14(require)h
+15(visual)h
+13(coun)h
+-1(ting)h
+13(are)h
+15(probably)h
+13(not)h
+14(a)h
+13(go)h
+1(o)h
+1(d)h
+14(idea.)h
+281 2601(Syn)s
+-1(taxes)h
+14(that)h
+13(do)h
+13(not)h
+14(delimit)h
+11(the)h
+14(heading)h
+13(name)h
+12(someho)h
+-1(w)h
+13(are)h
+13(lik)h
+-1(ely)h
+12(to)h
+14(cause)h
+14(problems)h
+13(where)h
+281 2651(heading)s
+18(names)h
+17(are)h
+18(omitted.)h
+30(Users)h
+19(will)h
+17(b)h
+1(e)h
+19(tempted)h
+18(to)h
+18(start)h
+18(paragraphs)h
+19(after)h
+18(the)h
+19(start)h
+18(of)h
+281 2701(heading)s
+14(sym)h
+-1(b)h
+1(ol)h
+13(and)h
+14(the)h
+15(result)h
+15(is)h
+14(that)h
+15(the)h
+15(\014rst)h
+15(line)h
+14(of)h
+14(the)h
+15(paragraph)h
+14(will)h
+13(b)h
+1(e)h
+15(suc)h
+-1(k)h
+-1(ed)h
+15(in)h
+-1(to)h
+14(the)h
+281 2751(heading.)s
+281 2835(Ov)s
+-1(erloading)h
+13(the)h
+58(,)h
+13(.)h
+7(.)h
+7(.)h
+-1(,)h
+71(sequences)h
+16(is)h
+14(undesirable.)h
+1042 2940(17)s
+cmtt10.300 sf
+177 42(@*@<Main)s
+20(Program@>)h
+177 91(@**@<Read)s
+20(the)h
+21(Message@>)h
+177 141(@***@<Encrypt)s
+19(the)h
+21(Buffer@>)h
+177 241(@*@<Main)s
+20(Program@>)h
+177 291(@*@*@<Read)s
+20(the)h
+21(Message@>)h
+177 340(@*@*@*@<Encry)s
+-1(pt)h
+20(the)h
+21(Buffer@>)h
+177 440(@s@<Main)s
+20(Program@>)h
+177 490(@ss@<Read)s
+20(the)h
+21(Message@>)h
+177 540(@sss@<Encrypt)s
+19(the)h
+21(Buffer@>)h
+177 639(@s@<Main)s
+20(Program@>)h
+177 689(@s@s@<Read)s
+20(the)h
+21(Message@>)h
+177 739(@s@s@s@<Encry)s
+-1(pt)h
+20(the)h
+21(Buffer@>)h
+177 839(@S@<Main)s
+20(Program@>)h
+177 888(@SS@<Read)s
+20(the)h
+21(Message@>)h
+177 938(@SSS@<Encrypt)s
+19(the)h
+21(Buffer@>)h
+177 1038(@S@<Main)s
+20(Program@>)h
+177 1088(@S@S@<Read)s
+20(the)h
+21(Message@>)h
+177 1137(@S@S@S@<Encry)s
+-1(pt)h
+20(the)h
+21(Buffer@>)h
+177 1237(@A@<Main)s
+20(Program@>)h
+238(--)h
+22(The)h
+21(syntax)h
+20(finally)h
+21(chosen.)h
+177 1287(@B@<Read)s
+20(the)h
+21(Message@>)h
+177 1337(@C@<Encrypt)s
+20(the)h
+21(Buffer@>)h
+177 1436(@A)s
+22(Main)h
+21(Program)h
+177 1486(@B)s
+22(Read)h
+21(the)h
+21(Message)h
+177 1536(@C)s
+22(Encrypt)h
+20(the)h
+21(Buffer)h
+177 1636(@*A)s
+21(Main)h
+21(Program)h
+177 1685(@*B)s
+21(Read)h
+21(the)h
+21(Message)h
+177 1735(@*C)s
+21(Encrypt)h
+21(the)h
+21(Buffer)h
+177 1835(@1@<Main)s
+20(Program@>)h
+177 1885(@2@<Read)s
+20(the)h
+21(Message@>)h
+177 1934(@3@<Encrypt)s
+20(the)h
+21(Buffer@>)h
+177 1984(\(using)s
+21(@A..@I@)h
+20(as)h
+21(macro)h
+21(parameters)h
+20(or)h
+21(overload)h
+20(@1..@9\))h
+177 2084(@*@1@<Main)s
+20(Program@>)h
+177 2134(@*@2@<Read)s
+20(the)h
+21(Message@>)h
+177 2183(@*@3@<Encrypt)s
+19(the)h
+21(Buffer@>)h
+177 2233(\(using)s
+21(@A..@I@)h
+20(as)h
+21(macro)h
+21(parameters)h
+20(or)h
+21(overload)h
+20(@1..@9\))h
+585 2835(@1)s
+99(@9)h
+18 @eop
+19 @bop0
+cmtt10.300 sf
+[<FFC000FFC000FFC0001C00001C00001C00001C00001C00001C00001C00001C00001C00
+001C00001C00001C00001C00001C00001C00401C00E01C00E01C00E01C00E0FFFFE0FFFF
+E0FFFFE0>
+24 25 -1 24 22] 76 dc
+[<7FF800FFFE007FFF001C0F001C07801C03C01C01C01C01C01C01E01C00E01C00E01C00
+E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C03C01C07801C0F807FFF00FFFE
+007FF800>
+24 25 0 24 22] 68 dc
+cmti10.300 sf
+[<1E01832703874703874703838707018707010E07010E07011C0E021C0E021C0E021C0E
+04180C04181C04181C081C1C100C263007C3C0>
+24 18 -4 17 28] 119 dc
+[<01FFFFC0003C01C0003800C00038008000380080003800800070008000700080007020
+800070200000E0400000E0400000E0C00000FFC00001C0800001C0800001C0800001C080
+0003810000038000000380000003800000070000000700000007000000070000000F0000
+00FFF00000>
+32 28 -3 27 27] 70 dc
+[<FF83FF0FF03C007001C038007001803800F001003800F0020038017002003801700400
+380270040038027008001C047008001C047010001C087010001C087020001C107020001C
+107040001C207040001C207080001C407180001C407100001C807200001D807200001D00
+7400001E007400001E007800001C007800001C0070000018007000001800600000100060
+0000>
+40 29 -9 27 41] 87 dc
+[<3F00070007000E000E000E000E001C001C001C001C0039C03E60383038307038703870
+387038E070E070E070E060E0E0C0C0C1C0618063003C00>
+16 29 -5 28 19] 98 dc
+[<7FF0FF800F001C000E0018000E0010000E0010000E0010001C0020001C0020001C0020
+001C00200038004000380040003800400038004000700080007000800070008000700080
+00E0010000E0010000E0010000E0020000E0020000E0040000E004000060080000303000
+00104000000F800000>
+32 29 -9 27 31] 85 dc
+[<183C3C3C0404080810204080>
+8 12 -9 28 13] 39 dc
+cmbx10.432 sf
+[<0C0003000F803F000FFFFE000FFFFE000FFFFC000FFFF8000FFFE0000FFFC0000FFE00
+000E0000000E0000000E0000000E0000000E0000000E0000000E7FC0000FFFF8000F80FE
+000E007F000C003F8000003F8000001FC000001FC000001FE000001FE018001FE07E001F
+E0FE001FE0FE001FE0FE001FE0FE001FE0FE001FC078003FC078003F803C007F001F01FE
+000FFFFC0003FFF00000FF8000>
+32 39 -3 38 34] 53 dc
+[<03FE300FFFF03E03F07800F07000F0F00070F00070F80070FC0000FFE000FFFE007FFF
+C03FFFE01FFFF007FFF800FFFC0003FC0000FCE0007CE0003CF0003CF0003CF80078FC00
+78FF01F0F7FFC0C1FF00>
+24 27 -2 26 27] 115 dc
+[<0007F000003FFC0000FFFF0001FC0F0007F01F800FE03F800FC03F801FC03F803F803F
+803F801F007F8000007F0000007F0000007F000000FF000000FF0FC000FF3FF800FF70FE
+00FFE03F00FFC03F80FF801FC0FF801FC0FF801FC0FF001FE0FF001FE0FF001FE0FF001F
+E07F001FE07F001FE07F001FE07F001FE03F801FC03F801FC01F803F800FC03F8007E0FF
+0003FFFC0000FFF000003FC000>
+32 39 -3 38 34] 54 dc
+[<000003800000000007C00000000007C0000000000FE0000000000FE0000000000FE000
+0000001FF0000000001FF0000000003FF8000000003FF8000000003FF80000000073FC00
+00000073FC00000000F3FE00000000E1FE00000000E1FE00000001C0FF00000001C0FF00
+000003C0FF80000003807F80000007807FC0000007003FC0000007003FC000000E003FE0
+00000E001FE000001E001FF000001C000FF000001FFFFFF000003FFFFFF800003FFFFFF8
+0000780007FC0000700003FC0000700003FC0000E00001FE0000E00001FE0001E00001FF
+0001C00000FF0001C00000FF00FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE>
+48 41 -2 40 52] 65 dc
+[<7FFFFFFFFFC07FFFFFFFFFC07FFFFFFFFFC07F803FC03FC07E003FC007C078003FC003
+C078003FC003C070003FC001C0F0003FC001E0F0003FC001E0E0003FC000E0E0003FC000
+E0E0003FC000E0E0003FC000E0E0003FC000E000003FC0000000003FC0000000003FC000
+0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000
+0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000
+0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000
+0000003FC00000007FFFFFE000007FFFFFE000007FFFFFE000>
+48 40 -2 39 48] 84 dc
+[<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE07FFFFFC07FFFFFC07FFFFF
+8070000F0070001E0070003C00E0003800E0007800E000F0000001E0000003C0000003C0
+000007800000078000000F0000001F0000001F0000001F0000003F0000003F0000003E00
+00007E0000007E0000007E0000007E000000FE000000FE000000FE000000FE000000FE00
+0000FE000000FE000000FE000000FE000000380000>
+32 41 -4 40 34] 55 dc
+[<00003FF001800003FFFE0780000FFFFF8F80003FF007FF8000FF8001FF8001FE00007F
+8007FC00003F8007F800001F800FF000000F801FE000000F803FE0000007803FC0000007
+807FC0000003807FC0000003807FC000000380FF8000000000FF8000000000FF80000000
+00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
+00FF8000000000FF80000000007FC0000000007FC0000003807FC0000003803FC0000003
+803FE0000003801FE0000007800FF00000070007F800000F0007FC00001E0001FE00003C
+0000FF8000F800003FF007F000000FFFFFC0000003FFFF000000003FF80000>
+48 41 -4 40 50] 67 dc
+[<FFFFFC0000FFFFFC0000FFFFFC000003FC00000003FC00000003FC00000003FC000000
+03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003
+FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
+00000003FC00000003FC00000003FC0001C003FC0001C003FC0001C003FC0001C003FC00
+03C003FC00038003FC00038003FC00078003FC00078003FC000F8003FC000F8003FC001F
+8003FC007F8003FC01FF00FFFFFFFF00FFFFFFFF00FFFFFFFF00>
+40 41 -3 40 41] 76 dc
+cmbx10.300 sf
+[<001FE02000FFF8E003F80FE007C003E00F8001E01F0000E03E0000E03E0000607E0000
+607C000060FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0000
+007C0000607E0000603E0000603E0000C01F0000C00F80018007C0030003F80E0000FFFC
+00001FE000>
+32 28 -3 27 34] 67 dc
+[<003FE00001F07C0003C01E000F800F801F0007C01E0003C03E0003E07E0003F07C0001
+F07C0001F0FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001
+F87C0001F07E0003F07E0003F03E0003E03F0007E01F0007C00F800F8003C01E0001F07C
+00003FE000>
+32 28 -3 27 36] 79 dc
+[<FFE0FFE0FFE0FFE0>
+16 4 -1 10 16] 45 dc
+[<3FFF803C1F00303F00303E00607C0060FC0060F80001F00003F00007E00007C1800F81
+801F81801F03803E03007E07007C0F00FFFF00>
+24 18 -1 17 21] 122 dc
+19 @bop1
+cmtt10.300 sf
+471 42(@A)s
+48(@E)h
+393 91(@E)s
+1317(@F)h
+605 141(@O)s
+177 495(.fw)s
+1105(.fw)h
+645 1084(@)s
+862 2835(.CLD)s
+cmti10.300 sf
+293 2301(within)s
+13(F)h
+-3(unnelWeb)h
+723 2481(F)s
+-3(unnelWeb)h
+17(User's)h
+14(Manual)h
+cmbx10.432 sf
+177 321(1.5)s
+70(Discussion)h
+21(of)h
+24(Som)h
+-1(e)h
+21(Miscel)h
+-1(l)h
+-1(aneous)h
+22(Issues)h
+177 1314(1.6)s
+70(Autom)h
+-1(ated)h
+21(Regression)h
+22(T)h
+-6(esting)h
+177 2661(1.7)s
+70(Com)h
+-1(m)h
+-3(and)h
+22(Line)h
+22(In)h
+-2(terface)h
+cmbx10.300 sf
+177 42(Decision:)s
+1877 91(F)s
+177 445(Commen)s
+-1(t)h
+18(dupli)h
+-1(cation)h
+-1(:)h
+669 544(Decision)s
+-1(:)h
+177 625(Out-of-date)s
+17(do)h
+1(cumen)h
+-1(tat)h
+-1(ion)h
+-1(:)h
+1227 674(Decision:)s
+177 904(Meta-macro-lev)s
+-1(el)h
+16(parameterizati)h
+-1(on:)h
+1290 954(Decision:)s
+177 1084(Clumsy)s
+16(notation)h
+-1(:)h
+594(Decision:)h
+cmr10.300 sf
+389 42(Use)s
+61(.)h
+7(.)h
+7(.)h
+58(with)h
+16(optional)h
+15(follo)h
+-1(wi)h
+-1(ng)h
+14(macro)h
+15(name)h
+15(syn)h
+-1(tax)h
+16(for)h
+16(the)h
+17(section)h
+17(name.)h
+24(Note:)h
+177 91(W)s
+-3(e)h
+15(stop)h
+15(at)h
+73(b)h
+1(ecause)h
+17(\014v)h
+-1(e)h
+15(lev)h
+-1(els)h
+15(is)h
+15(probably)h
+14(su\016cien)h
+-1(t,)h
+16(and)h
+14(w)h
+-1(e)h
+16(ma)h
+-1(y)h
+13(wish)h
+14(later)h
+16(to)h
+14(use)h
+75(for)h
+44(ile)h
+177 141(\(to)s
+14(augmen)h
+-1(t)h
+13(or)h
+13(replace)h
+59(\).)h
+671 445(If)s
+17(the)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(user)h
+18(inserts)h
+18(commen)h
+-1(ts)h
+15(in)h
+-1(to)h
+17(the)h
+18(target)h
+17(co)h
+1(de)h
+18(\(in)h
+17(the)h
+255 495(\014le\))s
+12(as)h
+12(w)h
+-1(ell)h
+11(as)h
+12(in)h
+-1(to)h
+12(the)h
+12(do)h
+1(cumen)h
+-1(tation)h
+11(\(free)h
+13(text\))h
+13(part)h
+12(of)h
+12(the)h
+90(\014le,)h
+12(then)h
+13(it)h
+11(is)h
+12(p)h
+1(ossible)h
+12(for)h
+12(the)h
+177 544(situation)s
+13(to)h
+14(get)h
+14(a)h
+14(bit)h
+13(silly)h
+-3(.)h
+224(This)h
+14(is)h
+14(a)h
+13(problem)h
+13(for)h
+13(the)h
+15(programm)h
+-1(er,)h
+12(not)h
+14(for)h
+13(F)h
+-3(unnelW)h
+-3(eb.)h
+786 625(Sometim)s
+-1(es)h
+15(it)h
+17(is)h
+16(all)h
+16(to)h
+1(o)h
+17(easy)h
+17(for)h
+16(the)h
+18(programm)h
+-1(er)h
+15(to)h
+17(mo)h
+1(dify)h
+14(the)h
+177 674(co)s
+1(de)h
+18(without)h
+16(up)h
+1(dating)h
+16(the)h
+17(surrounding)h
+17(do)h
+1(cumen)h
+-1(tation.)h
+237(This)h
+16(is)h
+17(a)h
+16(serious)h
+17(and)h
+16(ma)h
+2(jor)h
+177 724(problem.)s
+27(In)h
+17(an)h
+17(automated)h
+16(en)h
+-1(vironmen)h
+-1(t,)h
+16(it)h
+17(ma)h
+-1(y)h
+15(b)h
+1(e)h
+18(p)h
+1(ossible)h
+17(to)h
+17(create)h
+19(a)h
+17(system)h
+17(of)h
+16(dep)h
+1(endencies)h
+177 774(b)s
+1(et)h
+-1(w)h
+-1(een)h
+17(scraps)h
+17(of)h
+14(co)h
+1(de)h
+16(and)h
+16(scraps)h
+16(of)h
+15(do)h
+1(cumen)h
+-1(tation.)h
+21(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+16(it)h
+15(is)h
+15(hard)h
+16(to)h
+15(see)h
+16(ho)h
+-1(w)h
+15(a)h
+15(to)h
+1(ol)h
+15(suc)h
+-1(h)h
+177 824(as)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(could)h
+14(pro)h
+-1(vide)h
+14(supp)h
+1(ort)h
+15(for)h
+13(prev)h
+-1(en)h
+-1(tion)h
+14(of)h
+14(this)h
+14(sort)h
+14(of)h
+13(error.)h
+949 904(Sometim)s
+-1(es,)h
+15(when)h
+17(using)h
+16(F)h
+-3(unnelW)h
+-3(eb,)h
+16(the)h
+16(facilit)h
+-1(y)h
+15(to)h
+16(use)h
+177 954(one)s
+11(macro)h
+10(to)h
+11(construct)h
+13(the)h
+11(name)h
+10(of)h
+11(another)h
+11(has)h
+11(b)h
+1(een)h
+12(needed.)h
+225(Allo)h
+-1(wing)h
+9(macro)h
+10(names)h
+10(to)h
+177 1004(b)s
+1(e)h
+14(constructed)h
+15(w)h
+-1(ould)h
+13(lose)h
+13(the)h
+14(simple)h
+11(nature)h
+14(of)h
+13(the)h
+14(prepro)h
+1(cessor)h
+15(and)h
+13(so)h
+14(this)h
+13(suggestion)h
+13(is)h
+13(rejected.)h
+559 1084(The)s
+51(notation)h
+13(can)h
+15(b)h
+1(e)h
+15(clumsy)h
+-3(.)h
+226(This)h
+15(is)h
+14(necessary)h
+16(to)h
+15(mai)h
+-1(n)h
+-1(tain)h
+12(the)h
+177 1134(simplicit)s
+-1(y)h
+12(of)h
+13(the)h
+14(translation.)h
+177 1438(Automated)s
+13(regression)h
+15(testing)h
+14(is)h
+14(extremely)h
+14(imp)h
+1(ortan)h
+-1(t)h
+12(for)h
+13(t)h
+-1(w)h
+-1(o)h
+14(reasons:)h
+228 1568(1.)s
+20(It)h
+14(pro)h
+-1(vides)h
+14(con\014dence)h
+16(that)h
+14(c)h
+-1(hanges)h
+14(made)h
+13(to)h
+14(the)h
+14(program)h
+12(ha)h
+-1(v)h
+-1(e)h
+14(not)h
+14(in)h
+-1(tro)h
+1(duced)h
+15(bugs.)h
+228 1662(2.)s
+20(It)h
+11(allo)h
+-1(ws)h
+9(p)h
+1(ortabilit)h
+-1(y)h
+9(problems)h
+10(to)h
+10(b)h
+1(e)h
+12(pinp)h
+1(oin)h
+-1(ted)h
+10(when)h
+11(the)h
+11(program)h
+9(is)h
+11(mo)h
+-1(v)h
+-1(ed)h
+9(to)h
+10(a)h
+10(new)h
+12(mac)h
+-1(hine.)h
+177 1792(The)s
+15(simplest)h
+13(w)h
+-1(a)h
+-1(y)h
+13(to)h
+14(set)h
+15(up)h
+15(automated)h
+12(regression)h
+16(testing)h
+14(is)h
+14(to)h
+14(construct)h
+16(a)h
+14(suite)h
+15(of)h
+13(test)h
+15(cases)h
+16(\(and)h
+177 1842(their)s
+14(solutions\))h
+12(and)h
+13(then)h
+14(write)h
+13(a)h
+13(script)h
+13(in)h
+13(the)h
+13(target)h
+14(mac)h
+-1(hine's)h
+11(command)h
+11(language)h
+12(to)h
+12(run)h
+14(through)h
+177 1892(the)s
+18(suite.)h
+29(Unfortunately)h
+-3(,)h
+17(there)h
+19(is)h
+17(no)h
+17(comm)h
+-1(and)h
+15(language)h
+17(that)h
+17(is)h
+17(shared)h
+18(among)h
+16(the)h
+18(mac)h
+-1(hines)h
+16(to)h
+177 1941(whic)s
+-1(h)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(m)h
+-1(ust)h
+14(b)h
+1(e)h
+15(p)h
+1(orted.)h
+22(These)h
+16(mac)h
+-1(hines)h
+14(are)h
+16(at)h
+14(least:)h
+20(Macin)h
+-1(tosh,)h
+15(IBM-PC,)h
+15(Sun,)h
+15(VMS)h
+177 1991(V)s
+-3(ax.)h
+177 2072(One)s
+16(option)h
+14(is)h
+15(simply)h
+13(to)h
+15(rewrite)h
+16(the)h
+16(script)h
+16(in)h
+14(eac)h
+-1(h)h
+16(mac)h
+-1(hine's)h
+13(particular)h
+15(comm)h
+-1(and)h
+13(language.)h
+21(This)h
+177 2121(w)s
+-1(ould)h
+15(b)h
+1(e)h
+17(a)h
+15(feasible)h
+16(option)h
+15(w)h
+-1(ere)h
+17(it)h
+15(not)h
+16(for)h
+15(the)h
+17(fact)h
+16(that)h
+16(the)h
+16(Macin)h
+-1(tosh)h
+16(\(the)h
+16(mac)h
+-1(hine)h
+15(up)h
+1(on)h
+16(whic)h
+-1(h)h
+177 2171(F)s
+-3(unnelW)h
+-3(eb)h
+14(w)h
+-1(as)h
+13(dev)h
+-1(elop)h
+1(ed\))h
+15(do)h
+1(es)h
+15(not)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(a)h
+14(comm)h
+-1(and)h
+12(language!)h
+177 2252(After)s
+13(some)h
+12(though)h
+-1(t,)h
+12(I)h
+12(decided)h
+14(that)h
+12(the)h
+13(b)h
+1(est)h
+14(solution)h
+12(to)h
+12(the)h
+13(problem)h
+11(w)h
+-1(as)h
+13(to)h
+12(create)h
+14(a)h
+12(comm)h
+-1(and)h
+11(lan-)h
+177 2301(guage)s
+338(.)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+12(could)h
+12(then)h
+13(b)h
+1(e)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+12(in)h
+11(t)h
+-1(w)h
+-1(o)h
+12(mo)h
+1(des,)h
+11(one-shot)h
+13(comm)h
+-1(and)h
+10(line)h
+177 2351(or)s
+15(in)h
+-1(teractiv)h
+-1(e/script.)h
+20(This)h
+15(approac)h
+-1(h)h
+14(had)h
+14(the)h
+15(b)h
+1(ene\014t)h
+16(of)h
+14(pro)h
+-1(viding)h
+13(total)h
+14(con)h
+-1(trol)h
+14(o)h
+-1(v)h
+-1(er)h
+14(the)h
+16(comm)h
+-1(and)h
+177 2401(language)s
+13(and)h
+14(its)h
+14(complete)h
+13(p)h
+1(ortabilit)h
+-1(y)h
+-3(.)h
+177 2481(The)s
+14(result)h
+15(is)h
+14(describ)h
+1(ed)h
+16(in)h
+13(the)h
+496(.)h
+177 2785(F)s
+-3(unnelW)h
+-3(eb)h
+12(V1)h
+12(w)h
+-1(as)h
+12(implem)h
+-1(en)h
+-1(ted)h
+11(in)h
+12(Ada)h
+12(and)h
+12(runs)h
+13(on)h
+12(a)h
+12(VMS)h
+12(V)h
+-5(AX.)h
+13(As)h
+13(suc)h
+-1(h)h
+13(it)h
+11(has)h
+13(a)h
+12(full)h
+11(VMS)h
+12(DCL)h
+177 2835(comma)s
+-1(nd)h
+12(line)h
+14(in)h
+-1(terface.)h
+18(Here)h
+15(is)h
+14(the)h
+15(\\)h
+88(")h
+12(\014le)h
+14(for)h
+14(the)h
+14(DCL)h
+14(comm)h
+-1(and)h
+12(line)h
+13(in)h
+-1(terface.)h
+1042 2940(18)s
+19 @eop
+20 @bop0
+cmbx10.432 sf
+[<003FC00001FFF00003FFFC000FC07E000F003F001F001F001E001F803E000F803E000F
+803F000F803F800F803FC01F803FF01F003FFC3F001FFE7E001FFFF8000FFFE00007FFF8
+0001FFFC0001FFFF0007FFFF801F8FFF803F03FFC07E01FFC07C007FE0FC001FE0F8000F
+E0F80007E0F80003E0F80003E0F80003E0FC0003C07C0007C07E0007803F000F801FC03F
+000FFFFC0003FFF800007FC000>
+32 39 -3 38 34] 56 dc
+[<FFFC0000FFFEFFFE0000FFFEFFFF0000FFFE03FF8000038003FFC000038003FFE00003
+8003BFE0000380039FF0000380038FF80003800387FC0003800387FE0003800383FE0003
+800381FF0003800380FF80038003807FC0038003807FE0038003803FF0038003801FF003
+8003800FF80380038007FC0380038003FE0380038003FF0380038001FF8380038000FF83
+800380007FC3800380003FE3800380001FF3800380001FFB800380000FFB8003800007FF
+8003800003FF8003800001FF8003800001FF8003800000FF80038000007F80038000003F
+80038000001F80038000000F80FFFE00000F80FFFE00000780FFFE00000380>
+48 41 -3 40 54] 78 dc
+cmti10.300 sf
+[<07870004D98008E0C008E0C011C0E011C0E001C0E001C0E00381C00381C00381C00381
+800703800703000707000706000E8C000E70000E00000E00001C00001C00001C00001C00
+003C0000FF8000>
+24 26 -1 17 21] 112 dc
+cmtt10.300 sf
+[<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01
+C01C01C01C01C01C01C01C01C01C01C01C01C01C01C00E03800E038007070007FF0003FE
+0000F800>
+24 25 0 24 22] 85 dc
+[<7E1FC0FF3FE07F1FC01D07001D87001D87001D87001DC7001DC7001CC7001CC7001CE7
+001CE7001CE7001C67001C67001C77001C77001C37001C37001C37001C17007F1F00FF9F
+007F0F00>
+24 25 -1 24 22] 78 dc
+[<07F0001FFC003FFE007C1F00F00780E00380E00380E003807007007C1F001FFC0007F0
+001FFC003C1E00700700F00780E00380E00380E00380F007807007007C1F003FFE001FFC
+0007F000>
+24 25 -2 24 22] 56 dc
+[<E00000FFFF80FFFF80FFFF80E00F00E01E00001C0000380000780000700000E00000E0
+0001C00001C00001C0000380000380000380000380000700000700000700000700000700
+00070000070000>
+24 26 -2 25 22] 55 dc
+[<FFFF80FFFF80FFFF80>
+24 3 -2 -2 22] 95 dc
+[<07C7001FF7003FFF007C3F00781F00F00F00F00700E00700E00700E00700E00700F007
+00F00F00781F007C3F003FFF001FF70007C7000007000007000007000007000007000007
+00003FE0007FF0003FE0>
+24 27 -2 17 22] 113 dc
+[<7F1F807F3F807F1F800E1E000E1C00073C0007380003B80003F00001F00001E00000E0
+0001E00001F00003F00003B80007B800071C00071C000E0E000E0E001C07007F1FC0FF1F
+E07F1FC0>
+24 25 -1 24 22] 88 dc
+[<1FFC003FFE007FFF00780F00F00780E00380E00380E00380E00380E00380E00380E003
+80E00380E00380E00380E00380E00380E00380E0E380E1E380F0F780787F007FFF003FFE
+001FFC00001C00001E00000E00000F00000700000700>
+24 31 -2 24 22] 81 dc
+20 @bop1
+cmbx10.432 sf
+177 1925(1.8)s
+70(File)h
+21(Nam)h
+-1(e)h
+21(Manageme)h
+-1(n)h
+-2(t)h
+cmti10.300 sf
+742 1174(dep)s
+-2(end)h
+723 1729(F)s
+-3(unnelWeb)h
+17(User's)h
+14(Manual)h
+cmtt10.300 sf
+177 42(!)s
+22(FUNNELWEB)h
+20(Command)h
+20(Definition)h
+177 91(!)s
+22(===========)h
+-1(=====)h
+-1(=====)h
+-1(=====)h
+-1(==)h
+177 141(!)s
+22(Ross)h
+21(Williams.)h
+20(28)h
+21(April)h
+21(1987.)h
+177 241(module)s
+21(command_tab)h
+-1(le)h
+243 291(define)s
+20(verb)h
+21(dummy_command)h
+243 340(parameter)s
+19(p1)h
+240(,)h
+21(label=input_fi)h
+-1(le)h
+63(,value\(required)h
+-1(,type)h
+-1(=$fi)h
+-1(le\))h
+243 390(qualifier)s
+19(include_files,)h
+19(label=include_)h
+-1(files)h
+-1(,valu)h
+-1(e\(typ)h
+-1(e=$fi)h
+-1(le\))h
+20(,default)h
+243 440(qualifier)s
+19(output_files)h
+20(,)h
+21(label=output_f)h
+-1(iles)h
+19(,value\(type=$fi)h
+-1(le\))h
+20(,default)h
+243 490(qualifier)s
+19(delete)h
+152(,)h
+21(label=delete)h
+565(,default)h
+243 540(qualifier)s
+19(tex_file)h
+108(,)h
+21(label=tex_file)h
+106(,value\(type=$fi)h
+-1(le\))h
+20(,default)h
+243 589(qualifier)s
+19(listing_file)h
+20(,)h
+21(label=listing_)h
+-1(file)h
+19(,value\(type=$fi)h
+-1(le\))h
+20(,default)h
+243 639(qualifier)s
+19(brief)h
+174(,)h
+21(label=brief,va)h
+-1(lue\(t)h
+-1(ype=$)h
+-1(numbe)h
+-1(r,def)h
+-1(ault=)h
+-1(5\),d)h
+-1(efaul)h
+-1(t)h
+243 689(qualifier)s
+19(screen)h
+152(,)h
+21(label=screen)h
+150(,value\(type=$nu)h
+-1(mber,)h
+-1(defa)h
+-1(ult=0)h
+-1(\))h
+243 739(qualifier)s
+19(trace)h
+174(,)h
+21(label=trace)h
+243 789(qualifier)s
+19(file_spec)h
+86(,)h
+21(label=file_spe)h
+-1(c)h
+243 839(qualifier)s
+19(compare)h
+344 1378(-X)s
+470(-Q)h
+cmr10.300 sf
+177 981(As)s
+16(p)h
+1(ortabilit)h
+-1(y)h
+15(w)h
+-1(as)h
+15(a)h
+16(k)h
+-1(ey)h
+16(goal)h
+14(of)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(V3,)h
+16(it)h
+15(w)h
+-1(as)h
+16(ob)h
+-1(vious)h
+15(that)h
+16(the)h
+16(comm)h
+-1(and)h
+14(line)h
+15(in)h
+-1(terface)h
+177 1031(w)s
+-1(ould)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(to)h
+14(b)h
+1(e)h
+14(redesigned.)h
+20(The)h
+14(design)h
+14(goals)h
+13(for)h
+14(the)h
+14(new)h
+14(command)h
+11(line)h
+14(in)h
+-1(terface)h
+14(w)h
+-1(ere:)h
+228 1174(1.)s
+20(The)h
+15(in)h
+-1(terface)h
+15(should)h
+14(not)h
+152(on)h
+14(case.)h
+21(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(it)h
+14(m)h
+-1(ust)h
+14(allo)h
+-1(w)h
+12(case-sensitiv)h
+-1(e)h
+16(\014lenames)h
+14(to)h
+281 1224(b)s
+1(e)h
+14(transmitted)h
+14(on)h
+13(systems)h
+15(that)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(case-sensitiv)h
+-1(e)h
+16(\014lenames.)h
+228 1328(2.)s
+20(Eac)h
+-1(h)h
+13(option)h
+12(m)h
+-1(ust)h
+12(ha)h
+-1(v)h
+-1(e)h
+13(a)h
+12(symmetric)h
+11(p)h
+1(ositiv)h
+-1(e)h
+13(and)h
+13(negativ)h
+-1(e)h
+12(form.)h
+16(F)h
+-3(or)h
+13(example,)h
+11(it)h
+12(is)h
+13(confusing)h
+281 1378(for)s
+71(to)h
+14(turn)h
+14(on)h
+14(a)h
+13(feature)h
+15(and)h
+71(to)h
+14(turn)h
+14(it)h
+14(o\013.)h
+228 1482(3.)s
+20(The)h
+14(in)h
+-1(terface)h
+15(m)h
+-1(ust)h
+13(b)h
+1(e)h
+14(extensible)h
+15(to)h
+14(allo)h
+-1(w)h
+12(inclusion)h
+13(of)h
+13(more)h
+13(features)h
+15(at)h
+14(a)h
+14(later)h
+14(date.)h
+228 1586(4.)s
+20(Options)h
+14(should)h
+14(b)h
+1(e)h
+14(consisten)h
+-1(t)h
+15(and)h
+14(memo)h
+-1(rable.)h
+177 1729(The)s
+14(result)h
+15(is)h
+14(describ)h
+1(ed)h
+16(in)h
+13(the)h
+496(.)h
+177 2056(File)s
+20(names)h
+19(presen)h
+-1(t)h
+22(a)h
+20(host)h
+20(of)h
+20(problems)h
+19(for)h
+20(a)h
+19(program)h
+19(lik)h
+-1(e)h
+19(F)h
+-3(unnelW)h
+-3(eb.)h
+36(First,)h
+22(F)h
+-3(unnelW)h
+-3(eb)h
+20(can)h
+177 2106(generate)s
+16(so)h
+15(man)h
+-1(y)h
+13(di\013eren)h
+-1(t)h
+16(kinds)h
+15(of)h
+14(\014les)h
+15(that)h
+15(con)h
+-1(v)h
+-1(en)h
+-1(tions)h
+15(m)h
+-1(ust)h
+14(b)h
+1(e)h
+16(adopted)h
+15(to)h
+15(prev)h
+-1(en)h
+-1(t)h
+15(them)h
+15(from)h
+177 2156(b)s
+1(ecoming)h
+9(unmanageable.)h
+15(Second,)h
+11(the)h
+10(constrain)h
+-1(ts)h
+10(on)h
+10(\014le)h
+10(names,)h
+9(and)h
+10(ev)h
+-1(en)h
+10(the)h
+11(structure)h
+12(of)h
+9(\014le)h
+10(names)h
+177 2205(themselv)s
+-1(es)h
+16(v)h
+-2(aries)h
+15(considerably)h
+16(from)h
+14(mac)h
+-1(hine)h
+14(to)h
+15(mac)h
+-1(hine.)h
+22(These)h
+17(t)h
+-1(w)h
+-1(o)h
+15(problems)h
+14(ha)h
+-1(v)h
+-1(e)h
+16(com)h
+-1(bined)h
+14(to)h
+177 2255(result)s
+14(in)h
+12(the)h
+14(sophisticated)h
+14(and)h
+12(rather)h
+14(complicated)h
+12(w)h
+-1(a)h
+-1(y)h
+12(in)h
+13(whic)h
+-1(h)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(V3)h
+13(handles)h
+13(\014lenames.)h
+177 2340(T)s
+-3(o)h
+13(summari)h
+-1(ze,)h
+13(the)h
+14(three)h
+15(problems)h
+13(are:)h
+228 2483(1.)s
+20(What)h
+13(\014lename)h
+13(extensions)h
+15(should)h
+14(b)h
+1(e)h
+14(c)h
+-1(hosen)h
+15(for)h
+14(v)h
+-2(arious)h
+13(kinds)h
+14(of)h
+13(\014le?)h
+228 2588(2.)s
+20(What)h
+13(\014lename)h
+13(inheritance)h
+15(should)h
+13(tak)h
+-1(e)h
+14(place?)h
+228 2692(3.)s
+20(Ho)h
+-1(w)h
+13(should)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(cop)h
+1(e)h
+14(with)h
+14(the)h
+14(v)h
+-2(ariations)h
+13(in)h
+13(\014lename)h
+13(structure)h
+16(b)h
+1(et)h
+-1(w)h
+-1(een)h
+15(mac)h
+-1(hines?)h
+177 2835(The)s
+14(follo)h
+-1(wing)h
+12(three)h
+15(sections)h
+15(address)h
+15(these)h
+15(questions.)h
+1042 2940(19)s
+20 @eop
+21 @bop0
+cmbx12.300 sf
+[<00FE0003FFC00601E00C00701800701800383800383C00383F00383F80783FE0701FF8
+E01FFFC00FFF8007FFC003FFE007FFF01E7FF83C1FFC7807FC7801FEF000FEF0003EF000
+1EF0001EF0001CF8001C7800383C00381F01F00FFFC001FF00>
+24 32 -2 31 28] 56 dc
+[<FFFFFFF8FFFFFFF807F001F807F0007807F0003807F0001807F0001C07F0001C07F000
+0C07F0000C07F0180C07F0180C07F0180007F0180007F0380007F0780007FFF80007FFF8
+0007F0780007F0380007F0180007F0180007F0180007F0180007F0000007F0000007F000
+0007F0000007F0000007F0000007F0000007F00000FFFFE000FFFFE000>
+32 34 -2 33 35] 70 dc
+[<FFFFFFFCFFFFFFFC07F000FC07F0003C07F0001C07F0000C07F0000E07F0000E07F000
+0607F0180607F0180607F0180607F0180007F0380007F0780007FFF80007FFF80007F078
+0007F0380007F0180007F0180007F0180307F0180307F0000307F0000607F0000607F000
+0607F0000E07F0000E07F0001E07F0003E07F001FCFFFFFFFCFFFFFFFC>
+32 34 -2 33 37] 69 dc
+[<0FF3003FFF00781F00600700E00300E00300F00300FC00007FE0007FF8003FFE000FFF
+0001FF00000F80C00780C00380E00380E00380F00700FC0E00EFFC00C7F000>
+24 22 -2 21 22] 115 dc
+[<FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
+0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
+0003F80003F80003F80003F80003F80003F80003F80003F800FFFFE0FFFFE0>
+24 34 -1 33 21] 73 dc
+[<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
+001F0000001F0000001F0000001F0000001F07E0001F1FF8001F307C001F403C001F803E
+001F803E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E
+001F003E001F003E001F003E001F003E001F003E001F003E00FFE1FFC0FFE1FFC0>
+32 35 -2 34 31] 104 dc
+cmtt10.300 sf
+[<07FE07FF07FE0038003800380038003800380038003800380038003800380038003800
+3800386038F038F0707FF07FE01F80>
+16 25 -3 24 22] 74 dc
+21 @bop1
+cmbx12.300 sf
+177 42(1.8.1)s
+55(Filename)h
+17(Extensions)h
+177 1023(1.8.2)s
+55(Filename)h
+17(Inheritance)h
+cmtt10.300 sf
+177 421(FunnelWeb)s
+107(:)h
+22(.fw)h
+177 471(Product)s
+151(:)h
+22(None.)h
+177 521(Documentation)s
+19(:)h
+22(.tex)h
+177 570(Listing)s
+151(:)h
+22(.lis)h
+177 620(Journal)s
+151(:)h
+22(.jrn)h
+243 1302(fw)s
+21(sloth)h
+21(+J)h
+21(+L)h
+21(+T)h
+1099 1426(sloth.jrn)s
+29(sloth.lis)h
+114(sloth.tex)h
+872 1476(sloth)s
+804 1692(@i)s
+739(@o)h
+462 1742(+x)s
+134(+f)h
+120(+i)h
+138(+j)h
+143(+l)h
+134(+t)h
+192(+o)h
+483 1792(.fws)s
+90(.fw)h
+98(.fwi)h
+94(.jrn)h
+99(.lis)h
+90(.tex)h
+804 1842(+f)s
+138(+f)h
+143(+f)h
+134(+f)h
+1851 2785(x.y)s
+cmr10.300 sf
+177 147(F)s
+-3(unnelW)h
+-3(eb)h
+11(is)h
+12(capable)h
+11(of)h
+11(reading)h
+12(and)h
+11(writing)h
+11(a)h
+11(v)h
+-2(ariet)h
+-1(y)h
+11(of)h
+11(di\013eren)h
+-1(t)h
+13(kinds)h
+12(of)h
+11(\014les.)h
+17(In)h
+12(particular,)h
+11(F)h
+-3(un-)h
+177 197(nelW)s
+-3(eb)h
+11(m)h
+-1(ust)h
+10(often)h
+11(op)h
+1(erates)h
+12(in)h
+11(an)h
+11(en)h
+-1(vironmen)h
+-1(t)h
+10(where)h
+12(the)h
+11(same)h
+10(information)h
+9(is)h
+10(stored)h
+12(in)h
+11(man)h
+-1(y)h
+9(forms)h
+177 247(\(e.g.)s
+16(prog.fw,)h
+15(prog.c,)h
+17(pro)h
+1(c.exe\).)h
+26(File)h
+16(extensions)h
+18(are)h
+16(an)h
+17(essen)h
+-1(tial)h
+16(to)h
+1(ol)h
+16(in)h
+16(managi)h
+-1(ng)h
+15(this)h
+16(situation.)h
+177 297(The)s
+14(\014lename)h
+13(extensions)h
+15(c)h
+-1(hosen)h
+15(for)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(are:)h
+177 744(Lo)s
+-1(w)h
+-1(ercase)h
+15(will)h
+13(b)h
+1(e)h
+14(used)h
+15(in)h
+13(systems)h
+14(that)h
+14(are)h
+15(case)h
+14(sensitiv)h
+-1(e.)h
+177 822(Readers)s
+14(who)h
+13(are)h
+14(w)h
+-1(ondering)h
+12(ho)h
+-1(w)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(cop)h
+1(es)h
+14(in)h
+13(en)h
+-1(vironmen)h
+-1(ts)h
+12(suc)h
+-1(h)h
+14(as)h
+13(UNIX)h
+14(where)h
+14(there)h
+14(are)h
+177 872(no)s
+14(\014le)h
+14(extensions)h
+15(should)h
+13(refer)h
+15(to)h
+14(Section)h
+14(1.8.3.)h
+177 1129(Inheritance)s
+14(in)h
+11(\014lenames)h
+12(refers)h
+14(to)h
+12(ho)h
+-1(w)h
+12(input)h
+12(and)h
+12(output)h
+12(\014les)h
+13(inherit)h
+12(parts)h
+13(of)h
+12(their)h
+13(name)h
+11(from)h
+10(other)h
+177 1178(\014lenames)s
+13(and)h
+14(their)h
+14(en)h
+-1(vironmen)h
+-1(t.)h
+17(F)h
+-3(or)h
+14(example)h
+12(if)h
+13(the)h
+15(comm)h
+-1(and)h
+177 1426(w)s
+-1(as)h
+18(issued,)h
+20(y)h
+-1(ou)h
+18(w)h
+-1(ould)h
+17(exp)h
+1(ect)h
+20(to)h
+18(see)h
+19(output)h
+19(\014les)h
+216(,)h
+215(,)h
+17(and)h
+216(.)h
+29(The)h
+177 1476(output)s
+14(\014le)h
+15(names)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(inherited)h
+14(the)h
+15(\\)h
+110(".)h
+17(The)h
+15(follo)h
+-1(wi)h
+-1(ng)h
+12(table)h
+14(giv)h
+-1(es)h
+14(the)h
+15(hierarc)h
+-1(h)h
+-1(y)h
+14(devised)h
+15(for)h
+177 1526(F)s
+-3(unnelW)h
+-3(eb.)h
+462 1641(Script)s
+70(Input)h
+64(Include)h
+50(Journal)h
+50(List)h
+108(Do)h
+1(cumen)h
+-1(t)h
+49(Pro)h
+1(duct)h
+391 1692(1)s
+391 1742(2)s
+391 1792(3)s
+50(\\)h
+88(")h
+48(\\)h
+66(")h
+56(\\)h
+88(")h
+52(\\)h
+88(")h
+57(\\)h
+88(")h
+48(\\)h
+88(")h
+391 1842(4)s
+391 1892(5)s
+50(DefDir)h
+55(Defdir)h
+50(Defdir)h
+68(Defdir)h
+73(Defdir)h
+64(Defdir)h
+122(Defdir)h
+177 2015(The)s
+14(follo)h
+-1(wing)h
+12(notes)h
+14(explain)h
+14(the)h
+14(table.)h
+228 2139(1.)s
+20(This)h
+14(sc)h
+-1(heme)h
+14(is)h
+14(simil)h
+-1(ar)h
+12(to)h
+14(that)h
+14(used)h
+14(in)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(V1.)h
+228 2229(2.)s
+20(The)h
+14(journal,)h
+13(list,)h
+12(and)h
+14(do)h
+1(cumen)h
+-1(tation)h
+12(\014les)h
+15(all)h
+12(fall)h
+12(in)h
+14(the)h
+14(same)h
+13(pattern)h
+14(and)h
+14(can)h
+14(b)h
+1(e)h
+14(considered)h
+281 2278(as)s
+14(a)h
+14(single)h
+13(case.)h
+228 2368(3.)s
+20(Lev)h
+-1(el)h
+15(1)h
+16(has)h
+15(the)h
+16(highest)h
+16(priorit)h
+-1(y)h
+14(b)h
+1(ecause)h
+18(it)h
+15(is)h
+15(a)h
+15(direct)h
+16(sp)h
+1(eci\014cation)h
+16(b)h
+-1(y)h
+16(the)h
+16(user)h
+16(in)h
+15(the)h
+16(input)h
+281 2418(\014le.)s
+228 2507(4.)s
+20(Lev)h
+-1(el)h
+14(2)h
+13(comes)h
+14(next)h
+14(b)h
+1(ecause)h
+15(this)h
+14(is)h
+14(also)h
+13(a)h
+13(direct)h
+15(sp)h
+1(eci\014cation)h
+14(from)h
+12(the)h
+15(user)h
+15(on)h
+13(the)h
+15(comm)h
+-1(and)h
+281 2557(line.)s
+228 2646(5.)s
+20(Lev)h
+-1(el)h
+13(3)h
+12(pro)h
+-1(vides)h
+13(the)h
+14(default)h
+12(\014le)h
+13(extensions.)h
+19(Pro)h
+1(duct)h
+14(\014les)h
+13(do)h
+13(not)h
+12(inherit)h
+13(an)h
+13(extension)h
+13(as)h
+13(they)h
+281 2696(could)s
+14(b)h
+1(e)h
+14(of)h
+13(an)h
+-1(y)h
+14(t)h
+-1(yp)h
+1(e.)h
+228 2785(6.)s
+20(Lev)h
+-1(el)h
+12(5)h
+13(is)h
+12(built)h
+12(in)h
+-1(to)h
+11(most)h
+12(op)h
+1(erating)h
+12(systems')h
+12(\014le)h
+13(sp)h
+1(eci\014cation)h
+13(systems.)h
+17(If)h
+13(I)h
+12(sp)h
+1(ecify)h
+13(\014le)h
+12(\\)h
+66(",)h
+281 2835(it)s
+13(is)h
+14(tak)h
+-1(en)h
+14(to)h
+14(mean)h
+13(on)h
+13(the)h
+15(default)h
+13(disk)h
+14(in)h
+13(the)h
+15(default)h
+13(directory)h
+-3(.)h
+1042 2940(20)s
+1394 2 366 1606 r
+2 50 365 1656 r
+2 50 436 1656 r
+2 50 615 1656 r
+2 50 778 1656 r
+2 50 961 1656 r
+2 50 1147 1656 r
+2 50 1326 1656 r
+2 50 1562 1656 r
+2 50 1759 1656 r
+1394 2 366 1658 r
+2 50 365 1707 r
+2 50 436 1707 r
+2 50 615 1707 r
+2 50 778 1707 r
+2 50 961 1707 r
+2 50 1147 1707 r
+2 50 1326 1707 r
+2 50 1562 1707 r
+2 50 1759 1707 r
+2 50 365 1757 r
+2 50 436 1757 r
+2 50 615 1757 r
+2 50 778 1757 r
+2 50 961 1757 r
+2 50 1147 1757 r
+2 50 1326 1757 r
+2 50 1562 1757 r
+2 50 1759 1757 r
+2 50 365 1807 r
+2 50 436 1807 r
+2 50 615 1807 r
+2 50 778 1807 r
+2 50 961 1807 r
+2 50 1147 1807 r
+2 50 1326 1807 r
+2 50 1562 1807 r
+2 50 1759 1807 r
+2 50 365 1857 r
+2 50 436 1857 r
+2 50 615 1857 r
+2 50 778 1857 r
+2 50 961 1857 r
+2 50 1147 1857 r
+2 50 1326 1857 r
+2 50 1562 1857 r
+2 50 1759 1857 r
+2 50 365 1907 r
+2 50 436 1907 r
+2 50 615 1907 r
+2 50 778 1907 r
+2 50 961 1907 r
+2 50 1147 1907 r
+2 50 1326 1907 r
+2 50 1562 1907 r
+2 50 1759 1907 r
+1394 2 366 1909 r
+21 @eop
+22 @bop0
+cmbx12.300 sf
+[<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
+001F0000001F0000001F0000001F0000001F0FE0001F3FF8001FF07C001F801E001F001F
+001F000F801F000F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000F
+C01F000FC01F000F801F001F801F801F001FC03E001EE07C001C3FF800180FC000>
+32 35 -2 34 31] 98 dc
+[<FF01FE00FF01FE001F003E001F003E001F003E001F003E001F003E001F003E001F003E
+001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F007E
+001F00FE000F81BE0007FF3FC001FC3FC0>
+32 22 -2 21 31] 117 dc
+[<FFF8001FFEFFFC001FFE07FC0000C007FE0000C006FF0000C0067F8000C0063FC000C0
+061FE000C0060FE000C0060FF000C00607F800C00603FC00C00601FE00C00600FE00C006
+00FF00C006007F80C006003FC0C006001FE0C006000FF0C0060007F0C0060007F8C00600
+03FCC0060001FEC0060000FFC00600007FC00600007FC00600003FC00600001FC0060000
+0FC006000007C006000003C006000003C0FFF00001C0FFF00000C0>
+40 34 -2 33 44] 78 dc
+cmtt10.300 sf
+[<000180000380000380000700000700000E00000E00001C00001C000038000038000070
+0000700000E00000E00001C00001C0000380000380000700000700000E00000E00001C00
+001C0000380000380000700000700000E00000E00000C00000>
+24 32 -2 28 22] 47 dc
+[<FFF0FFF0FFF0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
+00E000E000E000E000E000E000E000E000E000E000E000FFF0FFF0FFF0>
+16 32 -8 28 22] 91 dc
+[<FFF0FFF0FFF00070007000700070007000700070007000700070007000700070007000
+7000700070007000700070007000700070007000700070FFF0FFF0FFF0>
+16 32 -1 28 22] 93 dc
+[<C00000E00000E000007000007000003800003800001C00001C00000E00000E00000700
+0007000003800003800001C00001C00000E00000E000007000007000003800003800001C
+00001C00000E00000E00000700000700000380000380000180>
+24 32 -2 28 22] 92 dc
+22 @bop1
+cmbx12.300 sf
+177 757(1.8.3)s
+55(P)h
+-2(ortable)h
+19(Structure)h
+18(of)h
+19(File)h
+17(Names)h
+cmtt10.300 sf
+1284 191(sloth)s
+62(sloth.tex)h
+1459 390(sloth.lis)s
+96(sloth.tex)h
+1079 440(sloth.fw)s
+243 1059(UNIX)s
+64(/device/dir1/)h
+-1(dir2/)h
+-1(name)h
+243 1108(VMS)s
+86(node::device:)h
+-1([dir1)h
+-1(.dir2)h
+-1(]name)h
+-1(.ext)h
+-1(;vn)h
+243 1158(MSDOS)s
+42(device:\\dir1\\)h
+-1(dir2\\)h
+-1(name.)h
+-1(ext)h
+243 1208(MAC)s
+86(device:dir1:d)h
+-1(ir2:n)h
+-1(ame)h
+1529 1711(sloth)s
+1470 1761(sloth)s
+60(sloth.fw)h
+426 1811(walrus)s
+641(walrus)h
+63(walrus.lis)h
+660 2032(sloth)s
+990(sloth.fw)h
+678 2132(sloth)s
+270 2519(sloth.lis)s
+1295 2702(.)s
+233 2835(.)s
+cmr10.300 sf
+228 42(7.)s
+20(Lev)h
+-1(el)h
+15(4)h
+15(lo)h
+1(oks)h
+15(straigh)h
+-1(tforw)h
+-1(ard,)h
+14(but)h
+16(secretly)h
+17(conceals)h
+16(a)h
+15(di\016cult)h
+14(design)h
+16(decision.)h
+22(By)h
+15(the)h
+16(time)h
+281 91(w)s
+-1(e)h
+19(get)h
+19(do)h
+-1(wn)h
+18(to)h
+18(this)h
+19(lev)h
+-1(el)h
+18(of)h
+18(inheritance,)h
+20(w)h
+-1(e)h
+18(kno)h
+-1(w)h
+19(for)h
+18(sure)h
+19(that)h
+19(the)h
+19(\014lename)h
+17(has)h
+19(already)h
+281 141(pic)s
+-1(k)h
+-1(ed)h
+15(up)h
+15(a)h
+14(\014le)h
+15(extension.)h
+21(So)h
+15(all)h
+13(that)h
+15(is)h
+15(left)h
+14(to)h
+15(inherit)h
+15(is)h
+15(the)h
+15(path)h
+15(and)h
+14(the)h
+16(\014lename)h
+13(prop)h
+1(er.)h
+281 191(Ob)s
+-1(viously)h
+13(w)h
+-1(e)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(to)h
+14(inherit)h
+14(the)h
+15(\014lename)h
+13(prop)h
+1(er)h
+15(\(e.g.)h
+141(in)h
+212(\),)h
+11(but)h
+15(should)h
+14(w)h
+-1(e)h
+281 241(inherit)s
+17(the)h
+17(input)h
+17(\014le)h
+17(path?)h
+26(If)h
+17(w)h
+-1(e)h
+17(do)h
+16(inherit)h
+17(the)h
+17(input)h
+17(\014le)h
+17(path,)h
+17(\014les)h
+17(will)h
+15(b)h
+1(e)h
+18(placed)h
+17(in)h
+16(the)h
+281 291(same)s
+15(directory)h
+16(as)h
+16(the)h
+16(input)h
+16(\014le.)h
+23(If)h
+16(w)h
+-1(e)h
+16(don't)h
+15(inherit)h
+16(the)h
+16(input)h
+15(\014le)h
+16(path,)h
+16(\014les)h
+16(will)h
+14(b)h
+1(e)h
+17(placed)h
+281 340(in)s
+13(the)h
+14(curren)h
+-1(t)h
+15(directory)h
+-3(.)h
+18(The)h
+14(c)h
+-1(hoice)h
+14(I)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(made)h
+12(is)h
+13(to)h
+13(send)h
+15(all)h
+12(the)h
+14(logging)h
+12(t)h
+-1(yp)h
+1(e)h
+14(\014les)h
+13(in)h
+-1(to)h
+13(the)h
+281 390(same)s
+14(directory)h
+17(as)h
+15(the)h
+16(input)h
+15(\014le.)h
+23(This)h
+15(means,)h
+15(for)h
+15(example,)h
+14(that)h
+226(and)h
+281 440(will)s
+12(generally)h
+14(land)h
+13(in)h
+13(the)h
+15(same)h
+13(directory)h
+14(as)h
+190(.)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+13(I)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(decided)h
+15(that)h
+14(output)h
+281 490(\014les)s
+12(should)h
+11(b)h
+1(e)h
+12(sen)h
+-1(t)h
+12(to)h
+11(the)h
+12(default)h
+11(directory)h
+12(\(if)h
+11(not)h
+11(earlier)h
+12(sp)h
+1(eci\014ed\))h
+13(as)h
+11(this)h
+11(is)h
+12(where)h
+12(the)h
+12(action)h
+281 540(is.)s
+19(In)h
+15(normal)h
+12(use,)h
+15(the)h
+15(mai)h
+-1(n)h
+13(pro)h
+1(duct)h
+15(of)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(will)h
+12(b)h
+1(e)h
+15(pro)h
+1(duct)h
+16(\014les)h
+14(and)h
+14(so)h
+15(the)h
+15(user)h
+15(will)h
+281 589(exp)s
+1(ect)h
+15(them)h
+13(to)h
+14(app)h
+1(ear)h
+15(in)h
+13(the)h
+14(curren)h
+-1(t)h
+16(directory)h
+14(b)h
+-1(y)h
+14(default.)h
+177 871(Another)s
+17(problem)h
+15(with)h
+15(\014le)h
+16(names)h
+15(is)h
+16(the)h
+17(v)h
+-2(ariation)h
+14(of)h
+15(their)h
+17(structure)h
+18(b)h
+1(et)h
+-1(w)h
+-1(een)h
+17(en)h
+-1(vironmen)h
+-1(ts.)h
+24(Here)h
+177 921(are)s
+14(examples)h
+13(of)h
+14(some)h
+13(of)h
+13(the)h
+14(formats)h
+13(that)h
+14(prev)h
+-2(ail:)h
+177 1345(Isn't)s
+14(it)h
+14(amazing)h
+11(that)h
+14(none)h
+14(of)h
+14(these)h
+15(p)h
+1(opular)h
+14(systems)h
+14(use)h
+14(the)h
+15(same)h
+13(format?)h
+177 1429(The)s
+16(solution)h
+15(to)h
+15(dealing)h
+15(with)h
+15(these)h
+17(di\013eren)h
+-1(t)h
+16(formats)h
+14(is)h
+15(to)h
+16(classify)h
+15(them)h
+15(as)h
+15(non-p)h
+1(ortable)h
+15(and)h
+16(hide)h
+177 1479(the)s
+16(functions)h
+15(that)h
+15(manipul)h
+-1(ate)h
+14(them)h
+14(in)h
+14(the)h
+16(mac)h
+-1(hine-sp)h
+1(eci\014c)h
+15(mo)h
+1(dule)h
+13(of)h
+15(F)h
+-3(unnelW)h
+-3(eb.)h
+20(Luc)h
+-1(kily)h
+14(there)h
+177 1528(are)s
+14(not)h
+14(man)h
+-1(y)h
+12(suc)h
+-1(h)h
+15(functions.)h
+177 1612(The)s
+15(mai)h
+-1(n)h
+12(problem)h
+13(is)h
+14(coping)h
+13(with)h
+14(\014le)h
+14(systems)h
+14(that)h
+14(do)h
+14(not)h
+14(explicitly)h
+12(supp)h
+1(ort)h
+15(\014le)h
+14(extensions.)h
+19(With)h
+177 1661(so)s
+14(man)h
+-1(y)h
+12(p)h
+1(ossible)h
+14(input)h
+13(and)h
+13(output)h
+14(\014les,)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(all)h
+12(but)h
+14(needs)h
+15(suc)h
+-1(h)h
+15(extensions.)h
+19(Mac)h
+-1(hines)h
+14(that)h
+177 1711(do)s
+15(not)h
+15(supp)h
+1(ort)h
+16(them)h
+14(p)h
+1(ose)h
+15(di\016cult)h
+15(design)h
+15(decisions.)h
+22(If)h
+14(the)h
+16(user)h
+16(sp)h
+1(eci\014es)h
+17(\\)h
+110(")h
+13(as)h
+15(an)h
+15(input)h
+15(\014le)h
+177 1761(on)s
+12(suc)h
+-1(h)h
+12(a)h
+12(non-extension-supp)h
+1(orting)h
+12(system,)h
+12(should)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(lo)h
+1(ok)h
+11(for)h
+132(or)h
+188(?)h
+16(If)h
+11(the)h
+177 1811(user)s
+15(sp)h
+1(eci\014es)h
+160(as)h
+14(a)h
+14(listing)h
+13(\014le,)h
+13(should)h
+14(it)h
+13(generate)h
+160(or)h
+234(?)h
+177 1894(Some)s
+13(p)h
+1(ossible)h
+14(solutions)h
+13(are:)h
+228 2032(1.)s
+20(Regard)h
+14(the)h
+14(\014lename)h
+136(as)h
+14(ha)h
+-1(ving)h
+12(an)h
+14(empt)h
+-1(y)h
+13(extension.)h
+19(It)h
+14(will)h
+12(then)h
+15(default)h
+13(to)h
+190(.)h
+228 2132(2.)s
+20(Regard)h
+20(the)h
+21(\014lename)h
+147(as)h
+21(ha)h
+-1(ving)h
+19(a)h
+19(blank)h
+20(but)h
+20(full)h
+19(extension.)h
+37(That)h
+20(is,)h
+21(it)h
+20(cannot)h
+20(b)h
+1(e)h
+281 2181(o)s
+-1(v)h
+-1(erwritten)h
+14(b)h
+-1(y)h
+14(inheritance,)h
+14(but)h
+14(it)h
+14(remains)h
+13(blank.)h
+228 2282(3.)s
+20(Pro)h
+-1(vide)h
+16(an)h
+16(extra)h
+17(syn)h
+-1(tactic)h
+16(mec)h
+-1(hanism)h
+14(to)h
+16(allo)h
+-1(w)h
+15(the)h
+17(user)h
+17(to)h
+16(sp)h
+1(ecify)h
+17(one)h
+16(or)h
+16(other)h
+17(of)h
+15(the)h
+17(t)h
+-1(w)h
+-1(o)h
+281 2331(options)s
+13(ab)h
+1(o)h
+-1(v)h
+-1(e.)h
+177 2469(My)s
+15(solution)h
+13(w)h
+-1(as)h
+15(to)h
+14(c)h
+-1(ho)h
+1(ose)h
+16(the)h
+15(\014rst)h
+15(option.)h
+19(Use)h
+16(of)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(results)h
+15(in)h
+14(lots)h
+15(of)h
+14(\014les)h
+15(lying)h
+13(around)h
+177 2519(\(e.g.)s
+212(\))h
+13(and)h
+14(it)h
+14(is)h
+14(hard)h
+15(to)h
+14(see)h
+16(ho)h
+-1(w)h
+14(the)h
+15(user)h
+16(will)h
+12(cop)h
+1(e)h
+16(with)h
+14(them)h
+14(all)h
+13(without)h
+14(some)h
+13(kind)h
+14(of)h
+177 2569(naming)s
+12(discipline.)h
+17(If)h
+14(a)h
+13(naming)h
+12(discipline)h
+13(has)h
+14(to)h
+14(b)h
+1(e)h
+15(used,)h
+14(it)h
+14(mig)h
+-1(h)h
+-1(t)h
+12(as)h
+14(w)h
+-1(ell)h
+13(b)h
+1(e)h
+15(the)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(one.)h
+177 2652(Th)s
+-1(us)h
+15(the)h
+15(names)h
+13(of)h
+14(all)h
+13(\014les)h
+15(read)h
+14(and)h
+15(written)h
+14(b)h
+-1(y)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(will)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(a)h
+14(\014le)h
+15(extension)h
+15(of)h
+13(from)h
+13(zero)h
+177 2702(to)s
+14(three)h
+15(letters)h
+15(separated)h
+15(from)h
+13(the)h
+14(rest)h
+15(of)h
+13(the)h
+15(\014lename)h
+13(b)h
+-1(y)h
+13(a)h
+14(\\)h
+22(".)h
+177 2785(The)s
+11(only)h
+10(exception)h
+12(is)h
+11(pro)h
+1(duct)h
+11(\014les)h
+11(whose)h
+12(extension)h
+11(is)h
+11(left)h
+10(unde\014ned.)h
+19(Pro)h
+1(duct)h
+12(\014les)h
+11(need)h
+12(not)h
+10(con)h
+-1(tain)h
+177 2835(a)s
+14(\\)h
+22(")h
+18(and)h
+13(a)h
+14(\014le)h
+14(extension,)h
+14(although)h
+13(they)h
+14(can)h
+14(inherit)h
+14(one)h
+14(if)h
+13(the)h
+15(user)h
+15(wishes.)h
+1042 2940(21)s
+22 @eop
+23 @bop0
+cmmi10.300 sf
+[<381F004E61804681C04701C08F01C08E01C00E01C00E01C01C03801C03801C03801C07
+00380710380710380E10380E20700640300380>
+24 18 -2 17 25] 110 dc
+cmbx10.432 sf
+[<007F800001FFF00007FFF8000FE0FE001FC07E003F803F007F003F807F003F80FF001F
+C0FF001FC0FF001FC0FF001FC0FF001FE0FF001FE0FF001FE0FF001FE07F003FE07F003F
+E07F003FE03F807FE01F80FFE00FE1DFE003FF9FE0007E1FE000001FE000001FC000001F
+C000001FC000003FC01F003F803F803F803F807F003F807F003F80FE003F01FC001E03F8
+000FFFE00007FF800001FE0000>
+32 39 -3 38 34] 57 dc
+[<FFE1FE0000FFE7FF8000FFFE07E0000FF803F8000FF001FC000FE001FE000FE000FE00
+0FE000FF000FE000FF000FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800F
+E0007F800FE0007F800FE0007F800FE0007F800FE000FF000FE000FF000FE000FE000FF0
+01FE000FF003FC000FF803F8000FFE0FE0000FEFFF80000FE1FC00000FE00000000FE000
+00000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000
+00FFFE000000FFFE000000FFFE000000>
+40 39 -2 26 38] 112 dc
+[<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE00000000FE0000000
+0FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
+E00000000FE07F00000FE1FFC0000FE787E0000FEE07F0000FFC03F8000FF803F8000FF0
+03F8000FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
+F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
+000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80>
+40 42 -3 41 38] 104 dc
+[<FFFF80FFFF80FFFF80FFFF80FFFF80FFFF80>
+24 6 -1 16 23] 45 dc
+cmtt10.300 sf
+[<0FE03FF87FFCF01EF00EF00E601E007C00F801F003E003C00380038003800380030000
+000000000000000300078007800300>
+16 25 -3 24 22] 63 dc
+23 @bop1
+cmmi10.300 sf
+1769 1149(n)s
+cmbx10.432 sf
+177 42(1.9)s
+70(Sp)h
+2(ecifying)h
+31(Constrain)h
+-2(ts)h
+33(on)h
+34(the)h
+32(Num)h
+-3(b)h
+2(er)h
+31(of)h
+34(Instan)h
+-2(tia-)h
+334 116(tions)s
+cmtt10.300 sf
+1885 605(@Z)s
+279 655(@M)s
+243 770(0..1)s
+217(@$@<Sloth@>)h
+-1(@Z==.)h
+-1(..)h
+308 819(1)s
+218(@$@<Sloth@>)h
+-1(==...)h
+308 869(1..n)s
+152(@$@<Sloth@>)h
+-1(@M==.)h
+-1(..)h
+243 919(0.....n)s
+151(@$@<Sloth@>)h
+-1(@Z@M=)h
+-1(=...)h
+1682 1446(@?)s
+98(@M)h
+347 1496(@$)s
+1219 1610(@?)s
+393(@M)h
+1124 1693(@$@<name)s
+177 1973(@?@M@$@<Sloth)s
+-1(y)h
+20(dogs@>@\(@5@\)=)h
+-1(=@{@-)h
+177 2022(This)s
+21(is)h
+22(a)h
+21(short)h
+21(macro.)h
+177 2072(With)s
+21(only)h
+21(a)h
+22(line)h
+21(or)h
+21(two@})h
+177 2172(@$@<Slothy)s
+20(dogs@>@?@M@\()h
+-1(@5@\)=)h
+-1(=@{@-)h
+177 2222(This)s
+21(is)h
+22(a)h
+21(short)h
+21(macro.)h
+177 2271(With)s
+21(only)h
+21(a)h
+22(line)h
+21(or)h
+21(two@})h
+177 2371(@$@<Slothy)s
+20(dogs@>@\(@5@\))h
+-1(@?@M=)h
+-1(=@{@-)h
+177 2421(This)s
+21(is)h
+22(a)h
+21(short)h
+21(macro.)h
+177 2471(With)s
+21(only)h
+21(a)h
+22(line)h
+21(or)h
+21(two@)h
+177 2635(@$)s
+1714 2735(==)s
+68(+=)h
+910 2785(01==)s
+1329 2835(==)s
+cmr10.300 sf
+177 232(Exp)s
+1(erience)h
+17(with)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(V1)h
+14(demonstrated)h
+15(the)h
+15(need)h
+15(to)h
+15(b)h
+1(e)h
+15(able)h
+14(to)h
+14(sp)h
+1(ecify)h
+15(in)h
+15(macro)h
+13(de\014nitions)h
+177 281(ho)s
+-1(w)h
+12(man)h
+-1(y)h
+11(times)h
+12(it)h
+12(w)h
+-1(as)h
+13(exp)h
+1(ected)h
+14(that)h
+13(the)h
+13(macro)h
+12(w)h
+-1(ould)h
+12(b)h
+1(e)h
+13(used.)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+13(V1)h
+12(generates)h
+14(an)h
+13(error)h
+177 331(if)s
+13(a)h
+13(macro)h
+12(is)h
+13(not)h
+13(used,)h
+14(but)h
+14(p)h
+1(ermits)h
+13(macros)h
+12(to)h
+14(b)h
+1(e)h
+14(called)h
+13(more)h
+12(than)h
+13(once.)h
+19(This)h
+13(caused)h
+15(problems)h
+12(for)h
+177 381(macro)s
+13(libraries,)h
+13(whic)h
+-1(h)h
+14(w)h
+-1(ould)h
+13(b)h
+1(e)h
+14(included,)h
+14(but)h
+14(whose)h
+14(macros)h
+13(w)h
+-1(ere)h
+15(often)h
+14(not)h
+14(called.)h
+177 455(By)s
+14(default,)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(V3)h
+14(requires)h
+14(that)h
+14(eac)h
+-1(h)h
+13(macro)h
+13(\(except)h
+15(for)h
+13(the)h
+14(ones)h
+13(attac)h
+-1(hed)h
+14(to)h
+14(output)h
+13(\014les\))h
+177 505(b)s
+1(e)h
+19(called)h
+17(exactly)h
+18(once.)h
+30(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+19(it)h
+18(also)h
+17(pro)h
+-1(vides)h
+18(syn)h
+-1(tax)h
+18(that)h
+17(allo)h
+-1(ws)h
+17(the)h
+18(user)h
+19(to)h
+18(sp)h
+1(ecify)h
+18(that)h
+18(a)h
+177 555(macro)s
+13(b)h
+1(e)h
+14(allo)h
+-1(w)h
+-1(ed)h
+12(to)h
+14(b)h
+1(e)h
+14(called)h
+13(zero)h
+15(times)h
+12(or)h
+14(man)h
+-1(y)h
+12(times.)h
+17(This)h
+13(allo)h
+-1(ws)h
+13(a)h
+13(macro)h
+12(to)h
+14(b)h
+1(e)h
+14(sp)h
+1(eci\014ed)h
+15(with)h
+177 605(the)s
+14(follo)h
+-1(wing)h
+11(p)h
+1(ermissible)h
+13(ranges)h
+14(of)h
+13(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+13(of)h
+13(calls)h
+13(dep)h
+1(ending)h
+14(on)h
+13(the)h
+14(presence)h
+16(or)h
+14(absence)h
+15(of)h
+13(\\)h
+44(")h
+177 655(and)s
+14(\\)h
+44(":)h
+177 1034(The)s
+14(only)h
+14(t)h
+-1(w)h
+-1(o)h
+13(problems)h
+13(with)h
+13(this)h
+14(sc)h
+-1(heme)h
+14(are:)h
+228 1149(1.)s
+20(It)h
+11(is)h
+11(incompatible)h
+10(with)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+10(V1)h
+12(\014les,)h
+11(as)h
+12(the)h
+11(default)h
+11(in)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+11(V1)h
+11(is)h
+11(1)h
+7(.)h
+7(.)h
+7(.)h
+41(whereas)h
+281 1198(the)s
+16(default)h
+16(in)h
+15(new)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(is)h
+16(1.)h
+23(This)h
+16(is)h
+15(not)h
+16(a)h
+16(big)h
+15(problem)h
+14(b)h
+1(ecause)h
+17(most)h
+15(macros)h
+15(in)h
+15(the)h
+281 1248(old)s
+13(\014les)h
+14(w)h
+-1(ere)h
+15(used)h
+15(exactly)h
+14(once.)h
+19(Only)h
+13(a)h
+14(few)h
+14(macros)h
+13(will)h
+12(ha)h
+-1(v)h
+-1(e)h
+14(to)h
+14(b)h
+1(e)h
+14(c)h
+-1(hanged.)h
+228 1331(2.)s
+20(What)h
+13(should)h
+14(the)h
+15(syn)h
+-1(tax)h
+13(b)h
+1(e?)h
+19(\(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+14(is)h
+14(a)h
+13(sneak)h
+15(preview)h
+14(only!\))h
+177 1446(The)s
+14(initial)h
+11(prop)h
+1(osal)h
+13(for)h
+13(syn)h
+-1(tax)h
+13(w)h
+-1(as)h
+13(to)h
+13(allo)h
+-1(w)h
+12(the)h
+14(user)h
+14(to)h
+13(insert)h
+14(zero,)h
+14(one,)h
+13(or)h
+13(b)h
+1(oth)h
+13(of)h
+75(and)h
+70(just)h
+177 1496(after)s
+14(the)h
+72(of)h
+13(a)h
+14(macro)h
+13(de\014nition.)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(this)h
+14(has)h
+14(the)h
+15(follo)h
+-1(wi)h
+-1(ng)h
+12(dra)h
+-1(wbac)h
+-1(ks:)h
+228 1610(1.)s
+20(It)h
+14(uses)h
+15(t)h
+-1(w)h
+-1(o)h
+13(sequence)h
+1(s)h
+16(that)h
+14(are)h
+14(desirable)h
+14(to)h
+14(reserv)h
+-1(e)h
+16(\()h
+62(for)h
+14(conditionals)h
+13(and)h
+71(for)h
+13(macro\).)h
+228 1693(2.)s
+20(It)h
+14(stops)h
+14(the)h
+15(user)h
+15(from)h
+12(searc)h
+-1(hing)h
+14(for)h
+14(the)h
+14(string)h
+203(to)h
+13(\014nd)h
+14(the)h
+15(de\014nition)h
+13(of)h
+14(a)h
+13(macro.)h
+177 1808(These)s
+14(are)h
+12(signi\014can)h
+-1(t)h
+12(problems.)h
+17(Here)h
+13(are)h
+13(some)h
+11(alternativ)h
+-1(e)h
+12(ideas)h
+13(for)h
+12(where)h
+13(to)h
+12(p)h
+1(osition)h
+12(the)h
+13(mo)h
+1(di\014ers)h
+177 1858(in)s
+14(the)h
+14(macro)h
+13(de\014nition:)h
+177 2586(The)s
+14(\014rst)h
+13(form)h
+11(puts)h
+14(me)h
+12(o\013)h
+13(b)h
+1(ecause)h
+14(I)h
+13(think)h
+13(that)h
+13(it)h
+12(is)h
+13(a)h
+13(go)h
+1(o)h
+1(d)h
+12(visual)h
+12(rule)h
+13(to)h
+13(start)h
+14(all)h
+12(the)h
+13(macros)h
+12(with)h
+221 2635(.)s
+17(The)h
+12(second)h
+13(form)h
+10(puts)h
+13(me)h
+10(o\013)h
+12(b)h
+1(ecause)h
+14(it)h
+11(detac)h
+-1(hes)h
+13(the)h
+13(macro)h
+10(name)h
+11(from)h
+10(the)h
+13(parameter)h
+11(list,)h
+11(th)h
+-1(us)h
+177 2685(making)s
+11(it)h
+13(lo)h
+1(ok)h
+12(less)h
+14(lik)h
+-1(e)h
+13(a)h
+13(call,)h
+12(whic)h
+-1(h)h
+13(is)h
+14(desirable)h
+13(syn)h
+-1(tactic)h
+14(resonance.)h
+20(The)h
+13(third)h
+14(form)h
+11(is)h
+14(messy)h
+13(but)h
+177 2735(probably)s
+15(w)h
+-1(ork)h
+-2(able.)h
+23(Because)h
+17(w)h
+-1(e)h
+16(are)h
+16(righ)h
+-1(t)h
+16(next)h
+16(to)h
+15(the)h
+16(tested)h
+18(constan)h
+-1(t)h
+16(string)h
+16(\(either)h
+76(or)h
+59(\))h
+16(w)h
+-1(e)h
+177 2785(could)s
+15(augmen)h
+-1(t)h
+13(it)h
+14(further.)h
+21(F)h
+-3(or)h
+15(example,)h
+115(could)h
+14(allo)h
+-1(w)h
+13(a)h
+14(macro)h
+14(to)h
+14(b)h
+1(e)h
+16(called)h
+14(from)h
+13(0)h
+14(to)h
+15(1)h
+14(times.)h
+177 2835(The)s
+14(main)h
+12(problem)h
+13(with)h
+13(this)h
+14(is)h
+14(that)h
+14(w)h
+-1(e)h
+14(are)h
+14(trying)h
+14(to)h
+14(phase)h
+14(out)h
+71(an)h
+-1(yw)h
+-1(a)h
+-1(y!)h
+1042 2940(22)s
+23 @eop
+24 @bop0
+cmbx10.432 sf
+[<003F800001FFF00007E0FC000FC07E001F803F001F803F003F001F803F001F807F001F
+C07F001FC07F001FC07F001FC0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001F
+E0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001F
+E07F001FC07F001FC07F001FC07F001FC03F001F803F001F801F803F001F803F000FC07E
+0007E0FC0001FFF000003F8000>
+32 39 -3 38 34] 48 dc
+[<FFFFFFF80000FFFFFFFF8000FFFFFFFFC00003F8001FF00003F8000FF80003F80007FC
+0003F80003FC0003F80003FC0003F80003FE0003F80001FE0003F80001FE0003F80001FE
+0003F80003FE0003F80003FC0003F80003FC0003F80007F80003F8000FF00003F8001FE0
+0003F800FFC00003FFFFFE000003FFFFFFE00003F80007F00003F80003FC0003F80001FE
+0003F80001FE0003F80000FF0003F80000FF0003F80000FF8003F80000FF8003F80000FF
+8003F80000FF8003F80000FF8003F80000FF8003F80000FF0003F80001FF0003F80003FE
+0003F80007FC0003F8001FF800FFFFFFFFF000FFFFFFFFC000FFFFFFFE0000>
+48 41 -3 40 49] 66 dc
+cmbx10.300 sf
+[<FFFFFF00FFFFFF000FC01F000FC007000FC003000FC003800FC003800FC181800FC181
+800FC181800FC180000FC380000FFF80000FFF80000FC380000FC180000FC180000FC180
+600FC180600FC000E00FC000C00FC000C00FC001C00FC001C00FC003C00FC00F80FFFFFF
+80FFFFFF80>
+32 28 -2 27 31] 69 dc
+[<7FFE1FFE007FFE1FFE0007F001800003F803800001FC07000000FC06000000FE0C0000
+007F1C0000003F380000003FB00000001FE00000000FE00000000FE000000007F0000000
+03F800000007F80000000FFC0000000CFE000000187E000000387F000000703F80000060
+1F800000C01FC00001C00FE000018007F000030007F000FFF03FFF80FFF03FFF80>
+40 28 -1 27 36] 88 dc
+cmtt10.300 sf
+[<00F80003FE000FFF001F0F003E0F003C0F00780600700000F00000F3F800EFFE00FFFE
+00F80F00F00780F00780E00380F00380F00380700380780780780F003C1F001FFE000FF8
+0003E000>
+24 25 -2 24 22] 54 dc
+[<007C0000FC0000DC0001DC00039C00039C00071C000F1C000E1C001E1C003C1C00381C
+00781C00F01C00FFFFE0FFFFE0FFFFE0001C00001C00001C00001C00001C0001FFC001FF
+C001FFC0>
+24 25 -1 24 22] 52 dc
+cmr10.300 sf
+[<FFFFFFFFFF80>
+48 1 0 11 42] 124 dc
+24 @bop1
+cmsy10.300 sf
+239 1110(\017)s
+239 1194(\017)s
+239 1279(\017)s
+239 1363(\017)s
+239 1448(\017)s
+cmbx10.432 sf
+177 750(1.10)s
+70(The)h
+25(Relati)h
+-1(onship)h
+24(Bet)h
+-2(w)h
+-2(een)h
+23(Do)h
+2(cum)h
+-1(en)h
+-2(t)h
+23(Structure)h
+25(and)h
+368 825(Macro)s
+24(Structure)h
+cmbx10.300 sf
+177 292(Decision:)s
+177 1642(Basically)s
+13(a)h
+14(T)h
+439 1651(E)s
+464 1642(X)s
+15(\014le:)h
+177 2342(Confusion)s
+11(in)h
+13(F)h
+-4(unnelW)h
+-4(eb)h
+11(V1)h
+14(Heading)h
+12(Num)h
+-1(b)h
+1(ering:)h
+177 2567(Hierarc)s
+-1(hical)h
+10(n)h
+-1(um)h
+-1(berin)h
+-1(g)h
+10(is)h
+12(messy)h
+11(for)h
+12(macros:)h
+cmtt10.300 sf
+1059 167(@?)s
+669 217(@Z)s
+1416 292(@Z)s
+257(@M)h
+177 486(@$@<Slothy)s
+20(dogs@>@\(@5@\))h
+-1(@Z@M+)h
+-1(=@{@-)h
+177 536(This)s
+21(is)h
+22(a)h
+21(short)h
+21(macro.)h
+177 585(With)s
+21(only)h
+21(a)h
+22(line)h
+21(or)h
+21(two@})h
+1233 1642(.fw)s
+382 1691(.fw)s
+177 1791(@)s
+1312 2091(@A)s
+21(@B)h
+21(@C)h
+1182 2217(@)s
+243 2835(Write)s
+20(out)h
+21(the)h
+22(output[6.7.)h
+-1(4.3])h
+cmr10.300 sf
+177 42(Nev)s
+-1(ertheless)h
+1(,)h
+16(all)h
+13(the)h
+16(logic)h
+13(p)h
+1(oin)h
+-1(ts)h
+15(to)h
+14(after)h
+15(the)h
+15(parameter)h
+15(list)h
+14(as)h
+15(the)h
+15(b)h
+1(est)h
+16(place)h
+15(to)h
+14(lo)h
+1(cate)h
+15(this)h
+15(infor-)h
+177 91(mation.)s
+177 167(After)s
+21(some)h
+18(though)h
+-1(t,)h
+21(it)h
+19(w)h
+-1(as)h
+20(decided)h
+21(that)h
+20(the)h
+20(\\)h
+44(")h
+35(sequence)h
+22(b)h
+1(e)h
+20(reserv)h
+-1(ed)h
+22(for)h
+20(a)h
+19(p)h
+1(ossible)h
+20(future)h
+177 217(conditional)s
+13(facilit)h
+-1(y)h
+-3(,)h
+11(and)h
+14(so)h
+71(w)h
+-1(as)h
+14(used)h
+15(instead.)h
+384 292(The)s
+15(p)h
+1(osition)h
+13(is)h
+14(after)h
+14(the)h
+14(parameter)h
+14(list.)h
+17(The)h
+15(notation)h
+13(is)h
+71(for)h
+13(zero,)h
+15(and)h
+71(for)h
+13(man)h
+-1(y)h
+-3(.)h
+177 368(Example)s
+13(of)h
+13(\014nal)h
+13(syn)h
+-1(tax:)h
+177 942(Ha)s
+-1(ving)h
+15(already)h
+16(decided)h
+17(up)h
+1(on)h
+16(a)h
+16(fully)h
+14(hierarc)h
+-1(hical)h
+16(do)h
+1(cumen)h
+-1(t)h
+16(structure,)h
+18(I)h
+16(determined)h
+16(to)h
+16(re\014ne)h
+17(the)h
+177 992(details.)s
+18(The)h
+14(issues)h
+15(to)h
+14(b)h
+1(e)h
+15(addressed)h
+15(w)h
+-1(ere)h
+15(as)h
+14(follo)h
+-1(ws:)h
+281 1110(Ho)s
+-1(w)h
+13(should)h
+14(the)h
+15(hierarc)h
+-1(hical)h
+13(structure)h
+16(connect)h
+16(to)h
+13(the)h
+15(macro)h
+13(structure?)h
+281 1194(Ho)s
+-1(w)h
+13(can)h
+15(bac)h
+-1(kw)h
+-1(ards)h
+14(compatibil)h
+-1(it)h
+-1(y)h
+11(b)h
+1(e)h
+15(ac)h
+-1(hiev)h
+-1(ed?)h
+18(Should)h
+14(it?)h
+281 1279(Should)s
+13(the)h
+15(macros)h
+13(b)h
+1(e)h
+14(cross)h
+15(reference)h
+1(d)h
+16(b)h
+-1(y)h
+13(section)h
+15(or)h
+14(b)h
+-1(y)h
+14(de\014nition?)h
+281 1363(Should)s
+13(nameless)h
+14(sections)h
+15(inherit)h
+14(macro)h
+12(names)h
+13(as)h
+14(headings?)h
+281 1448(Should)s
+13(w)h
+-1(e)h
+14(simply)h
+12(use)h
+15(T)h
+708 1457(E)s
+731 1448(X)s
+14(macros)h
+13(to)h
+14(structure)h
+16(the)h
+14(do)h
+1(cumen)h
+-1(t?)h
+177 1566(After)s
+15(some)h
+13(though)h
+-1(t,)h
+13(I)h
+14(arriv)h
+-1(ed)h
+14(at)h
+13(the)h
+15(follo)h
+-1(wi)h
+-1(ng)h
+12(though)h
+-1(ts:)h
+607 1642(One)s
+13(option)h
+12(is)h
+12(simply)h
+10(to)h
+12(treat)h
+13(eac)h
+-1(h)h
+90(\014le)h
+13(as)h
+12(a)h
+12(T)h
+1481 1651(E)s
+1504 1642(X)s
+12(\014le)h
+13(laced)h
+12(with)h
+12(macros.)h
+177 1691(That)s
+18(is,)h
+18(a)h
+101(\014le)h
+18(could)h
+17(b)h
+1(e)h
+19(structured)h
+20(as)h
+18(a)h
+17(real)h
+18(T)h
+1117 1700(E)s
+1140 1691(X)s
+18(\014le)h
+18(from)h
+16(whic)h
+-1(h)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(could)h
+18(extract)h
+177 1741(macro)s
+13(de\014nitions.)h
+18(This)h
+13(approac)h
+-1(h)h
+14(is)h
+14(feasible)h
+13(b)h
+1(ecause)h
+16(T)h
+1157 1750(E)s
+1180 1741(X)s
+14(could)h
+13(b)h
+1(e)h
+15(programm)h
+-1(ed)h
+12(to)h
+14(resp)h
+1(ond)h
+15(to)h
+13(the)h
+212 1791(sequences)s
+15(in)h
+12(the)h
+14(same)h
+12(w)h
+-1(a)h
+-1(y)h
+12(that)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(resp)h
+1(onds)h
+14(to)h
+13(them.)h
+17(Th)h
+-1(us,)h
+12(there)h
+14(w)h
+-1(ould)h
+12(b)h
+1(e)h
+14(no)h
+12(need)h
+14(for)h
+177 1841(W)s
+-3(ea)h
+-1(v)h
+-1(e.)h
+177 1916(I)s
+15(rejected)h
+17(this)h
+15(approac)h
+-1(h,)h
+15(\014rst)h
+15(b)h
+1(ecause)h
+17(it)h
+15(is)h
+15(to)h
+1(o)h
+14(t)h
+-1(yp)h
+1(esetter)h
+1(-dep)h
+1(e)h
+1(nden)h
+-1(t,)h
+17(and)h
+15(second)h
+16(b)h
+1(ecause)h
+17(it)h
+14(com-)h
+177 1966(plicates)s
+16(the)h
+17(inclusion)h
+15(of)h
+16(an)h
+-1(y)h
+15(sort)h
+16(of)h
+16(complicated)h
+14(p)h
+1(ost-pro)h
+1(cess)h
+1(ing)h
+17(in)h
+15(the)h
+17(do)h
+1(cumen)h
+-1(tation)h
+15(\014le.)h
+24(This)h
+177 2016(w)s
+-1(ould)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(to)h
+14(b)h
+1(e)h
+14(implem)h
+-1(en)h
+-1(ted)h
+13(in)h
+13(T)h
+818 2025(E)s
+841 2016(X.)s
+177 2091(A)s
+14(b)h
+1(etter)h
+15(approac)h
+-1(h)h
+14(is)h
+13(to)h
+14(use)h
+14(an)h
+14(in)h
+-1(v)h
+-1(en)h
+-1(ted)h
+14(section)h
+14(notation)h
+13(\(e.g.)h
+192(\).)h
+13(This)h
+14(main)h
+-1(tai)h
+-1(ns)h
+12(F)h
+-3(unnel-)h
+177 2141(W)s
+-3(eb's)h
+12(t)h
+-1(yp)h
+1(esette)h
+1(r)h
+15(indep)h
+1(endence)h
+15(and)h
+12(can)h
+13(easily)h
+12(b)h
+1(e)h
+14(con)h
+-1(v)h
+-1(erted)h
+14(in)h
+-1(to)h
+12(T)h
+1365 2150(E)s
+1388 2141(X)s
+13(sectioning)h
+12(macros)h
+12(b)h
+-1(y)h
+13(W)h
+-3(ea)h
+-1(v)h
+-1(e.)h
+177 2217(In)s
+13(the)h
+14(same)h
+12(spirit,)h
+12(it)h
+13(migh)h
+-1(t)h
+11(b)h
+1(e)h
+14(w)h
+-1(orth)h
+13(in)h
+-1(tro)h
+1(ducing)h
+12(a)h
+13(few)h
+48(sequences)h
+15(for)h
+13(certain)h
+14(general)h
+13(t)h
+-1(yp)h
+1(esetting)h
+177 2267(op)s
+1(erations)h
+14(suc)h
+-1(h)h
+15(as)h
+14(italics)h
+13(and)h
+14(program)h
+12(co)h
+1(de.)h
+1227 2342(F)s
+-3(unnelW)h
+-3(eb)h
+12(V1)h
+12(uses)h
+13(t)h
+-1(w)h
+-1(o)h
+12(lev)h
+-1(els)h
+12(of)h
+11(section)h
+177 2392(headings,)s
+16(but)h
+16(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+15(all)h
+14(the)h
+16(headings)h
+16(sequen)h
+-1(tially)h
+-3(.)h
+22(In)h
+16(this,)h
+15(it)h
+16(is)h
+15(a)h
+15(little)h
+15(confused.)h
+24(Clearly)h
+15(with)h
+177 2442(a)s
+20(fully)h
+18(hierarc)h
+-1(hical)h
+19(do)h
+1(cumen)h
+-1(t)h
+20(structure,)h
+22(the)h
+21(headings)h
+19(cannot)h
+20(b)h
+1(e)h
+20(n)h
+-1(um)h
+-1(b)h
+1(ered)h
+20(sequen)h
+-1(tially)h
+19(|)h
+19(the)h
+177 2492(n)s
+-1(um)h
+-1(b)h
+1(ering)h
+13(m)h
+-1(ust)h
+13(re\015ect)h
+15(the)h
+15(structure)h
+16(\(e.g.)h
+13(3.2.1\).)h
+1105 2567(Unfortunately)s
+-3(,)h
+11(hierarc)h
+-1(hical)h
+10(n)h
+-1(um)h
+-1(b)h
+1(ering)h
+10(is)h
+10(messy)h
+177 2617(and)s
+14(confusing)h
+13(when)h
+15(applied)h
+13(to)h
+14(macro)h
+12(names.)h
+18(In)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(V1's)h
+14(t)h
+-1(yp)h
+1(eset)h
+15(output,)h
+14(eac)h
+-1(h)h
+14(macro)h
+13(call)h
+177 2667(has)s
+15(app)h
+1(ended)h
+15(in)h
+14(square)h
+15(brac)h
+-1(k)h
+-1(ets)h
+16(the)h
+15(n)h
+-1(um)h
+-1(b)h
+1(er)h
+14(of)h
+13(the)h
+15(section)h
+16(in)h
+14(whic)h
+-1(h)h
+14(the)h
+15(macro)h
+13(is)h
+14(de\014ned.)h
+21(Use)h
+15(of)h
+177 2716(hierarc)s
+-1(hical)h
+14(n)h
+-1(um)h
+-1(b)h
+1(ering)h
+12(w)h
+-1(ould)h
+14(b)h
+1(e)h
+14(somewhat)h
+13(messy)h
+-3(.)h
+17(F)h
+-3(or)h
+14(example,)h
+12(a)h
+13(macro)h
+13(call)h
+13(migh)h
+-1(t)h
+12(lo)h
+1(ok)h
+13(lik)h
+-1(e.)h
+1042 2940(23)s
+24 @eop
+25 @bop0
+25 @bop1
+cmsy10.300 sf
+239 1640(\017)s
+239 1741(\017)s
+239 1842(\017)s
+239 1943(\017)s
+239 2045(\017)s
+239 2146(\017)s
+239 2473(\017)s
+239 2574(\017)s
+239 2676(\017)s
+239 2777(\017)s
+cmti10.300 sf
+696 702(input)s
+14(format)h
+158(typ)h
+-2(eset)h
+13(output)h
+cmtt10.300 sf
+243 180(This)s
+21(macro)h
+20(is)h
+22(used)h
+21(in)h
+21(3.4.5,)h
+21(1.2,)h
+21(7.8.9,)h
+20(7.4,)h
+21(2.2.1.1.)h
+1563 752(.fw)s
+692 951(.fw)s
+1198 1640(@A)s
+25(@B)h
+1149 1741(@<@>)s
+cmbx10.300 sf
+177 319(Separate)s
+12(n)h
+-1(um)h
+-1(b)h
+1(eri)h
+-1(ng)h
+11(for)h
+13(macros)h
+14(and)h
+13(headings)h
+-1(:)h
+177 652(Input)s
+14(format)h
+14(matters)h
+13(more)h
+15(than)h
+14(output)h
+13(format:)h
+177 1168(Naming)s
+17(sections:)h
+cmr10.300 sf
+177 42(Simil)s
+-1(arly)h
+-4(,)h
+12(cross)h
+15(reference)h
+16(lists)h
+14(w)h
+-1(ould)h
+13(b)h
+1(e)h
+15(messy:)h
+1143 319(One)s
+13(idea)h
+12(is)h
+12(to)h
+12(use)h
+12(hierarc)h
+-1(hical)h
+12(n)h
+-1(um)h
+-1(b)h
+1(ering)h
+11(for)h
+177 369(the)s
+13(sections,)h
+14(but)h
+13(to)h
+12(n)h
+-1(um)h
+-1(b)h
+1(er)h
+12(the)h
+13(macros)h
+12(sequen)h
+-1(tially)h
+-3(.)h
+16(This)h
+13(could)h
+12(b)h
+1(e)h
+13(a)h
+13(little)h
+12(confusing)h
+12(in)h
+12(do)h
+1(cumen)h
+-1(ts)h
+177 419(without)s
+15(m)h
+-1(uc)h
+-1(h)h
+15(structure,)h
+17(but)h
+16(w)h
+-1(ould)h
+15(b)h
+1(e)h
+16(v)h
+-1(ery)h
+16(m)h
+-1(uc)h
+-1(h)h
+15(less)h
+16(messy)h
+15(than)h
+16(cross)h
+16(referencing)h
+17(using)h
+16(hierar-)h
+177 469(c)s
+-1(hical)h
+15(n)h
+-1(um)h
+-1(b)h
+1(ering.)h
+22(Also,)h
+15(it)h
+15(will)h
+14(b)h
+1(e)h
+16(easier)h
+16(to)h
+16(\014nd)h
+15(macros)h
+15(indexed)h
+16(b)h
+-1(y)h
+15(a)h
+15(sequen)h
+-1(tial)h
+16(n)h
+-1(um)h
+-1(b)h
+1(er)h
+15(than)h
+15(b)h
+-1(y)h
+177 519(section,)s
+15(whic)h
+-1(h)h
+15(has)h
+15(a)h
+15(less)h
+15(direct)h
+16(relationship)h
+14(with)h
+15(page)h
+15(bulk)h
+14(and)h
+15(n)h
+-1(um)h
+-1(b)h
+1(er.)h
+20(By)h
+15(macro)h
+13(n)h
+-1(um)h
+-1(b)h
+1(ering)h
+14(is)h
+177 568(mean)s
+-1(t)h
+13(the)h
+14(sequen)h
+-1(tial)h
+14(n)h
+-1(um)h
+-1(b)h
+1(ering)h
+13(of)h
+13(eac)h
+-1(h)h
+14(macro)h
+13(b)h
+1(o)h
+1(dy)h
+14(part)h
+14(through)h
+14(the)h
+15(whole)h
+13(do)h
+1(cumen)h
+-1(t.)h
+1197 652(A)s
+-1(t)h
+13(this)h
+14(p)h
+1(oin)h
+-1(t)h
+12(w)h
+-1(e)h
+14(realize)h
+14(that)h
+13(a)h
+13(distinction)h
+177 702(should)s
+12(b)h
+1(e)h
+12(made)h
+10(b)h
+1(et)h
+-1(w)h
+-1(een)h
+13(the)h
+251(and)h
+11(the)h
+261(.)h
+18(The)h
+12(critical)h
+11(issue)h
+12(here)h
+13(is)h
+12(not)h
+11(ho)h
+-1(w)h
+177 752(the)s
+16(program)h
+14(should)h
+15(b)h
+1(e)h
+17(formatted)h
+14(for)h
+15(prin)h
+-1(ting,)h
+15(but)h
+15(rather)h
+17(the)h
+16(format)h
+13(of)h
+15(its)h
+97(\014le.)h
+22(The)h
+16(t)h
+-1(yp)h
+1(eset)h
+177 802(output)s
+14(can)h
+15(alw)h
+-1(a)h
+-1(ys)h
+13(b)h
+1(e)h
+14(c)h
+-1(hanged)h
+15(simply)h
+12(b)h
+-1(y)h
+14(\014ddling)h
+13(with)h
+13(W)h
+-3(ea)h
+-1(v)h
+-1(e.)h
+18(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(as)h
+14(so)h
+1(on)h
+14(as)h
+15(the)h
+14(do)h
+1(cumen)h
+-1(t)h
+177 851(structuring)s
+14(features)h
+13(of)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(are)h
+13(\014xed,)h
+12(they)h
+13(will)h
+11(b)h
+1(e)h
+13(used)h
+14(in)h
+12(dozens)h
+13(or)h
+12(h)h
+-1(undreds)h
+14(of)h
+12(do)h
+1(cumen)h
+-1(ts)h
+177 901(and)s
+15(it)h
+15(will)h
+14(b)h
+1(e)h
+16(v)h
+-1(ery)h
+16(di\016cult)h
+15(indeed)h
+16(to)h
+15(c)h
+-1(hange)h
+16(them.)h
+21(Therefore,)h
+17(the)h
+16(imp)h
+1(ortan)h
+-1(t)h
+14(thing)h
+14(is)h
+16(to)h
+15(pro)h
+-1(vide)h
+177 951(as)s
+14(sensible)h
+15(and)h
+14(expressiv)h
+-1(e)h
+15(a)h
+93(format)h
+12(as)h
+14(p)h
+1(ossible.)h
+177 1035(It)s
+11(is)h
+11(therefore)h
+12(a)h
+10(separate)h
+12(decision)h
+11(as)h
+11(to)h
+10(whether)h
+12(w)h
+-1(e)h
+11(should)h
+11(n)h
+-1(um)h
+-1(b)h
+1(er)h
+10(macros)h
+10(b)h
+-1(y)h
+10(section)h
+11(or)h
+11(b)h
+-1(y)h
+11(sequence)h
+177 1085(n)s
+-1(um)h
+-1(b)h
+1(er.)h
+17(The)h
+15(imp)h
+1(ortan)h
+-1(t)h
+12(thing)h
+13(is)h
+14(to)h
+14(address)h
+15(the)h
+14(format)h
+13(and)h
+13(rules)h
+15(for)h
+13(the)h
+15(expression)h
+15(of)h
+13(structure.)h
+556 1168(The)s
+16(naming)h
+13(of)h
+15(sections)h
+16(requires)h
+17(some)h
+14(though)h
+-1(t.)h
+22(In)h
+16(man)h
+-1(y)h
+13(cases)h
+17(\(esp)h
+1(ecially)h
+15(in)h
+177 1218(the)s
+19(case)h
+19(of)h
+17(high-lev)h
+-1(el)h
+17(sections\))h
+19(the)h
+18(writer)h
+19(will)h
+16(pro)h
+-1(vide)h
+18(an)h
+18(explicit)h
+17(name)h
+17(for)h
+18(a)h
+17(section.)h
+31(In)h
+18(other)h
+177 1268(cases,)s
+15(pro)h
+-1(vision)h
+13(of)h
+13(suc)h
+-1(h)h
+14(a)h
+14(name)h
+12(will)h
+13(merely)h
+13(duplicate)h
+13(the)h
+15(name)h
+12(of)h
+13(the)h
+15(macro)h
+12(con)h
+-1(tained)h
+14(within)h
+13(the)h
+177 1318(section.)s
+23(It)h
+15(therefore)h
+17(mak)h
+-1(es)h
+14(sense)h
+17(to)h
+15(allo)h
+-1(w)h
+13(the)h
+16(user)h
+16(to)h
+15(omit)h
+14(the)h
+15(name)h
+14(from)h
+14(a)h
+15(section,)h
+15(with)h
+15(W)h
+-3(ea)h
+-1(v)h
+-1(e)h
+177 1368(naming)s
+10(the)h
+14(section)h
+13(after)h
+13(the)h
+13(\014rst)h
+14(macro)h
+11(de\014nition)h
+12(in)h
+12(the)h
+14(section.)h
+18(If)h
+12(a)h
+13(macro)h
+11(is)h
+12(unnamed)h
+12(and)h
+12(there)h
+177 1417(is)s
+14(no)h
+14(macro)h
+12(in)h
+14(the)h
+14(section,)h
+14(an)h
+14(error)h
+15(can)h
+14(b)h
+1(e)h
+14(generated.)h
+177 1501(All)s
+13(these)h
+16(though)h
+-1(ts)h
+14(lead)h
+13(to)h
+14(the)h
+14(follo)h
+-1(wing)h
+12(sc)h
+-1(heme:)h
+281 1640(Do)s
+1(cumen)h
+-1(ts)h
+13(will)h
+13(b)h
+1(e)h
+14(hierarc)h
+-1(hically)h
+14(structured)h
+16(using)h
+57(,)h
+71(etc.)h
+281 1741(Eac)s
+-1(h)h
+14(section)h
+15(can)h
+14(b)h
+1(e)h
+14(giv)h
+-1(en)h
+14(a)h
+13(name)h
+13(delimited)h
+12(b)h
+-1(y)h
+102(.)h
+281 1842(Sections)s
+15(that)h
+14(do)h
+13(not)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(names)h
+13(inherit)h
+14(the)h
+14(name)h
+13(of)h
+13(their)h
+14(\014rst)h
+15(macro.)h
+281 1943(If)s
+13(a)h
+14(section)h
+15(do)h
+1(es)h
+14(not)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(a)h
+13(name)h
+13(or)h
+14(a)h
+14(macro,)h
+12(it)h
+13(is)h
+14(erroneous.)h
+281 2045(Sections)s
+15(will)h
+12(b)h
+1(e)h
+15(n)h
+-1(um)h
+-1(b)h
+1(ered)h
+13(hierarc)h
+-1(hically)h
+13(either)h
+15(b)h
+-1(y)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(or)h
+14(b)h
+-1(y)h
+14(T)h
+1551 2054(E)s
+1574 2045(X.)s
+281 2146(Macro)s
+12(b)h
+1(o)h
+1(dy)h
+11(parts)h
+12(will)h
+10(b)h
+1(e)h
+12(n)h
+-1(um)h
+-1(b)h
+1(ered)h
+11(sequen)h
+-1(tially)h
+11(b)h
+-1(y)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+11(and)h
+12(cross)h
+12(reference)h
+1(d)h
+13(b)h
+-1(y)h
+11(these)h
+281 2196(n)s
+-1(um)h
+-1(b)h
+1(ers.)h
+177 2334(All)s
+13(this)h
+14(results)h
+15(in)h
+14(a)h
+13(system)h
+14(whic)h
+-1(h:)h
+281 2473(Pro)s
+-1(vides)h
+14(a)h
+14(hierarc)h
+-1(hical)h
+14(do)h
+1(cumen)h
+-1(t)h
+13(structuring)h
+15(capabilit)h
+-1(y)h
+-3(.)h
+281 2574(Is)s
+14(t)h
+-1(yp)h
+1(esetter)h
+16(indep)h
+1(enden)h
+-1(t.)h
+281 2676(Do)s
+1(es)h
+14(not)h
+14(require)h
+15(duplication)h
+13(b)h
+1(et)h
+-1(w)h
+-1(een)h
+15(heading)h
+13(and)h
+14(macro)h
+13(names.)h
+281 2777(Separates)s
+14(the)h
+13(heading)h
+12(and)h
+13(macro)h
+11(systems)h
+13(so)h
+12(that)h
+13(W)h
+-3(ea)h
+-1(v)h
+-1(e)h
+12(can)h
+13(b)h
+1(e)h
+13(con\014gured)h
+14(at)h
+12(a)h
+12(later)h
+13(date)h
+13(to)h
+281 2827(cross)s
+15(reference)h
+16(in)h
+14(di\013eren)h
+-1(t)h
+15(w)h
+-1(a)h
+-1(ys)h
+13(without)h
+14(requiring)h
+13(input)h
+14(\014les)h
+14(to)h
+14(b)h
+1(e)h
+15(rew)h
+-1(ork)h
+-1(ed.)h
+1042 2940(24)s
+25 @eop
+26 @bop0
+cmtt10.300 sf
+[<183C3E1E0E0E0E1E1C3C78F060>
+8 13 -7 24 22] 39 dc
+26 @bop1
+cmbx10.432 sf
+177 42(1.11)s
+70(Diagnostic)h
+22(Messages)h
+177 2129(1.12)s
+70(Summ)h
+-3(ary)h
+cmr10.300 sf
+177 157(In)s
+14(F)h
+-3(unnelW)h
+-3(eb,)h
+13(all)h
+13(error)h
+15(messages)h
+14(commence)h
+13(with)h
+14(an)h
+14(indicator)h
+13(indicating)h
+13(the)h
+15(sev)h
+-1(erit)h
+-1(y)h
+15(of)h
+13(the)h
+15(error)h
+177 207(message.)s
+18(Here)h
+15(are)h
+14(some)h
+13(of)h
+14(the)h
+14(formats)h
+12(that)h
+14(I)h
+14(in)h
+-1(v)h
+-1(estigated)h
+14(b)h
+1(efore)h
+15(settling)h
+13(on)h
+14(the)h
+15(\014nal)h
+13(format:)h
+177 2245(This)s
+16(rather)h
+18(unstructured)h
+18(c)h
+-1(hapter)h
+18(has)h
+16(addressed)h
+18(some)h
+16(of)h
+15(the)h
+17(k)h
+-1(ey)h
+17(design)h
+16(decisions)h
+17(of)h
+16(F)h
+-3(unnelW)h
+-3(eb.)h
+177 2295(In)s
+14(man)h
+-1(y)h
+12(cases,)h
+15(the)h
+15(alternativ)h
+-1(es)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(b)h
+1(een)h
+15(unpleasan)h
+-1(t,)h
+13(but)h
+14(I)h
+14(am)h
+13(con\014den)h
+-1(t)h
+14(that)h
+14(in)h
+14(all)h
+13(cases,)h
+14(a)h
+14(fully)h
+177 2345(w)s
+-1(ork)h
+-2(able)h
+13(solution)h
+13(has)h
+14(b)h
+1(een)h
+15(found.)h
+1042 2940(25)s
+cmtt10.300 sf
+177 323(W--Error)s
+20(creating)h
+20(sloth.)h
+177 373(E--Error)s
+20(opening)h
+21(output)h
+20(file.)h
+177 423(S--I'm)s
+21(a)h
+21(teapot.)h
+177 473(F--Can't)s
+20(open)h
+21(output)h
+21(file.)h
+177 572(W-Error)s
+21(creating)h
+20(sloth.)h
+177 622(E-Error)s
+21(opening)h
+20(output)h
+20(file.)h
+177 672(S-I'm)s
+21(a)h
+22(teapot.)h
+177 722(F-Can't)s
+21(open)h
+20(output)h
+21(file.)h
+177 822(W:Error)s
+21(creating)h
+20(sloth.)h
+177 871(E:Error)s
+21(opening)h
+20(output)h
+20(file.)h
+177 921(S:I'm)s
+21(a)h
+22(teapot.)h
+177 971(F:Can't)s
+21(open)h
+20(output)h
+21(file.)h
+177 1071(W:)s
+22(Error)h
+20(creating)h
+20(sloth.)h
+152(--)h
+21(Format)h
+21(chosen.)h
+177 1120(E:)s
+22(Error)h
+20(opening)h
+21(output)h
+20(file.)h
+177 1170(S:)s
+22(I'm)h
+21(a)h
+21(teapot.)h
+177 1220(F:)s
+22(Can't)h
+20(open)h
+21(output)h
+21(file.)h
+177 1320(War-Error)s
+20(creating)h
+20(sloth.)h
+177 1369(Err-Error)s
+20(opening)h
+20(output)h
+21(file.)h
+177 1419(Sev-I'm)s
+21(a)h
+21(teapot.)h
+177 1469(Fat-Can't)s
+20(open)h
+21(output)h
+21(file.)h
+177 1569(W-Old)s
+21(fashioned)h
+20(feature.)h
+177 1668(W-Old)s
+21(fashioned)h
+20(feature.)h
+177 1768(W--Old)s
+21(fashioned)h
+20(feature.)h
+177 1868(W:)s
+22(Old)h
+21(fashioned)h
+20(feature.)h
+177 1967(W:Old)s
+21(fashioned)h
+20(feature.)h
+26 @eop
+27 @bop0
+27 @bop1
+cmr10.300 sf
+1042 2940(26)s
+27 @eop
+28 @bop0
+cmbx10.622 sf
+[<0007FE0000007FFFE00001FFFFF80003FFFFFE000FF01FFF001FC007FFC03F0003FFE0
+7E0001FFE07FC000FFF07FE000FFF8FFF0007FF8FFF0007FF8FFF0003FFCFFF0003FFCFF
+F0003FFCFFF0003FFC7FE0003FFC7FE0003FFC1F80003FFC0000003FFC0000003FF80000
+007FF80000007FF80000007FF0000000FFE0000000FFE0000001FFC0000003FF80000003
+FF00000007FE0000000FF80000001FF00000001FE00000003F800000007F00000000FE00
+000001FC00000003F0003C0007E0003C000FC0003C001F800078003F000078007C000078
+00F80000F800F00000F801FFFFFFF803FFFFFFF007FFFFFFF00FFFFFFFF01FFFFFFFF03F
+FFFFFFF07FFFFFFFF0FFFFFFFFF0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0>
+40 56 -5 55 49] 50 dc
+cmbx10.746 sf
+[<FFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE000FFFE000000FFFE000
+000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE00000
+0FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000F
+FFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFF
+E000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE0
+00000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000
+000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE00000
+0FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000F
+FFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFF
+E000000FFFE000FFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE>
+40 71 -3 70 45] 73 dc
+[<007FC00FFC000000FFFFC07FFFC00000FFFFC3FFFFF00000FFFFCFFFFFFC0000FFFFDF
+F01FFF0000FFFFFF8007FF800003FFFE0001FFC00001FFF80000FFE00001FFF00000FFF0
+0001FFE000007FF80001FFE000003FFC0001FFE000003FFC0001FFE000003FFE0001FFE0
+00001FFE0001FFE000001FFF0001FFE000001FFF0001FFE000001FFF0001FFE000000FFF
+0001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE0
+00000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF
+8001FFE000000FFF8001FFE000000FFF0001FFE000001FFF0001FFE000001FFF0001FFE0
+00001FFE0001FFE000001FFE0001FFE000003FFC0001FFE000003FFC0001FFE000007FF8
+0001FFF000007FF80001FFF80000FFF00001FFFC0001FFE00001FFFE0003FFC00001FFFF
+0007FF800001FFFFE03FFE000001FFEFFFFFFC000001FFE3FFFFF0000001FFE0FFFF8000
+0001FFE01FF800000001FFE0000000000001FFE0000000000001FFE0000000000001FFE0
+000000000001FFE0000000000001FFE0000000000001FFE0000000000001FFE000000000
+0001FFE0000000000001FFE0000000000001FFE0000000000001FFE0000000000001FFE0
+000000000001FFE0000000000001FFE00000000000FFFFFFC000000000FFFFFFC0000000
+00FFFFFFC000000000FFFFFFC000000000FFFFFFC000000000>
+64 66 -4 45 66] 112 dc
+cmbx10.432 sf
+[<FFFFF01FFFFEFFFFF01FFFFEFFFFF01FFFFE03FC00007F8003FC00007F8003FC00007F
+8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F
+8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F
+8003FFFFFFFF8003FFFFFFFF8003FFFFFFFF8003FC00007F8003FC00007F8003FC00007F
+8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F
+8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F
+8003FC00007F8003FC00007F80FFFFF01FFFFEFFFFF01FFFFEFFFFF01FFFFE>
+48 41 -3 40 54] 72 dc
+28 @bop1
+cmbx10.622 sf
+177 375(Chapter)s
+34(2)h
+cmbx10.300 sf
+502 1454([USDOD83])s
+cmbx10.746 sf
+177 606(F)s
+-10(unnelW)h
+-10(eb)h
+41(Implemen)h
+-3(tation)h
+cmbx10.432 sf
+177 869(2.1)s
+70(In)h
+-2(tro)h
+2(duction)h
+177 1241(2.2)s
+70(History)h
+22(of)h
+24(F)h
+-6(unnelW)h
+-6(eb)h
+22(Impl)h
+-1(e)h
+-1(m)h
+-2(e)h
+-1(n)h
+-2(tati)h
+-1(ons)h
+cmr10.300 sf
+177 982(This)s
+13(c)h
+-1(hapter)h
+13(con)h
+-1(tains)h
+13(notes)h
+13(on)h
+13(the)h
+13(actual)h
+12(C)h
+13(co)h
+1(de)h
+13(that)h
+13(implem)h
+-1(en)h
+-1(ts)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+12(V3.)h
+18(This)h
+12(c)h
+-1(hapter)h
+14(is)h
+177 1032(rather)s
+15(patc)h
+-1(h)h
+-1(y)h
+-3(.)h
+20(It)h
+14(has)h
+15(acted)h
+15(mainly)h
+12(as)h
+14(a)h
+15(dumping)h
+12(ground)h
+14(for)h
+15(ideas)h
+14(that)h
+15(I)h
+14(b)h
+1(othered)h
+16(to)h
+14(write)h
+15(ab)h
+1(out)h
+177 1082(during)s
+14(dev)h
+-1(elopmen)h
+-1(t.)h
+177 1354(The)s
+16(\014rst)h
+17(implem)h
+-1(en)h
+-1(tation)h
+13(of)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(\(F)h
+-3(unnelW)h
+-3(eb)h
+15(V1\))h
+16(w)h
+-1(as)h
+16(written)h
+16(in)h
+16(Ada)h
+16(in)h
+15(Decem)h
+-1(b)h
+1(er)h
+16(1986.)h
+177 1404(The)s
+15(pro)h
+2(ject)h
+16(w)h
+-1(as)h
+14(initially)h
+12(canned)h
+15(as)h
+15(requiring)h
+14(to)h
+1(o)h
+14(m)h
+-1(uc)h
+-1(h)h
+14(time,)h
+13(but)h
+14(w)h
+-1(as)h
+15(resurrecte)h
+1(d)h
+16(when)h
+15(I)h
+15(decided)h
+177 1454(to)s
+13(commi)h
+-1(t)h
+11(to)h
+14(Ada)h
+259(and)h
+13(realized)h
+14(that)h
+13(I)h
+13(needed)h
+15(a)h
+13(program)h
+12(to)h
+13(write)h
+13(to)h
+13(help)h
+13(me)h
+13(to)h
+13(learn)h
+177 1504(Ada.)s
+18(F)h
+-3(unnelW)h
+-3(eb)h
+13(V1)h
+14(w)h
+-1(as,)h
+14(in)h
+13(fact,)h
+13(m)h
+-1(y)h
+13(\014rst)h
+14(Ada)h
+14(program.)h
+16(It)h
+14(to)h
+1(ok)h
+14(ab)h
+1(out)h
+14(one)h
+14(mon)h
+-1(th)h
+12(to)h
+14(write.)h
+177 1576(F)s
+-3(unnelW)h
+-3(eb)h
+21(V1)h
+21(w)h
+-1(as)h
+21(used)h
+22(in)h
+-1(tensiv)h
+-1(ely)h
+21(b)h
+-1(y)h
+21(m)h
+-1(yself)h
+19(to)h
+22(write)h
+21(Ada)h
+21(programs)h
+20(from)h
+20(Jan)h
+-1(uary)h
+21(1986)h
+20(to)h
+177 1626(July)s
+18(1989)h
+17(at)h
+18(whic)h
+-1(h)h
+18(time)h
+17(I)h
+18(\014nished)h
+19(m)h
+-1(y)h
+17(Ph.D.)h
+17(and)h
+18(lost)h
+18(access)h
+20(to)h
+18(the)h
+19(V)h
+-5(AX.)h
+18(During)h
+18(this)h
+18(time)h
+17(at)h
+177 1676(least)s
+16(t)h
+-1(w)h
+-1(en)h
+-1(t)h
+-1(y)h
+16(thousand)h
+16(lines)h
+15(of)h
+15(co)h
+1(de)h
+16(w)h
+-1(ere)h
+17(generated)h
+17(using)h
+15(F)h
+-3(unnelW)h
+-3(eb.)h
+23(Hardly)h
+15(an)h
+-1(y)h
+-1(one)h
+16(but)h
+15(m)h
+-1(yself)h
+177 1726(used)s
+15(F)h
+-3(unnelW)h
+-3(eb.)h
+177 1798(After)s
+14(losing)h
+13(access)h
+15(to)h
+13(Ada)h
+14(and)h
+13(the)h
+14(V)h
+-3(ax)h
+13(\(and)h
+13(hence)h
+15(to)h
+13(F)h
+-3(unnelW)h
+-3(eb\),)h
+13(I)h
+13(w)h
+-1(as)h
+14(forced)h
+14(bac)h
+-1(k)h
+13(to)h
+14(program-)h
+177 1848(ming)s
+9(the)h
+11(non-literate)h
+11(w)h
+-1(a)h
+-1(y)h
+-3(.)h
+16(F)h
+-3(rom)h
+9(time)h
+9(to)h
+11(time)h
+9(I)h
+11(found)h
+11(that)h
+10(I)h
+11(needed)h
+12(to)h
+11(use)h
+12(some)h
+10(of)h
+10(m)h
+-1(y)h
+9(old)h
+10(programs)h
+177 1898(that)s
+15(I)h
+14(had)h
+15(written)h
+15(using)h
+14(Ada)h
+15(and)h
+14(F)h
+-3(unnelW)h
+-3(eb.)h
+19(I)h
+15(knew)h
+15(that)h
+14(Ada)h
+15(w)h
+-1(ould)h
+14(b)h
+1(ecome)h
+14(a)h
+-1(v)h
+-2(ailabl)h
+-1(e)h
+13(on)h
+15(more)h
+177 1947(mac)s
+-1(hines,)h
+13(but)h
+14(certainly)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(w)h
+-1(ouldn't.)h
+17(I)h
+14(recognised)h
+15(a)h
+14(strong)h
+14(need)h
+15(for)h
+13(a)h
+14(p)h
+1(ortable)h
+14(v)h
+-1(ersion)h
+14(of)h
+177 1997(F)s
+-3(unnelW)h
+-3(eb)h
+14(written)h
+14(in)h
+13(C)h
+14(but)h
+14(didn't)h
+14(ha)h
+-1(v)h
+-1(e)h
+13(the)h
+15(time)h
+12(or)h
+14(energy)h
+15(to)h
+14(create)h
+15(one.)h
+177 2070(Ab)s
+1(out)h
+20(this)h
+20(time)h
+19(\(late)h
+20(1989\),)h
+20(Da)h
+-1(vid)h
+19(Hulse,)h
+21(at)h
+20(the)h
+20(time)h
+19(a)h
+19(studen)h
+-1(t)h
+21(in)h
+20(Computer)h
+19(Science)h
+21(at)h
+20(the)h
+177 2119(Univ)s
+-1(ersit)h
+-1(y)h
+16(of)h
+15(Adelaide,)h
+16(v)h
+-1(olun)h
+-1(teered)h
+17(to)h
+15(translate)h
+16(the)h
+17(4000)h
+15(line)h
+15(Ada)h
+16(v)h
+-1(ersion)h
+16(of)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(in)h
+-1(to)h
+15(C.)h
+177 2169(T)s
+-3(o)h
+13(m)h
+-1(y)h
+11(kno)h
+-1(wledge)h
+14(this)h
+13(translation)h
+13(pro)h
+1(cess)h
+15(to)h
+1(ok)h
+13(ab)h
+1(out)h
+13(three)h
+15(w)h
+-1(eeks)h
+14(\(in)h
+13(Decem)h
+-1(b)h
+1(er)h
+14(1989\).)h
+17(The)h
+14(result)h
+177 2219(w)s
+-1(as)h
+14(called)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(V2)h
+14(and)h
+13(w)h
+-1(as)h
+14(formall)h
+-1(y)h
+12(signed)h
+14(in)h
+-1(to)h
+13(the)h
+15(public)h
+13(domain)h
+12(on)h
+14(5)h
+13(Ma)h
+-1(y)h
+14(1992.)h
+177 2291(In)s
+18(general,)h
+19(Da)h
+-1(vid)h
+16(Hulse)h
+19(did)h
+17(a)h
+18(go)h
+1(o)h
+1(d)h
+18(job.)h
+29(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+19(the)h
+19(resultan)h
+-1(t)h
+18(co)h
+1(de)h
+19(su\013ered)h
+20(from)h
+16(one)h
+18(or)h
+18(few)h
+177 2341(serious)s
+15(defects,)h
+15(the)h
+14(most)h
+13(serious)h
+15(of)h
+13(whic)h
+-1(h)h
+14(w)h
+-1(as)h
+13(a)h
+14(lac)h
+-1(k)h
+13(of)h
+14(p)h
+1(ortabilit)h
+-1(y)h
+-3(.)h
+177 2414(Lac)s
+-1(k)h
+10(of)h
+10(p)h
+1(ortabilit)h
+-1(y)h
+9(of)h
+9(the)h
+11(C)h
+10(co)h
+1(de,)h
+12(com)h
+-1(bined)h
+8(with)h
+10(the)h
+11(need)h
+11(for)h
+10(a)h
+10(rather)h
+11(solid)h
+10(design)h
+10(review,)h
+11(com)h
+-1(bined)h
+177 2463(with)s
+17(the)h
+17(need)h
+18(to)h
+16(strengthen)h
+19(the)h
+17(program)h
+15(to)h
+17(bring)h
+16(it)h
+16(up)h
+17(to)h
+17(pro)h
+1(duction)h
+17(standard,)h
+17(resulted)h
+18(in)h
+16(m)h
+-1(y)h
+177 2513(p)s
+1(erforming)h
+10(a)h
+12(complete)h
+11(rew)h
+-1(orking)h
+11(of)h
+11(the)h
+13(co)h
+1(de.)h
+18(The)h
+12(C)h
+12(co)h
+1(de)h
+12(w)h
+-1(as)h
+12(en)h
+-1(tirely)h
+-3(,)h
+11(but)h
+12(incremen)h
+-1(tally)h
+-3(,)h
+10(replaced)h
+177 2563(or)s
+20(reformatted.)h
+36(The)h
+21(co)h
+1(de)h
+20(w)h
+-1(as)h
+20(also)h
+20(strengthened)h
+22(and)h
+20(new)h
+20(features)h
+21(w)h
+-1(ere)h
+21(added.)h
+37(This)h
+20(pro)h
+1(cess)h
+177 2613(to)s
+1(ok)h
+17(ab)h
+1(out)h
+18(t)h
+-1(w)h
+-1(o)h
+17(mon)h
+-1(ths)h
+16(\(No)h
+-1(v)h
+-1(em)h
+-1(b)h
+1(er)h
+17(and)h
+18(Decem)h
+-1(b)h
+1(er)h
+18(1991\).)h
+28(A)h
+17(further)h
+19(t)h
+-1(w)h
+-1(o)h
+17(mon)h
+-1(ths)h
+16(\(appro)h
+-1(x\))h
+18(w)h
+-1(ere)h
+177 2663(sp)s
+1(en)h
+-1(t)h
+13(writing)h
+12(do)h
+1(cumen)h
+-1(tation,)h
+11(constructing)h
+13(a)h
+12(regression)h
+13(test)h
+14(suite,)h
+12(p)h
+1(orting)h
+12(the)h
+13(program)h
+11(to)h
+12(di\013eren)h
+-1(t)h
+177 2712(mac)s
+-1(hines,)h
+13(and)h
+13(sorting)h
+14(out)h
+14(the)h
+14(legal)h
+13(issues)h
+15(in)h
+-1(v)h
+-1(olv)h
+-1(ed)h
+13(in)h
+13(its)h
+14(release.)h
+177 2785(I)s
+14(w)h
+-1(ould)h
+13(lik)h
+-1(e)h
+14(to)h
+14(tak)h
+-1(e)h
+14(this)h
+14(opp)h
+1(ortunit)h
+-1(y)h
+14(to)h
+14(record)h
+15(a)h
+14(debt)h
+14(of)h
+14(gratitude)h
+14(to)h
+14(Da)h
+-1(vid)h
+13(Hulse)h
+14(who)h
+14(translated)h
+177 2835(F)s
+-3(unnelW)h
+-3(eb)h
+13(from)h
+11(Ada)h
+13(to)h
+12(C.)h
+13(Although)h
+12(m)h
+-1(y)h
+11(rew)h
+-1(orking)h
+13(of)h
+12(his)h
+13(C)h
+13(co)h
+1(de)h
+14(obliterated)h
+13(most)h
+11(of)h
+13(his)h
+12(co)h
+1(de,)h
+14(his)h
+1042 2940(27)s
+28 @eop
+29 @bop0
+cmbx10.432 sf
+[<1C007F00FF80FF80FFC0FFC0FFC07FC01CC000C000C001C0018001800380070006000E
+001C0038003000>
+16 21 -5 41 19] 39 dc
+[<FFFFF001FFFCFFFFF001FFFCFFFFF001FFFC03FC0000070003FC0000070003FC000007
+0003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC000007
+0003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC000007
+0003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC000007
+0003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC000007
+0003FC00000F0001FC00000E0001FE00000E0000FE00001E0000FF00003C00007F800078
+00003FC000F800001FF007E0000007FFFFC0000001FFFF000000001FF80000>
+48 41 -3 40 53] 85 dc
+cmr8.300 sf
+[<7FFFF86038184038084038088038048038048038040038000038000038000038000038
+0000380000380000380000380000380000380000380000380000380000380007FFC0>
+24 23 -1 22 25] 84 dc
+[<FC00001C00001C00001C00001C00001C00001C00001C00001C00001CF8001F06001C03
+001C03801C01801C01C01C01C01C01C01C01C01C01801C03801C03001B0E0010F800>
+24 23 0 22 20] 98 dc
+cmbx10.300 sf
+[<03F8000F1E001C07003C07803803807803C07803C07803C0F803E0F803E0F803E0F803
+E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E07803C07803C03803803C07
+801C07000F1E0003F800>
+24 27 -2 26 24] 48 dc
+29 @bop1
+cmr7.300 sf
+935 1347(1)s
+cmr6.300 sf
+223 2823(1)s
+cmti10.300 sf
+1736 2039(some)s
+cmbx10.432 sf
+177 308(2.3)s
+70(Wh)h
+-2(y)h
+23(F)h
+-6(unnelW)h
+-6(eb)h
+23(W)h
+-6(asn't)h
+24(Used)h
+22(to)h
+23(W)h
+-6(rite)h
+22(Itself)h
+177 1095(2.4)s
+70(Co)h
+2(ding)h
+22(St)h
+-2(yle)h
+cmr8.300 sf
+241 2835(The)s
+11(standard)h
+9(is)h
+12(curren)h
+-1(tly)h
+9(una)h
+-1(v)h
+-2(aila)h
+-1(ble)h
+-1(,)h
+10(but)h
+11(is)h
+11(lik)h
+-1(ely)h
+10(to)h
+11(b)h
+1(e)h
+11(released)h
+10(or)h
+11(published)h
+9(ev)h
+-1(en)h
+-1(tual)h
+-1(ly)h
+-3(.)h
+cmbx10.300 sf
+177 1538(P)s
+-1(ortabil)h
+-1(i)h
+-1(t)h
+-2(y:)h
+1017 1588([Rabino)s
+-1(wi)h
+-1(tz90])h
+259 1638([Horton90])s
+177 1687([Kernighan88])s
+93([ANSI])h
+177 1764(Iden)s
+-1(ti\014)h
+-1(ers:)h
+16([Rabino)h
+-1(wi)h
+-1(tz90])h
+cmtt10.300 sf
+177 2209(bp)s
+22(-)h
+21(Body)h
+21(Part.)h
+177 2259(cm)s
+22(-)h
+21(Compare.)h
+20(Used)h
+21(to)h
+22(prefix)h
+20(comparison)h
+20(routines)h
+20(that)h
+21(return)h
+21([-1,0,1].)h
+177 2309(dc)s
+22(-)h
+21(Document)h
+20(component.)h
+177 2359(dm)s
+22(-)h
+21(Dump)h
+21(package.)h
+177 2408(el)s
+22(-)h
+21(Element.)h
+177 2458(eq)s
+22(-)h
+21(Equal.)h
+21(Used)h
+21(to)h
+21(prefix)h
+21(comparison)h
+19(routines)h
+20(that)h
+21(return)h
+21(a)h
+22(boolean.)h
+177 2508(ex)s
+22(-)h
+21(Expression.)h
+177 2558(f)s
+44(-)h
+21(Global)h
+21(files.)h
+177 2608(ll)s
+22(-)h
+21(List)h
+21(of)h
+21(lists.)h
+177 2658(ln)s
+22(-)h
+21(Line)h
+21(record.)h
+177 2707(ls)s
+22(-)h
+21(List)h
+21(Package.)h
+177 2757(lr)s
+22(-)h
+21(Lister)h
+21(package.)h
+cmr10.300 sf
+177 42(translation)s
+14(w)h
+-1(as)h
+14(piv)h
+-1(otal)h
+12(to)h
+14(the)h
+15(dev)h
+-1(elopmen)h
+-1(t)h
+13(pro)h
+1(cess.)h
+21(Without)h
+14(his)h
+14(e\013ort)h
+15(in)h
+13(mo)h
+-1(ving)h
+12(from)h
+12(Ada)h
+14(to)h
+14(C,)h
+177 91(I'm)s
+13(not)h
+16(sure)h
+16(that)h
+15(I)h
+15(w)h
+-1(ould)h
+15(ha)h
+-1(v)h
+-1(e)h
+15(m)h
+-1(ustered)h
+15(the)h
+16(energy)h
+16(and)h
+15(time)h
+14(to)h
+15(complete)h
+15(the)h
+16(pro)h
+1(cess)h
+17(and)h
+15(bring)h
+177 141(F)s
+-3(unnelW)h
+-3(eb)h
+14(up)h
+13(to)h
+14(its)h
+14(curren)h
+-1(t)h
+15(standard.)h
+177 426(After)s
+19(Kn)h
+-1(uth)h
+19(created)h
+19(the)h
+19(W)h
+-3(eb)h
+18(literate)h
+19(prepro)h
+1(cessing)h
+20(system,)h
+18(he)h
+19(re-wrote)h
+19(it)h
+18(using)h
+18(W)h
+-3(eb)h
+18(and)h
+18(dis-)h
+177 476(tributed)s
+13(the)h
+13(source)h
+13(co)h
+1(de)h
+13(in)h
+12(W)h
+-3(eb)h
+12(source)h
+14(form.)h
+15(T)h
+-3(o)h
+12(allo)h
+-1(w)h
+10(the)h
+13(W)h
+-3(eb)h
+12(source)h
+13(co)h
+1(de)h
+14(to)h
+12(b)h
+1(e)h
+12(tangled)h
+12(b)h
+-1(y)h
+12(users)h
+177 526(not)s
+14(y)h
+-1(et)h
+14(ha)h
+-1(ving)h
+13(a)h
+13(cop)h
+-1(y)h
+14(of)h
+14(W)h
+-3(eb,)h
+13(he)h
+14(also)h
+13(included)h
+14(the)h
+15(tangled)h
+13(P)h
+-1(ascal)h
+14(co)h
+1(de)h
+15(for)h
+13(the)h
+15(T)h
+-3(angler.)h
+177 602(While)s
+18(this)h
+18(approac)h
+-1(h)h
+19(is)h
+18(heroic)h
+19(and)h
+19(serv)h
+-1(es)h
+20(to)h
+18(con)h
+-1(v)h
+-1(ey)h
+19(a)h
+18(comm)h
+-1(itm)h
+-1(en)h
+-1(t)h
+17(and)h
+18(a)h
+18(con\014dence)h
+20(in)h
+19(literate)h
+177 652(programm)s
+-1(ing,)h
+11(it)h
+13(seemed)h
+14(to)h
+14(me)h
+12(that)h
+14(writing)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(in)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(w)h
+-1(ould)h
+13(simply)h
+12(b)h
+1(e)h
+14(asking)h
+13(for)h
+177 702(trouble.)s
+18(F)h
+-3(or)h
+11(a)h
+11(start,)h
+13(it)h
+11(w)h
+-1(ould)h
+11(b)h
+1(e)h
+12(v)h
+-1(ery)h
+12(hard)h
+12(to)h
+12(mo)h
+1(dif)h
+-1(y)h
+10(an)h
+-1(y)h
+11(feature)h
+13(of)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+11(that)h
+12(had)h
+11(b)h
+1(een)h
+13(used)h
+177 752(to)s
+18(write)h
+18(F)h
+-3(unnelW)h
+-3(eb,)h
+17(and)h
+18(the)h
+18(though)h
+-1(t)h
+18(of)h
+17(what)h
+17(w)h
+-1(ould)h
+17(happ)h
+1(en)h
+18(if)h
+17(the)h
+18(w)h
+-1(orking)h
+17(executable)h
+19(b)h
+1(ecame)h
+177 801(inop)s
+1(erativ)h
+-1(e)h
+14(for)h
+13(some)h
+13(reason)h
+15(do)h
+1(es)h
+15(not)h
+13(b)h
+1(ear)h
+15(thinking)h
+13(up)h
+1(on.)h
+177 878(One)s
+18(mill)h
+-1(ion)h
+15(billion)h
+15(computer)h
+17(programs)h
+16(w)h
+-1(ere)h
+19(written)h
+18(in)h
+16(the)h
+18(non-literate)h
+18(st)h
+-1(yle)h
+17(b)h
+1(efore)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+177 928(w)s
+-1(as)h
+14(created.)h
+20(Wh)h
+-1(y)h
+13(not)h
+14(one)h
+14(more?)h
+177 1213(Although)s
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(w)h
+-1(asn't)h
+15(co)h
+1(ded)h
+16(under)h
+16(an)h
+-1(y)h
+15(particular)h
+15(co)h
+1(ding)h
+15(standard,)h
+16(it)h
+15(w)h
+-1(as)h
+15(co)h
+1(ded)h
+16(in)h
+15(accor-)h
+177 1263(dance)s
+11(with)h
+9(a)h
+9(fairly)h
+9(strict)h
+10(p)h
+1(ersonal)h
+10(st)h
+-1(yle)h
+10(of)h
+9(C)h
+9(whic)h
+-1(h)h
+10(dev)h
+-1(elop)h
+1(ed)h
+10(during)h
+10(the)h
+10(dev)h
+-1(elopmen)h
+-1(t)h
+9(of)h
+9(F)h
+-3(unnelW)h
+-3(eb.)h
+177 1312(This)s
+17(st)h
+-1(yle)h
+16(w)h
+-1(as)h
+17(subsequen)h
+-1(tly)h
+18(em)h
+-1(b)h
+1(o)h
+1(died)h
+15(in)h
+16(a)h
+16(real)h
+17(C)h
+16(co)h
+1(ding)h
+17(standard)h
+17(prepared)h
+17(for)h
+17(the)h
+17(South)h
+16(Aus-)h
+177 1362(tralian)s
+10(Go)h
+-1(v)h
+-1(ernmen)h
+-1(t)h
+10(Departmen)h
+-1(t)h
+11(of)h
+10(Lands.)h
+36(Unfortunately)h
+-3(,)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+11(w)h
+-1(as)h
+11(not)h
+11(formall)h
+-1(y)h
+9(dev)h
+-1(elop)h
+1(ed)h
+177 1412(under)s
+16(the)h
+16(standard)h
+16(and)h
+15(so)h
+15(some)h
+15(holes)h
+15(remain)h
+14(in)h
+15(F)h
+-3(unnelW)h
+-3(eb's)h
+15(co)h
+1(ding)h
+15(st)h
+-1(yle.)h
+22(This)h
+15(section)h
+16(aims)h
+14(to)h
+177 1462(describ)s
+1(e)h
+16(some)h
+13(of)h
+13(the)h
+15(more)h
+12(imp)h
+1(ortan)h
+-1(t)h
+13(asp)h
+1(ects)h
+15(of)h
+13(the)h
+15(co)h
+1(ding)h
+14(st)h
+-1(yle.)h
+445 1538(This)s
+19(w)h
+-1(as)h
+19(a)h
+19(ma)h
+2(jor)h
+17(goal)h
+18(of)h
+19(the)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+19(implem)h
+-1(en)h
+-1(tatio)h
+-1(n.)h
+32(Tw)h
+-1(o)h
+19(excellen)h
+-1(t)h
+20(b)h
+1(o)h
+1(oks)h
+177 1588(guided)s
+19(this)h
+19(mo)h
+-1(v)h
+-1(e)h
+17(to)h
+19(p)h
+1(ortabilit)h
+-1(y)h
+-3(.)h
+31(They)h
+19(w)h
+-1(ere)h
+348(\(whic)h
+-1(h)h
+19(deals)h
+19(with)h
+18(C)h
+19(co)h
+1(de)h
+20(itself)h
+3(\))h
+177 1638(and)s
+255(\(whic)h
+-1(h)h
+15(deals)h
+16(with)h
+15(the)h
+16(p)h
+1(ortabilit)h
+-1(y)h
+14(of)h
+14(v)h
+-2(arious)h
+15(library)h
+15(calls\).)h
+22(Other)h
+16(w)h
+-1(orks)h
+16(suc)h
+-1(h)h
+16(as)h
+484 1687(and)s
+172(w)h
+-1(ere)h
+15(also)h
+13(helpful.)h
+730 1764(length)s
+11(sp)h
+1(eci\014es)h
+14(that)h
+13(for)h
+12(wide)h
+12(p)h
+1(ortabilit)h
+-1(y)h
+-3(,)h
+11(iden)h
+-1(ti\014ers)h
+13(of)h
+12(blo)h
+1(c)h
+-1(k)h
+12(and)h
+13(\014le)h
+177 1814(scop)s
+1(e)h
+16(should)h
+15(b)h
+1(e)h
+16(unique)h
+15(to)h
+15(eigh)h
+-1(t)h
+14(c)h
+-1(haracters,)h
+17(and)h
+15(iden)h
+-1(ti\014ers)h
+16(of)h
+14(program)h
+13(scop)h
+1(e)h
+16(should)h
+15(b)h
+1(e)h
+16(unique)h
+15(to)h
+177 1863(six)s
+12(c)h
+-1(haracters.)h
+19(I)h
+11(ha)h
+-1(v)h
+-1(e)h
+12(gone)h
+11(further)h
+13(in)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+11(and)h
+12(actually)h
+10(made)h
+11(these)h
+13(restrictions)h
+13(actual)h
+11(limi)h
+-1(ts)h
+177 1913(on)s
+14(iden)h
+-1(ti\014er)h
+14(length.)h
+177 1989(Because)s
+18(names)h
+15(m)h
+-1(ust)h
+15(b)h
+1(e)h
+17(so)h
+16(short,)h
+16(a)h
+16(system)h
+16(of)h
+15(abbreviations)h
+16(w)h
+-1(as)h
+16(dev)h
+-1(elop)h
+1(ed)h
+16(to)h
+16(organize)h
+16(the)h
+17(iden-)h
+177 2039(ti\014ers)s
+16(used)h
+17(within)h
+14(F)h
+-3(unnelW)h
+-3(eb.)h
+23(Eac)h
+-1(h)h
+15(abbreviation)h
+15(consists)h
+17(of)h
+14(a)h
+16(letter)h
+16(pair.)h
+22(Here)h
+17(are)h
+122(of)h
+15(the)h
+177 2089(abbreviations)s
+14(used:)h
+1042 2940(28)s
+709 2 177 2796 r
+29 @eop
+30 @bop0
+cmsy10.300 sf
+[<1F00308070406060E0E0E0E0E040E00060007000300018001C003300718061C0E0C0E0
+E0E0E0E0E060E070C031C0198007000300018001C000C000E040E0E0E0E0E0C0C041C021
+801F00>
+16 37 -3 28 18] 120 dc
+30 @bop1
+cmsy10.300 sf
+1054 2510(x)s
+cmbx10.432 sf
+177 1218(2.5)s
+70(Use)h
+22(of)h
+23(Mem)h
+-1(ory)h
+177 1721(2.6)s
+70(The)h
+22(Heap)h
+cmbx10.300 sf
+177 756(P)s
+-1(oin)h
+-1(t)h
+-1(ers:)h
+177 831(T)s
+-1(yp)h
+1(es:)h
+177 956(File)s
+17(names:)h
+cmtt10.300 sf
+177 42(ma)s
+22(-)h
+21(Macro.)h
+177 91(mc)s
+22(-)h
+21(Macro)h
+21(Call.)h
+177 141(mn)s
+22(-)h
+21(Macro)h
+21(Name.)h
+177 191(op)s
+22(-)h
+21(Options)h
+20(package.)h
+177 241(pr)s
+22(-)h
+21(Parser.)h
+177 291(ps)s
+22(-)h
+21(Position)h
+20(record.)h
+177 340(sc)s
+22(-)h
+21(Scrap)h
+21(record.)h
+177 390(sn)s
+22(-)h
+21(Section.)h
+177 440(tb)s
+22(-)h
+21(Table)h
+21(package.)h
+177 490(ty)s
+22(-)h
+21(Typesetter)h
+20(directive.)h
+177 540(wf)s
+22(-)h
+21(Write)h
+21(file)h
+21(package.)h
+177 589(wl)s
+22(-)h
+21(Write)h
+21(with)h
+21(EOL)h
+21(\(misc.c\).)h
+177 639(wr)s
+22(-)h
+21(Write)h
+217(\(misc.c\).)h
+1267 756(p)s
+910 831(t)s
+177 881(p)s
+16(tb)h
+15(t)h
+1300 2735(malloc)s
+454 2785(memory)s
+cmr10.300 sf
+381 756(V)s
+-3(ariables)h
+14(or)h
+14(t)h
+-1(yp)h
+1(es)h
+14(denoting)h
+14(p)h
+1(oin)h
+-1(ters)h
+14(start)h
+15(with)h
+13(\\)h
+38(".)h
+334 831(Names)s
+13(denoting)h
+13(t)h
+-1(yp)h
+1(es)h
+14(end)h
+14(in)h
+13(\\)h
+37(".)h
+18(Th)h
+-1(us,)h
+13(a)h
+13(t)h
+-1(yp)h
+1(e)h
+14(for)h
+13(a)h
+13(p)h
+1(oin)h
+-1(ter)h
+13(to)h
+13(a)h
+13(table)h
+13(w)h
+-1(ould)h
+13(b)h
+1(e)h
+14(named)h
+296 881(.)s
+441 956(All)s
+16(\014les)h
+17(used)h
+17(in)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+16(ha)h
+-1(v)h
+-1(e)h
+16(\014le)h
+16(names)h
+16(that)h
+17(are)h
+16(from)h
+15(one)h
+17(to)h
+16(eigh)h
+-1(t)h
+16(c)h
+-1(haracters)h
+177 1005(long)s
+13(and)h
+13(\014le)h
+13(extensions)h
+15(that)h
+13(are)h
+14(from)h
+12(one)h
+13(to)h
+14(three)h
+14(c)h
+-1(haracters)h
+16(long.)h
+17(This)h
+13(ensures)h
+15(that)h
+14(the)h
+14(\014les)h
+14(can)h
+177 1055(b)s
+1(e)h
+15(p)h
+1(ortably)h
+13(mo)h
+-1(v)h
+-1(ed)h
+12(to)h
+14(all)h
+13(kinds)h
+14(of)h
+13(mac)h
+-1(hines,)h
+12(ev)h
+-1(en)h
+15(MSDOS!)h
+177 1334(F)s
+-3(unnelW)h
+-3(eb)h
+15(is)h
+16(not)h
+16(a)h
+16(mem)h
+-1(ory-stressed)h
+16(program.)h
+23(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+16(during)h
+15(its)h
+16(dev)h
+-1(elopmen)h
+-1(t,)h
+15(problems)h
+15(with)h
+177 1384(the)s
+15(managem)h
+-1(en)h
+-1(t)h
+13(of)h
+13(memory)h
+12(seemed)h
+15(to)h
+14(crop)h
+14(up)h
+15(again)h
+13(and)h
+14(again.)h
+18(This)h
+14(section)h
+15(do)h
+1(cumen)h
+-1(ts)h
+14(some)h
+13(of)h
+177 1434(these)s
+15(problems)h
+13(and)h
+14(the)h
+15(solutions)h
+13(adopted.)h
+177 1509(There)s
+22(are)h
+20(three)h
+22(places)h
+20(where)h
+22(mem)h
+-1(ory)h
+18(can)h
+21(b)h
+1(e)h
+21(obtained:)h
+30(the)h
+21(heap,)h
+21(the)h
+21(stac)h
+-1(k,)h
+22(and)h
+20(from)h
+18(static)h
+177 1558(v)s
+-2(ariables.)h
+17(The)h
+15(follo)h
+-1(wi)h
+-1(ng)h
+12(three)h
+15(sections)h
+15(deal)h
+14(with)h
+13(eac)h
+-1(h)h
+15(of)h
+13(these)h
+15(areas.)h
+177 1837(One)s
+17(of)h
+16(the)h
+17(great)h
+17(frustrations)h
+16(of)h
+16(b)h
+1(eing)h
+17(a)h
+16(user)h
+17(is)h
+16(to)h
+17(\014nd)h
+16(that)h
+17(a)h
+16(computer)h
+16(program)h
+14(is)h
+17(complai)h
+-1(ning)h
+177 1887(ab)s
+1(out)h
+14(lac)h
+-1(k)h
+13(of)h
+13(memory)h
+12(when)h
+14(one)h
+14(kno)h
+-1(ws)h
+14(full)h
+12(w)h
+-1(ell)h
+14(that)h
+14(one)h
+14(has)h
+14(allo)h
+1(cated)h
+13(at)h
+14(least)h
+14(ten)h
+14(times)h
+13(as)h
+14(m)h
+-1(uc)h
+-1(h)h
+177 1937(memory)s
+13(to)h
+16(the)h
+16(program)h
+14(as)h
+16(it)h
+15(w)h
+-1(ould)h
+15(ev)h
+-1(er)h
+17(need)h
+16(to)h
+16(do)h
+15(its)h
+16(job.)h
+23(The)h
+16(reason)h
+16(for)h
+16(suc)h
+-1(h)h
+16(error)h
+17(messages)h
+177 1987(usually)s
+18(has)h
+19(to)h
+19(do)h
+18(with)h
+18(the)h
+20(programm)h
+-1(er)h
+17(setting)h
+19(a)h
+19(\014xed)h
+19(\\reasonable")h
+19(lim)h
+-1(it)h
+17(to)h
+18(a)h
+19(particular)h
+18(data)h
+177 2037(structure)s
+17(and)h
+14(then)h
+15(lo)h
+1(c)h
+-1(king)h
+13(it)h
+15(up)h
+14(in)h
+-1(to)h
+14(an)h
+14(arra)h
+-1(y)h
+14(whose)h
+15(b)h
+1(ound)h
+15(is)h
+14(sp)h
+1(eci\014ed)h
+16(b)h
+-1(y)h
+14(a)h
+14(constan)h
+-1(t.)h
+21(While)h
+13(the)h
+177 2086(use)s
+15(of)h
+13(arra)h
+-1(ys)h
+14(can)h
+14(increase)h
+15(the)h
+14(sp)h
+1(eed)h
+15(of)h
+13(a)h
+14(program,)h
+11(it)h
+13(also)h
+14(means)h
+12(that)h
+14(the)h
+15(user)h
+14(cannot)h
+14(increase)h
+15(the)h
+177 2136(capacit)s
+-1(y)h
+14(of)h
+14(the)h
+15(program)h
+13(without)h
+14(obtaining)h
+13(the)h
+15(source)h
+16(co)h
+1(de)h
+15(and)h
+15(recompiling)h
+12(it,)h
+14(whic)h
+-1(h)h
+14(is)h
+14(usually)h
+14(a)h
+177 2186(daun)s
+-1(ting)h
+13(option.)h
+177 2261(The)s
+13(alternativ)h
+-1(e)h
+13(is)h
+12(to)h
+13(use)h
+14(the)h
+13(heap)h
+13(for)h
+12(all)h
+12(data)h
+12(structures)h
+15(that)h
+13(can)h
+13(gro)h
+-1(w)h
+12(in)h
+13(prop)h
+1(ortion)h
+12(to)h
+13(the)h
+13(size)h
+13(of)h
+177 2311(the)s
+12(user's)h
+12(input.)h
+17(This)h
+11(rule)h
+12(has)h
+11(b)h
+1(een)h
+12(follo)h
+-1(w)h
+-1(ed)h
+10(rigorously)h
+10(in)h
+11(F)h
+-3(unnelW)h
+-3(eb.)h
+16(This)h
+11(means)h
+11(that)h
+11(as)h
+11(memory)h
+177 2360(spaces)s
+12(increase,)h
+12(users)h
+12(will)h
+9(b)h
+1(e)h
+11(able)h
+11(to)h
+10(hand)h
+11(their)h
+10(v)h
+-1(ersion)h
+11(of)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+10(more)h
+10(mem)h
+-1(ory)h
+9(without)h
+10(ha)h
+-1(ving)h
+177 2410(to)s
+14(recompile)h
+13(it.)h
+998 2510(|)s
+46(|)h
+177 2635(Some)s
+16(problems)h
+15(arose)h
+18(early)h
+16(on)h
+17(the)h
+17(Macin)h
+-1(tosh)h
+17(in)h
+16(the)h
+17(use)h
+18(of)h
+16(the)h
+17(heap.)h
+27(It)h
+17(seems)h
+17(that)h
+16(some)h
+16(of)h
+16(the)h
+177 2685(allo)s
+1(cations)h
+18(I)h
+20(w)h
+-1(as)h
+19(attempting)h
+18(to)h
+19(mak)h
+-1(e)h
+18(w)h
+-1(ere)h
+20(failing)h
+17(for)h
+19(some)h
+19(obscure)h
+21(reason,)h
+20(p)h
+1(ossibly)h
+19(m)h
+-1(y)h
+18(fault.)h
+177 2735(Whatev)s
+-1(er)h
+14(it)h
+13(w)h
+-1(as,)h
+13(it)h
+13(w)h
+-1(en)h
+-1(t)h
+13(a)h
+-1(w)h
+-1(a)h
+-1(y)h
+13(when)h
+13(I)h
+14(replaced)h
+14(direct)h
+14(calls)h
+13(to)h
+157(with)h
+13(calls)h
+13(to)h
+13(a)h
+13(mini)h
+11(pac)h
+-1(k)h
+-2(age)h
+177 2785(I)s
+14(wrote)h
+14(\(called)h
+145(\))h
+12(that)h
+14(allo)h
+1(cated)h
+13(large)h
+13(c)h
+-1(h)h
+-1(unks)h
+14(of)h
+13(memory)h
+11(and)h
+14(then)h
+14(doled)h
+13(out)h
+14(small)h
+11(pieces)h
+15(as)h
+177 2835(required)s
+15(b)h
+-1(y)h
+14(the)h
+14(rest)h
+15(of)h
+13(the)h
+15(program.)h
+1042 2940(29)s
+14 2 1292 756 r
+14 2 898 831 r
+14 2 202 881 r
+14 2 262 881 r
+30 @eop
+31 @bop0
+cmbx10.432 sf
+[<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE000000FE000
+000FE000000FE000000FE000000FE000000FE000000FE000000FE01FFC0FE01FFC0FE01F
+FC0FE007C00FE00F800FE01E000FE07C000FE0F8000FE1F0000FE3E0000FE7C0000FEFE0
+000FFFF0000FFFF0000FFFF8000FF3FC000FE1FE000FC0FE000FC0FF000FC07F800FC03F
+800FC03FC00FC01FE00FC00FF0FFFC3FFEFFFC3FFEFFFC3FFE>
+32 42 -2 41 36] 107 dc
+[<FFFFF0003FFF80FFFFF0003FFF80FFFFF0003FFF8003FE000001E00001FE000001C000
+01FF000003C00000FF000003800000FF0000038000007F8000070000007F800007000000
+7FC0000F0000003FC0000E0000003FE0001E0000001FE0001C0000001FF0001C0000000F
+F000380000000FF0003800000007F8007000000007F8007000000007FC00F000000003FC
+00E000000003FE01E000000001FE01C000000001FF01C000000000FF038000000000FF03
+8000000000FF8780000000007F8700000000007FCF00000000003FCE00000000003FFE00
+000000001FFC00000000001FFC00000000000FF800000000000FF800000000000FF80000
+00000007F0000000000007F0000000000003E0000000000003E0000000000001C0000000>
+56 41 -1 40 52] 86 dc
+31 @bop1
+cmtt10.300 sf
+629 272(malloc)s
+692 2835(sc)s
+15(t)h
+217(sc)h
+15(postn)h
+cmti10.300 sf
+1067 1970(in)s
+13(the)h
+13(entir)h
+-2(e)h
+12(pr)h
+-2(o)h
+-2(gr)h
+-2(am)h
+cmbx10.432 sf
+177 981(2.7)s
+70(The)h
+22(Stac)h
+-2(k)h
+177 1796(2.8)s
+70(Static)h
+21(V)h
+-6(ariables)h
+177 2480(2.9)s
+70(Im)h
+-1(pl)h
+-1(em)h
+-3(en)h
+-2(ti)h
+-1(ng)h
+21(T)h
+-6(ext)h
+23(Inden)h
+-2(tation)h
+cmr10.300 sf
+177 42(Ha)s
+-1(ving)h
+13(a)h
+14(pac)h
+-1(k)h
+-2(age)h
+13(to)h
+14(manage)h
+12(all)h
+13(the)h
+14(memory)h
+12(allo)h
+1(cation)h
+12(had)h
+14(t)h
+-1(w)h
+-1(o)h
+13(other)h
+14(b)h
+1(ene\014ts.)h
+177 122(First,)s
+18(only)h
+17(one)h
+18(c)h
+-1(hec)h
+-1(k)h
+18(w)h
+-1(as)h
+18(required)h
+18(in)h
+17(the)h
+18(en)h
+-1(tire)h
+18(program)h
+16(to)h
+17(see)h
+19(if)h
+17(mem)h
+-1(ory)h
+16(had)h
+17(run)h
+18(out)h
+17(\(in)h
+17(the)h
+177 172(memory)s
+16(pac)h
+-1(k)h
+-2(age\),)h
+18(and)h
+18(if)h
+18(that)h
+18(failed,)h
+17(the)h
+19(program)h
+17(could)h
+18(b)h
+1(e)h
+18(brough)h
+-1(t)h
+18(to)h
+18(a)h
+18(screaming)h
+18(halt.)h
+30(This)h
+177 222(organization)s
+20(w)h
+-1(as)h
+20(far)h
+20(preferable)h
+22(to)h
+20(ha)h
+-1(ving)h
+20(eac)h
+-1(h)h
+21(piece)h
+21(of)h
+20(co)h
+1(de)h
+22(that)h
+21(needed)h
+22(to)h
+20(allo)h
+1(cate)h
+20(memory)h
+177 272(ha)s
+-1(ving)h
+13(to)h
+14(c)h
+-1(hec)h
+-1(k)h
+15(to)h
+13(see)h
+15(if)h
+158(had)h
+14(failed.)h
+177 352(Second,)s
+21(the)h
+20(decision)h
+20(to)h
+19(construct)h
+21(a)h
+20(mini)h
+-1(-shell)h
+17(within)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+19(to)h
+19(supp)h
+1(ort)h
+21(regression)h
+20(testing)h
+177 402(mean)s
+-1(t)h
+11(that)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(prop)h
+1(er)h
+13(could)h
+12(b)h
+1(e)h
+12(run)h
+13(man)h
+-1(y)h
+10(times)h
+11(in)h
+12(an)h
+-1(y)h
+11(giv)h
+-1(en)h
+12(in)h
+-1(v)h
+-1(o)h
+1(cation)h
+11(of)h
+11(F)h
+-3(unnelW)h
+-3(eb.)h
+17(As)h
+177 452(a)s
+10(consequence)h
+13(it)h
+10(w)h
+-1(as)h
+11(necessary)h
+12(to)h
+11(mak)h
+-1(e)h
+9(sure)h
+11(that)h
+11(there)h
+11(w)h
+-1(as)h
+11(no)h
+10(memo)h
+-1(ry)h
+9(leak)h
+-2(age)h
+10(b)h
+1(et)h
+-1(w)h
+-1(een)h
+12(in)h
+-1(v)h
+-1(o)h
+1(cations)h
+177 502(of)s
+18(F)h
+-3(unnelW)h
+-3(eb)h
+19(prop)h
+1(er.)h
+33(This)h
+19(w)h
+-1(as)h
+19(accomplished)h
+17(b)h
+-1(y)h
+19(rew)h
+-1(orking)h
+19(the)h
+19(memo)h
+-1(ry)h
+17(pac)h
+-1(k)h
+-2(age)h
+19(to)h
+18(op)h
+1(erate)h
+20(a)h
+177 551(w)s
+-1(atermark)h
+12(system.)h
+17(The)h
+14(user)h
+14(of)h
+12(the)h
+14(pac)h
+-1(k)h
+-2(age,)h
+12(when)h
+13(requesting)h
+14(memo)h
+-1(ry)h
+-3(,)h
+11(could)h
+12(request)h
+15(\\temp)h
+1(orary")h
+177 601(or)s
+15(\\p)h
+1(ermanen)h
+-1(t".)h
+22(If)h
+15(p)h
+1(ermanen)h
+-1(t,)h
+15(the)h
+16(memo)h
+-1(ry)h
+14(pac)h
+-1(k)h
+-2(age)h
+15(forgot)h
+14(that)h
+16(it)h
+15(had)h
+15(allo)h
+1(cated)h
+15(the)h
+16(mem)h
+-1(ory)h
+-3(.)h
+20(If)h
+177 651(temp)s
+1(orary)h
+-3(,)h
+12(the)h
+14(mem)h
+-1(ory)h
+11(pac)h
+-1(k)h
+-2(age)h
+13(places)h
+14(the)h
+14(allo)h
+1(cated)h
+13(blo)h
+1(c)h
+-1(k)h
+13(on)h
+13(a)h
+13(list.)h
+17(There)h
+14(w)h
+-1(as)h
+13(then)h
+14(a)h
+13(function)h
+13(in)h
+177 701(the)s
+12(memory)h
+9(pac)h
+-1(k)h
+-2(age)h
+12(that)h
+11(could)h
+12(b)h
+1(e)h
+12(called)h
+11(to)h
+11(deallo)h
+1(cate)h
+12(all)h
+10(the)h
+12(temp)h
+1(orary)h
+11(memory)h
+-4(.)h
+16(Th)h
+-1(us,)h
+11(so)h
+12(long)h
+11(as)h
+177 751(all)s
+13(requests)h
+16(for)h
+14(mem)h
+-1(ory)h
+12(within)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(prop)h
+1(er)h
+15(w)h
+-1(ere)h
+15(for)h
+13(temp)h
+1(orary)h
+14(mem)h
+-1(ory)h
+-3(,)h
+11(and)h
+14(that)h
+14(memory)h
+177 800(w)s
+-1(as)h
+14(freed)h
+15(at)h
+13(the)h
+15(end)h
+14(of)h
+14(ev)h
+-1(ery)h
+14(run,)h
+14(one)h
+14(could)h
+14(b)h
+1(e)h
+14(sure)h
+15(that)h
+14(there)h
+15(w)h
+-1(as)h
+14(no)h
+14(memo)h
+-1(ry)h
+12(leak)h
+-2(age.)h
+177 1105(F)s
+-3(or)h
+13(a)h
+12(while)h
+12(during)h
+13(the)h
+13(dev)h
+-1(elopmen)h
+-1(t)h
+12(of)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(a)h
+13(particularly)h
+12(nast)h
+-1(y)h
+13(bug)h
+12(pro)h
+-1(v)h
+-1(ed)h
+13(extremely)h
+13(hard)h
+177 1155(to)s
+16(\014nd.)h
+26(The)h
+17(symptom)h
+13(w)h
+-1(as)h
+16(that)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(w)h
+-1(ould)h
+15(crash,)h
+17(sometimes)h
+15(at)h
+16(random,)h
+15(but)h
+16(more)h
+16(often)h
+177 1205(up)s
+1(on)h
+17(en)h
+-1(tering)h
+17(a)h
+17(particular)h
+16(function.)h
+27(In)h
+16(the)h
+18(end)h
+17(ab)h
+1(out)h
+17(a)h
+16(da)h
+-1(y)h
+17(of)h
+16(sp)h
+1(eci\014c)h
+18(debugging)h
+16(w)h
+-1(as)h
+17(required)h
+177 1255(b)s
+1(efore)h
+15(the)h
+14(problem)h
+12(w)h
+-1(as)h
+14(trac)h
+-1(k)h
+-1(ed)h
+15(do)h
+-1(wn)h
+13(to)h
+14(a)h
+13(stac)h
+-1(k)h
+14(problem.)h
+17(It)h
+14(turned)h
+14(out)h
+14(that)h
+14(someho)h
+-1(w)h
+12(\(either)h
+15(the)h
+177 1305(fault)s
+14(of)h
+14(the)h
+16(Macin)h
+-1(tosh)h
+14(or)h
+15(the)h
+15(THINK)h
+16(C)h
+14(language)h
+14(system\),)h
+15(only)h
+14(6K)h
+14(w)h
+-1(as)h
+15(b)h
+1(eing)h
+15(allo)h
+1(cated)h
+14(for)h
+14(stac)h
+-1(k)h
+177 1354(space!!!!!!!)s
+177 1435(This)s
+13(exp)h
+1(erience)h
+14(led)h
+13(me)h
+11(imm)h
+-1(ediately)h
+10(to)h
+13(go)h
+12(through)h
+12(the)h
+14(en)h
+-1(tire)h
+13(program)h
+11(and)h
+12(eliminate)h
+11(\(or)h
+12(remo)h
+-1(v)h
+-1(e)h
+12(to)h
+177 1485(the)s
+15(heap\))h
+14(an)h
+-1(y)h
+13(automatic)h
+12(v)h
+-2(ariable)h
+13(declarations)h
+14(that)h
+14(used)h
+15(more)h
+13(than)h
+14(one)h
+14(h)h
+-1(undred)h
+14(or)h
+14(so)h
+14(b)h
+-1(ytes.)h
+177 1565(The)s
+14(lesson)h
+14(is)h
+14(clearly)h
+13(that)h
+14(C)h
+13(programs)h
+13(that)h
+13(use)h
+15(more)h
+12(than)h
+14(a)h
+13(few)h
+14(thousand)h
+13(b)h
+-1(ytes)h
+15(of)h
+13(stac)h
+-1(k)h
+14(space)h
+14(are)h
+177 1615(risking)s
+13(their)h
+15(p)h
+1(ortabilit)h
+-1(y)h
+-3(.)h
+16(All)h
+13(large)h
+14(data)h
+13(structures)h
+16(should)h
+14(b)h
+1(e)h
+15(placed)h
+14(in)h
+13(the)h
+15(heap.)h
+177 1920(Static)s
+11(v)h
+-2(ariables)h
+9(also)h
+10(pro)h
+-1(v)h
+-1(ed)h
+10(a)h
+10(problem)h
+9(on)h
+11(the)h
+11(Macin)h
+-1(tosh.)h
+16(It)h
+11(turns)h
+11(out)h
+10(that)h
+11(the)h
+11(Macin)h
+-1(tosh)h
+10(THINK)h
+11(C)h
+177 1970(compiler)s
+11(do)h
+1(es)h
+12(not)h
+12(allo)h
+-1(w)h
+10(more)h
+11(than)h
+12(32K)h
+11(of)h
+11(statics)h
+391(.)h
+17(F)h
+-3(or)h
+11(a)h
+12(while)h
+11(this)h
+12(restriction)h
+177 2020(w)s
+-1(as)h
+17(a)h
+16(serious)h
+18(threat)h
+18(to)h
+16(the)h
+18(program)h
+15(as)h
+17(it)h
+16(w)h
+-1(as)h
+17(disco)h
+-1(v)h
+-1(ered)h
+18(that)h
+17(constan)h
+-1(t)h
+17(strings)h
+17(w)h
+-1(ere)h
+18(included)h
+17(in)h
+177 2070(this)s
+14(total!)h
+18(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(some)h
+13(searc)h
+-1(hing)h
+14(rev)h
+-1(ealed)h
+15(a)h
+13(compiler)h
+13(option)h
+13(that)h
+14(remo)h
+-1(v)h
+-1(ed)h
+13(the)h
+15(strings)h
+14(from)h
+12(the)h
+177 2119(static)s
+14(category)h
+-3(.)h
+177 2200(Nev)s
+-1(ertheless)h
+1(,)h
+17(the)h
+16(32K)h
+16(lim)h
+-1(it)h
+13(is)h
+16(rather)h
+16(sev)h
+-1(ere.)h
+25(Again,)h
+15(it)h
+15(seems)h
+16(that)h
+15(for)h
+16(p)h
+1(ortabilit)h
+-1(y)h
+14(reasons,)h
+16(C)h
+16(pro-)h
+177 2250(grams)s
+15(that)h
+16(use)h
+16(a)h
+16(lot)h
+15(of)h
+16(static)h
+16(v)h
+-2(ariables)h
+15(are)h
+16(risking)h
+16(their)h
+16(p)h
+1(ortabilit)h
+-1(y)h
+-3(.)h
+22(As)h
+16(a)h
+16(result,)h
+17(the)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+177 2300(co)s
+1(de)h
+15(a)h
+-1(v)h
+-1(oids)h
+13(static)h
+14(v)h
+-2(ariables)h
+13(where)h
+15(p)h
+1(ossible)h
+14(in)h
+14(fa)h
+-1(v)h
+-1(our)h
+13(of)h
+13(the)h
+14(heap.)h
+177 2605(A)s
+-1(t)h
+21(one)h
+21(p)h
+1(oin)h
+-1(t)h
+20(during)h
+20(the)h
+21(dev)h
+-1(elopmen)h
+-1(t)h
+20(of)h
+20(F)h
+-3(unnelW)h
+-3(eb,)h
+21(text)h
+22(inden)h
+-1(tation)h
+20(w)h
+-1(as)h
+20(fully)h
+20(impl)h
+-1(em)h
+-1(en)h
+-1(ted.)h
+177 2654(Ho)s
+-1(w)h
+-1(ev)h
+-1(er,)h
+12(it)h
+12(w)h
+-1(as)h
+12(subsequen)h
+-1(tly)h
+13(remo)h
+-1(v)h
+-1(ed)h
+11(b)h
+1(ecause)h
+13(it)h
+12(w)h
+-1(as)h
+12(considered)h
+13(a)h
+12(dangerous)h
+12(feature.)h
+18(This)h
+12(section)h
+177 2704(records)s
+17(the)h
+16(w)h
+-1(a)h
+-1(y)h
+15(in)h
+15(whic)h
+-1(h)h
+16(text)h
+16(inden)h
+-1(tation)h
+15(w)h
+-1(as)h
+15(implem)h
+-1(en)h
+-1(ted)h
+14(so)h
+16(that)h
+16(if)h
+14(the)h
+16(feature)h
+17(ev)h
+-1(er)h
+16(has)h
+16(to)h
+15(b)h
+1(e)h
+177 2754(put)s
+14(bac)h
+-1(k,)h
+14(this)h
+14(tec)h
+-1(hnique)h
+14(can)h
+15(b)h
+1(e)h
+14(used)h
+15(again.)h
+177 2835(1.)s
+18(Create)h
+15(a)h
+13(new)h
+15(\014eld)h
+14(in)h
+13(the)h
+109(record)h
+16(call)h
+182(.)h
+1042 2940(30)s
+14 2 739 2835 r
+14 2 1037 2835 r
+31 @eop
+32 @bop0
+cmtt10.300 sf
+[<03800007E0000FE0001E70001C70001C70001C70001C77E01CE7E01DE7E00FC7000F8E
+000F0E001E0E003F1C007F1C00739C00E3F800E1F800E0F1C0E0F1C071F9C07FFFC03F9F
+801E0700>
+24 25 -1 24 22] 38 dc
+[<7F0FE0FF8FF07F0FE01C07801C0F001C0E001C1C001C3C001C78001CF0001CE0001DF0
+001FF0001FF8001F38001E1C001C1C001C0E001C0E001C07001C07001C03807F07E0FF8F
+F07F07E0>
+24 25 0 24 22] 75 dc
+32 @bop1
+cmr10.300 sf
+177 342(2.)s
+17(Mo)h
+1(dify)h
+10(the)h
+12(scanner)h
+13(so)h
+11(that)h
+11(it)h
+11(generates)h
+13(this)h
+11(\014eld.)h
+18(Sendtext)h
+12(should)h
+11(b)h
+1(e)h
+12(mo)h
+1(di\014ed)h
+10(so)h
+11(that)h
+11(it)h
+11(accepts)h
+177 391(an)s
+14(argumen)h
+-1(t)h
+13(for)h
+13(the)h
+175(v)h
+-2(alue.)h
+177 2835(Then)s
+15(all)h
+12(the)h
+15(calls)h
+13(to)h
+14(sendtext)h
+15(ha)h
+-1(v)h
+-1(e)h
+14(to)h
+14(b)h
+1(e)h
+14(c)h
+-1(hanged:)h
+1042 2940(31)s
+cmtt10.300 sf
+308 42(char)s
+21(*sc_postn;)h
+20(/*)h
+21(Pointer)h
+20(in)h
+22(the)h
+21(range)h
+21([sc_first,s)h
+-1(c_las)h
+-1(t+1].)h
+237(*/)h
+657 91(/*)s
+21(It)h
+21(is)h
+22(the)h
+21(minimum)h
+20(possible)h
+20(value)h
+21(of)h
+22(sc_postn)h
+20(for)h
+108(*/)h
+657 141(/*)s
+21(which)h
+21(EOL)h
+21(does)h
+21(not)h
+21(appear)h
+21(in)h
+21(*sc_postn..*s)h
+-1(c_la)h
+-1(st.)h
+85(*/)h
+657 191(/*)s
+21(i.e.)h
+21(Points)h
+21(to)h
+21(the)h
+21(byte)h
+21(following)h
+20(the)h
+21(first)h
+21(EOL)h
+21(in)h
+65(*/)h
+657 241(/*)s
+21(the)h
+21(scrap)h
+21(or)h
+21(sc_first)h
+20(if)h
+22(EOL)h
+21(does)h
+21(not)h
+21(appear.)h
+173(*/)h
+556 391(p)s
+15(postn)h
+177 492(LOCAL)s
+21(void)h
+21(sendtext)h
+20(P_\(\(p_ps_t,ch)h
+-1(ar)h
+20(*,char)h
+20(*,char)h
+21(*,bool\)\);)h
+177 542(LOCAL)s
+21(void)h
+21(sendtext\(p_t)h
+-1(kps,p)h
+-1(_firs)h
+-1(t,p_l)h
+-1(ast,)h
+-1(p_pos)h
+-1(tn,is)h
+-1(_whit)h
+-1(e\))h
+177 592(/*)s
+22(Appends)h
+20(a)h
+21(text)h
+21(token)h
+21(to)h
+22(the)h
+21(end)h
+21(of)h
+21(the)h
+21(token)h
+21(list.)h
+544(*/)h
+177 642(/*)s
+22(IN:)h
+21(p_ps)h
+21(is)h
+21(a)h
+22(pointer)h
+20(to)h
+21(a)h
+22(position)h
+20(structure)h
+20(giving)h
+21(the)h
+21(position)h
+20(of)h
+21(the)h
+65(*/)h
+177 691(/*)s
+109(first)h
+20(character)h
+20(of)h
+22(the)h
+21(token.)h
+914(*/)h
+177 741(/*)s
+22(IN:)h
+21(p_first)h
+20(and)h
+21(p_last)h
+21(point)h
+21(to)h
+21(the)h
+21(first)h
+21(and)h
+21(last)h
+21(byte)h
+21(of)h
+21(the)h
+22(text)h
+20(scrap.)h
+21(*/)h
+177 791(/*)s
+22(IN:)h
+21(p_postn)h
+20(has)h
+21(the)h
+21(same)h
+21(definition)h
+20(as)h
+21(sc_postn)h
+21(\(see)h
+21(fwdata.h\).)h
+259(*/)h
+177 841(/*)s
+22(IN:)h
+21(is_white)h
+20(should)h
+20(be)h
+22(set)h
+21(to)h
+21(TRUE)h
+21(iff)h
+21(scrap)h
+21(is)h
+22(entirely)h
+20(whitespace.)h
+150(*/)h
+177 891(p_ps_t)s
+21(p_tkps;)h
+177 941(char)s
+43(*p_first;)h
+177 990(char)s
+43(*p_last;)h
+177 1040(char)s
+43(*p_postn;)h
+177 1090(bool)s
+65(is_white;)h
+177 1140({)s
+199 1190(tk_t)s
+21(token;)h
+199 1289(/*)s
+21(Empty)h
+21(text)h
+21(scraps)h
+21(should)h
+20(never)h
+21(be)h
+21(generated.)h
+20(*/)h
+199 1339(assert\(p_fir)s
+-1(st<=p)h
+-1(_last)h
+-1(,"sen)h
+-1(dtext)h
+-1(:)h
+20(Text)h
+21(scrap)h
+21(bounds)h
+20(are)h
+21(bad."\);)h
+199 1439(/*)s
+21(If)h
+22(ch=EOL)h
+20(then)h
+21(we)h
+22(should)h
+20(be)h
+22(scanning)h
+20(more)h
+21(text,)h
+20(not)h
+22(shipping)h
+20(it!)h
+21(*/)h
+199 1488(assert\(ch!=E)s
+-1(OL,"s)h
+-1(entte)h
+-1(xt:)h
+20(Shipping)h
+20(text)h
+21(while)h
+20(still)h
+21(more)h
+21(to)h
+22(scan."\);)h
+199 1588(/*)s
+21(Check)h
+21(that)h
+21(p_postn)h
+20(is)h
+22(in)h
+21(range.)h
+21(See)h
+21(definition)h
+20(in)h
+21(fwdata.h.)h
+20(*/)h
+199 1638(assert\(p_fir)s
+-1(st<=p)h
+-1(_post)h
+-1(n)h
+20(&&)h
+21(p_postn<=p_las)h
+-1(t+1,)h
+352 1688("sendtext:)s
+19(p_postn)h
+21(is)h
+21(out)h
+21(of)h
+22(range."\);)h
+199 1787(/*)s
+21(Debug:)h
+21(Check)h
+21(the)h
+21(p_postn)h
+20(field)h
+21(using)h
+21(a)h
+21(brute)h
+21(force)h
+21(check.)h
+20(*/)h
+199 1837({)s
+221 1887(char)s
+21(*i,*j;)h
+221 1937(j=p_first;)s
+221 1987(for)s
+21(\(i=p_first;i)h
+-1(<=p_l)h
+-1(ast;i)h
+-1(++\))h
+286 2036(if)s
+22(\(*i==EOL\))h
+352 2086(j=i+1;)s
+221 2136(assert\(j==p)s
+-1(_post)h
+-1(n,"se)h
+-1(ndtex)h
+-1(t:)h
+20(sc_postn)h
+20(field)h
+21(is)h
+21(incorrect."\);)h
+199 2186(})s
+199 2286(/*)s
+21(Load)h
+21(the)h
+21(text)h
+21(token.)h
+21(*/)h
+199 2335(token.tk_kin)s
+-1(d)h
+173(=)h
+21(TK_TEXT;)h
+199 2385(ASSIGN\(token)s
+-1(.tk_p)h
+-1(s,*p_)h
+-1(tkps\))h
+-1(;)h
+199 2435(token.tk_sc.)s
+-1(sc_fi)h
+-1(rst)h
+20(=)h
+21(p_first;)h
+199 2485(token.tk_sc.)s
+-1(sc_la)h
+-1(st)h
+42(=)h
+21(p_last;)h
+199 2535(token.tk_sc.)s
+-1(sc_po)h
+-1(stn)h
+20(=)h
+21(p_postn;)h
+199 2584(token.tk_whi)s
+-1(te)h
+151(=)h
+21(is_white;)h
+199 2634(token.tk_par)s
+-1(no)h
+151(=)h
+21(0;)h
+199 2684(ls_add\(token)s
+-1(_list)h
+-1(,PV)h
+20(&token\);)h
+177 2734(})s
+14 2 581 391 r
+32 @eop
+33 @bop0
+cmtt10.300 sf
+[<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0>
+8 32 -9 28 22] 124 dc
+[<7F1FC0FFBFE07F1FC01C07001C07001C07001C07001C07001C07001C07001FFF001FFF
+001FFF001C07001C07001C07001C07001C07001C07001C07001C07001C07007F1FC0FFBF
+E07F1FC0>
+24 25 -1 24 22] 72 dc
+33 @bop1
+cmsy10.300 sf
+239 2605(\017)s
+239 2835(\017)s
+cmti10.300 sf
+1265 2450(b)s
+-2(ase)h
+cmr10.300 sf
+177 1442(The)s
+14(dump)h
+13(co)h
+1(de)h
+15(needs)h
+15(to)h
+14(b)h
+1(e)h
+14(c)h
+-1(hanged)h
+15(to)h
+1(o!)h
+177 2400(3.)s
+37(Ov)h
+-1(er)h
+22(in)h
+20(the)h
+21(T)h
+-3(angle)h
+19(mo)h
+1(dule,)h
+20(create)h
+22(a)h
+20(massiv)h
+-1(e)h
+19(arra)h
+-1(y)h
+20(of)h
+20(p)h
+1(oin)h
+-1(ters)h
+21(to)h
+20(scraps)h
+22(to)h
+20(b)h
+1(e)h
+21(used)h
+22(as)h
+20(a)h
+177 2450(stac)s
+-1(k.)h
+19(Main)h
+-1(tain)h
+13(p)h
+1(oin)h
+-1(ters)h
+14(in)h
+-1(to)h
+14(the)h
+14(stac)h
+-1(k)h
+15(called)h
+180(and)h
+102(\(simila)h
+-1(r)h
+13(to)h
+14(the)h
+14(blank)h
+13(inden)h
+-1(tation)h
+177 2500(v)s
+-2(ariables\).)h
+18(Implem)h
+-1(en)h
+-1(t)h
+12(the)h
+15(follo)h
+-1(wi)h
+-1(ng:)h
+281 2605(T)s
+-3(o)h
+14(write)h
+16(out)h
+15(a)h
+15(scrap,)h
+16(scan)h
+15(it)h
+15(b)h
+-1(yte)h
+16(b)h
+-1(y)h
+15(b)h
+-1(yte.)h
+22(Output)h
+16(eac)h
+-1(h)h
+16(b)h
+-1(yte.)h
+22(When)h
+15(y)h
+-1(ou)h
+15(hit)h
+15(an)h
+15(EOL,)h
+15(p)h
+1(op)h
+281 2655(the)s
+15(stac)h
+-1(k)h
+15(bac)h
+-1(k)h
+15(to)h
+102(.)h
+20(Then)h
+15(write)h
+15(out)h
+15(an)h
+14(EOL)h
+15(follo)h
+-1(w)h
+-1(ed)h
+13(b)h
+-1(y)h
+15(the)h
+15(stac)h
+-1(k)h
+15(con)h
+-1(ten)h
+-1(ts)h
+16(but)h
+15(writing)h
+281 2705(eac)s
+-1(h)h
+12(scrap)h
+13(only)h
+12(from)h
+131(to)h
+12(end)h
+12(end)h
+13(of)h
+11(eac)h
+-1(h)h
+13(scrap.)h
+18(When)h
+12(y)h
+-1(ou)h
+12(ha)h
+-1(v)h
+-1(e)h
+12(\014nished)h
+12(the)h
+13(new)h
+12(scrap,)h
+281 2755(push)s
+14(it)h
+14(on)h
+14(the)h
+14(stac)h
+-1(k.)h
+281 2835(When)s
+14(y)h
+-1(ou)h
+13(hit)h
+14(a)h
+14(new)h
+14(macro)h
+13(to)h
+13(expand,)h
+14(sa)h
+-1(v)h
+-1(e)h
+102(.)h
+17(Restore)h
+15(it)h
+13(later.)h
+1042 2940(32)s
+cmtt10.300 sf
+177 42(/*)s
+22(@)h
+21(instructs)h
+20(FunnelWeb)h
+20(to)h
+21(replace)h
+21(the)h
+21(special)h
+20(construct)h
+20(with)h
+21(the)h
+21(*/)h
+177 91(/*)s
+22(special)h
+20(character.)h
+20(Luckily)h
+20(one)h
+21(appears)h
+20(just)h
+21(before)h
+21(the)h
+21(@)h
+22(!!)h
+108(*/)h
+177 141(/*)s
+22(Note:)h
+20(FALSE)h
+21(is)h
+21(OK)h
+22(because)h
+20(space)h
+21(is)h
+21(not)h
+21(a)h
+22(legal)h
+21(specialch.)h
+150(*/)h
+177 191(/*)s
+22(Note:)h
+20(Setting)h
+21(parameter)h
+20(p_postn)h
+20(to)h
+21(p_ch-1)h
+21(is)h
+21(OK)h
+22(as)h
+21(EOL)h
+21(is)h
+22(not)h
+21(a)h
+21(*/)h
+177 241(/*)s
+152(legal)h
+21(specialch.)h
+913(*/)h
+177 291(sendtext\(&ps_)s
+-1(spec,)h
+-1(p_ch-)h
+-1(1,p_c)h
+-1(h-1,p)h
+-1(_ch-1)h
+-1(,FAL)h
+-1(SE\);)h
+177 340(break;)s
+177 440(/*)s
+22(+)h
+21(instructs)h
+20(FunnelWeb)h
+20(to)h
+21(insert)h
+21(an)h
+21(EOL.)h
+21(We)h
+22(can't)h
+20(look)h
+21(to)h
+22(the)h
+21(end)h
+21(of)h
+21(*/)h
+177 490(/*)s
+22(the)h
+21(previous)h
+20(line)h
+21(to)h
+21(find)h
+21(an)h
+22(EOL)h
+21(as)h
+21(this)h
+21(might)h
+21(be)h
+21(the)h
+21(first)h
+21(line.)h
+64(*/)h
+177 540(/*)s
+22(Running)h
+20(ahead)h
+21(to)h
+21(the)h
+21(end)h
+21(of)h
+22(the)h
+21(line)h
+21(is)h
+21(expensive,)h
+20(and)h
+21(having)h
+21(the)h
+64(*/)h
+177 589(/*)s
+22(liner)h
+20(mini-package)h
+20(maintain)h
+20(a)h
+21(variable)h
+20(for)h
+22(it)h
+21(would)h
+21(be)h
+21(extra)h
+173(*/)h
+177 639(/*)s
+22(housekeepi)h
+-1(ng.)h
+20(Instead)h
+20(of)h
+21(all)h
+22(this,)h
+20(we)h
+22(just)h
+21(point)h
+20(to)h
+22(a)h
+21(static.)h
+151(*/)h
+177 689({CONST)s
+21(static)h
+20(char)h
+21(stateol)h
+21(=)h
+21(EOL;)h
+199 739(sendtext\(&ps)s
+-1(_spec)h
+-1(,&sta)h
+-1(teol,)h
+-1(&stat)h
+-1(eol,\()h
+-1(&sta)h
+-1(teol\))h
+-1(+1,TR)h
+-1(UE\);})h
+177 789(break;)s
+177 888(/*)s
+22(If)h
+21(we)h
+21(hit)h
+21(something)h
+20(that)h
+21(ends)h
+21(a)h
+22(text)h
+21(token)h
+21(*/)h
+177 938(/*)s
+22(then)h
+21(we)h
+21(can)h
+21(transmit)h
+20(a)h
+22(white)h
+21(text)h
+21(token.)h
+64(*/)h
+177 988(if)s
+22(\(ch==speci)h
+-1(alch)h
+19(||)h
+22(ch==EOFCH\))h
+243 1038({sendtext\()s
+-1(&ps_s)h
+-1(tart,)h
+-1(p_fir)h
+-1(st,p_)h
+-1(ch-1,)h
+-1(MAX\()h
+-1(p_sol)h
+-1(,p_fi)h
+-1(rst\),)h
+-1(TRUE\))h
+-1(;)h
+20(return;})h
+177 1137(/*)s
+22(Otherwise)h
+19(we)h
+22(have)h
+21(some)h
+21(more)h
+21(\(non-white\))h
+19(text)h
+21(to)h
+22(scan.)h
+20(*/)h
+177 1187(/*)s
+22(We)h
+21(can)h
+21(then)h
+21(send)h
+21(a)h
+22(non-white)h
+20(text)h
+21(token.)h
+303(*/)h
+177 1237(while)s
+21(\(ch!=special)h
+-1(ch)h
+20(&&)h
+21(ch!=EOFCH\))h
+243 1287(NEXTCH;)s
+177 1337(sendtext\(&ps_)s
+-1(start)h
+-1(,p_fi)h
+-1(rst,p)h
+-1(_ch-1)h
+-1(,MAX\()h
+-1(p_so)h
+-1(l,p_f)h
+-1(irst\))h
+-1(,FALS)h
+-1(E\);)h
+352 1548(wf_str\(p_w)s
+-1(f,"\\")h
+-1("\);)h
+177 1597(assert\(token-)s
+-1(>tk_s)h
+-1(c.sc_)h
+-1(first)h
+19(!=NULL,"dm_tk)h
+-1(ls:)h
+20(NULL)h
+21(ptr1."\);)h
+177 1647(assert\(token-)s
+-1(>tk_s)h
+-1(c.sc_)h
+-1(last)h
+41(!=NULL,"dm_tk)h
+-1(ls:)h
+20(NULL)h
+21(ptr2."\);)h
+177 1697(for)s
+21(\(i=token->tk_s)h
+-1(c.sc_)h
+-1(first)h
+-1(;)h
+20(i<=token->tk)h
+-1(_sc.s)h
+-1(c_las)h
+-1(t;)h
+20(i++\))h
+221 1747({)s
+243 1797(if)s
+21(\(i==token->t)h
+-1(k_sc.)h
+-1(sc_po)h
+-1(stn\))h
+308 1846(wf_str\(p_wf,)s
+-1("<pos)h
+-1(tn>"\))h
+-1(;)h
+243 1896(if)s
+21(\(*i=='\\n'\))h
+308 1946(wf_wl\(p_wf,")s
+-1("\);)h
+243 1996(else)s
+308 2046(dm_byte\(p_wf)s
+-1(,*\(\(u)h
+-1(byte_)h
+19(*\))h
+22(i\)\);)h
+221 2095(})s
+177 2145(if)s
+22(\(i==token-)h
+-1(>tk_s)h
+-1(c.sc_)h
+-1(postn)h
+-1(\))h
+243 2195(wf_str\(p_w)s
+-1(f,"<p)h
+-1(ostn>)h
+-1("\);)h
+177 2245(wf_str\(p_wf,")s
+-1(\\""\);)h
+177 2295(})s
+1017 2450(current)s
+609 2655(base)s
+665 2705(postn)s
+1085 2835(base)s
+33 @eop
+34 @bop0
+34 @bop1
+cmtt10.300 sf
+262 42(postn)s
+177 158(The)s
+21(rain)h
+21(in)h
+22(Spain)h
+177 208(falls)s
+21(mainly)h
+20(@<on)h
+21(the)h
+22(plain@>)h
+1260 324(@<on)s
+21(the)h
+21(plain@>)h
+230(falls)h
+177 374(mainly)s
+439 423(postn)s
+cmr10.300 sf
+177 42(The)s
+137(\014eld)h
+14(solv)h
+-1(es)h
+14(the)h
+15(big)h
+13(problem)h
+13(of)h
+13(ho)h
+-1(w)h
+13(to)h
+14(cop)h
+1(e)h
+15(with)h
+13(something)h
+13(lik)h
+-1(e)h
+13(this:)h
+177 324(The)s
+21(trouble)h
+21(is)h
+20(that)h
+21(w)h
+-1(e)h
+21(w)h
+-1(an)h
+-1(t)h
+20(to)h
+20(text)h
+21(inden)h
+-1(t)h
+21(the)h
+21(lines)h
+21(in)h
+389(with)h
+20(just)h
+21(\\)h
+330 374(".)s
+31(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+20(this)h
+19(string)h
+18(is)h
+18(only)h
+18(part)h
+19(of)h
+18(a)h
+18(scrap.)h
+33(The)h
+19(solution)h
+17(is)h
+19(to)h
+18(get)h
+19(the)h
+19(scanner)h
+20(to)h
+177 423(record,)s
+16(in)h
+14(the)h
+140(\014eld)h
+15(of)h
+14(eac)h
+-1(h)h
+15(scrap,)h
+16(the)h
+15(p)h
+1(osition)h
+14(of)h
+15(the)h
+15(\014rst)h
+16(b)h
+-1(yte)h
+15(with)h
+15(a)h
+14(EOL-free)h
+16(run)h
+15(to)h
+15(the)h
+177 473(end)s
+15(of)h
+13(the)h
+14(scrap.)h
+177 548(This)s
+16(sc)h
+-1(heme)h
+16(is)h
+16(v)h
+-1(ery)h
+17(e\016cien)h
+-1(t)h
+16(b)h
+1(ecause)h
+18(all)h
+15(w)h
+-1(e)h
+16(are)h
+17(doing)h
+15(is)h
+16(pushing)h
+16(and)h
+16(p)h
+1(opping)h
+15(p)h
+1(oin)h
+-1(ters)h
+17(to)h
+16(scraps)h
+177 598(on)s
+16(a)h
+16(stac)h
+-1(k)h
+17(arra)h
+-1(y)h
+-3(.)h
+25(The)h
+16(main)h
+14(disadv)h
+-2(an)h
+-1(tage)h
+16(is)h
+16(that)h
+16(the)h
+17(arra)h
+-1(y)h
+16(m)h
+-1(ust)h
+16(necessarily)h
+17(b)h
+1(e)h
+17(\014nite)h
+16(and)h
+17(w)h
+-1(ould)h
+177 648(imp)s
+1(ose)h
+13(a)h
+14(lim)h
+-1(it)h
+12(on)h
+13(the)h
+15(depth)h
+14(of)h
+14(inden)h
+-1(tation)h
+13(nesting)h
+14(\(not)h
+14(a)h
+14(big)h
+13(problem\).)h
+1042 2940(33)s
+34 @eop
+35 @bop0
+35 @bop1
+cmr10.300 sf
+1042 2940(34)s
+35 @eop
+36 @bop0
+cmbx10.622 sf
+[<0003FF8000001FFFF000007FFFFE0000FE03FF0003F001FFC007E000FFE007C0007FF0
+0FF0007FF00FFC007FF81FFC007FF81FFE007FF81FFE007FF81FFE007FF81FFE007FF81F
+FE007FF80FFC007FF80FFC007FF003F000FFF0000000FFE0000000FFE0000001FFC00000
+01FF80000003FF00000007FC0000001FF800000FFFC000000FFF8000000FFFF800000003
+FE00000001FF80000000FFE00000007FF00000003FF80000003FFC0000003FFE0000001F
+FE0000001FFE0200001FFF1FC0001FFF3FE0001FFF7FF0001FFFFFF8001FFFFFF8001FFF
+FFF8001FFFFFF8001FFFFFF8001FFEFFF8003FFEFFF0003FFC7FE0003FFC7FC0007FF83F
+80007FF01FE000FFE00FFC03FFC003FFFFFF8001FFFFFE00003FFFF0000007FF8000>
+40 57 -4 55 49] 51 dc
+cmbx10.746 sf
+[<FFFFFFE0000000000003FFFFFFFFFFFFF0000000000007FFFFFFFFFFFFF00000000000
+07FFFFFFFFFFFFF800000000000FFFFFFFFFFFFFF800000000000FFFFFFF001FFFF80000
+0000000FFFF800001FFFFC00000000001EFFF800001FFFFC00000000001EFFF800001FBF
+FE00000000003CFFF800001FBFFE00000000003CFFF800001F9FFF000000000078FFF800
+001F9FFF000000000078FFF800001F8FFF8000000000F0FFF800001F8FFF8000000000F0
+FFF800001F87FFC000000001E0FFF800001F87FFC000000001E0FFF800001F87FFC00000
+0001E0FFF800001F83FFE000000003C0FFF800001F83FFE000000003C0FFF800001F81FF
+F00000000780FFF800001F81FFF00000000780FFF800001F80FFF80000000F00FFF80000
+1F80FFF80000000F00FFF800001F807FFC0000001E00FFF800001F807FFC0000001E00FF
+F800001F807FFC0000001E00FFF800001F803FFE0000003C00FFF800001F803FFE000000
+3C00FFF800001F801FFF0000007800FFF800001F801FFF0000007800FFF800001F800FFF
+800000F000FFF800001F800FFF800000F000FFF800001F8007FFC00001E000FFF800001F
+8007FFC00001E000FFF800001F8003FFE00003C000FFF800001F8003FFE00003C000FFF8
+00001F8003FFE00003C000FFF800001F8001FFF000078000FFF800001F8001FFF0000780
+00FFF800001F8000FFF8000F0000FFF800001F8000FFF8000F0000FFF800001F80007FFC
+001E0000FFF800001F80007FFC001E0000FFF800001F80003FFE003C0000FFF800001F80
+003FFE003C0000FFF800001F80001FFF00780000FFF800001F80001FFF00780000FFF800
+001F80001FFF00780000FFF800001F80000FFF80F00000FFF800001F80000FFF80F00000
+FFF800001F800007FFC1E00000FFF800001F800007FFC1E00000FFF800001F800003FFE3
+C00000FFF800001F800003FFE3C00000FFF800001F800001FFF7800000FFF800001F8000
+01FFF7800000FFF800001F800001FFF7800000FFF800001F800000FFFF000000FFF80000
+1F800000FFFF000000FFF800001F8000007FFE000000FFF800001F8000007FFE000000FF
+F800001F8000003FFC000000FFF800001F8000003FFC000000FFF800001F8000001FF800
+0000FFF800001F8000001FF8000000FFF800007FE000000FF0000000FFF800FFFFFFF000
+0FF00007FFFFFFFFFFFFFFF0000FF00007FFFFFFFFFFFFFFF00007E00007FFFFFFFFFFFF
+FFF00007E00007FFFFFFFFFFFFFFF00003C00007FFFFFFFF>
+104 71 -4 70 113] 77 dc
+[<00000007FF800000000001FFFFF0000000000FFFFFFC000000003FFFFFFE00000000FF
+FC00FF00000001FFC0003F80000007FF00007FC000000FFE0001FFC000001FFC0001FFE0
+00001FF80003FFE000003FF00003FFE000003FF00003FFE000007FE00003FFE000007FE0
+0003FFE000007FE00003FFE000007FE00003FFE000007FE00001FFC000007FE00000FF80
+00007FE000003E0000007FE00000000000007FE00000000000007FE00000000000007FE0
+0000000000007FE00000000000007FE00000000000007FE0003FFFF000FFFFFFFFFFFFF0
+00FFFFFFFFFFFFF000FFFFFFFFFFFFF000FFFFFFFFFFFFF000FFFFFFFFFFFFF000007FF0
+0000FFF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0
+00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0
+00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0
+00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0
+00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0
+00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0
+00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0
+00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0003FFFFF
+E03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFF
+E0>
+64 72 -2 71 66] 12 dc
+36 @bop1
+cmtt10.300 sf
+1687 2735(@!)s
+cmbx10.622 sf
+177 377(Chapter)s
+34(3)h
+cmbx10.746 sf
+177 609(F)s
+-10(unnelW)h
+-10(eb)h
+41(Mo)h
+3(di\014catio)h
+1(n)h
+cmti10.300 sf
+1250 1964(only)s
+1616 2064(F)s
+-3(unnelWeb)h
+18(User's)h
+177 2113(Manual)s
+cmbx10.300 sf
+295 2362(Remo)s
+-1(ving)h
+13(features:)h
+295 2635(Mo)s
+1(difying)h
+18(features:)h
+cmbx10.432 sf
+177 875(3.1)s
+70(In)h
+-2(tro)h
+2(duction)h
+177 1301(3.2)s
+70(The)h
+22(Danger)h
+24(of)h
+23(Mo)h
+2(difying)h
+23(Languages)h
+cmr10.300 sf
+177 990(This)s
+19(c)h
+-1(hapter)h
+20(deals)h
+19(with)h
+19(mo)h
+1(di\014cations)h
+17(to)h
+19(F)h
+-3(unnelW)h
+-3(eb.)h
+33(Although)h
+19(the)h
+19(GNU)h
+19(license)h
+20(under)h
+20(whic)h
+-1(h)h
+177 1040(F)s
+-3(unnelW)h
+-3(eb)h
+10(is)h
+11(distributed)h
+12(allo)h
+-1(ws)h
+9(an)h
+-1(y)h
+-1(one)h
+11(to)h
+10(mo)h
+1(dify)h
+9(F)h
+-3(unnelW)h
+-3(eb)h
+10(and)h
+11(distribute)h
+11(the)h
+11(mo)h
+1(di\014ed)h
+10(v)h
+-1(ersions,)h
+177 1090(there)s
+15(are)h
+14(a)h
+13(n)h
+-1(um)h
+-1(b)h
+1(er)h
+12(of)h
+13(dangers)h
+14(in)h
+13(doing)h
+13(this.)h
+17(This)h
+14(c)h
+-1(hapter)h
+14(explains)h
+13(the)h
+14(dangers)h
+14(and)h
+13(presen)h
+-1(ts)h
+16(some)h
+177 1140(issues)s
+15(that)h
+14(y)h
+-1(ou)h
+14(should)h
+13(think)h
+14(ab)h
+1(out)h
+14(if)h
+13(y)h
+-1(ou)h
+13(in)h
+-1(tend)h
+14(to)h
+14(distribute)h
+14(mo)h
+1(di\014ed)h
+13(v)h
+-1(ersions)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb.)h
+177 1417(Whenev)s
+-1(er)h
+15(someone)h
+13(mo)h
+1(di\014es)h
+13(a)h
+14(computer)h
+13(program)h
+12(they)h
+15(should)h
+13(alw)h
+-1(a)h
+-1(ys)h
+13(ask)h
+14(themselv)h
+-1(es)h
+14(\\what)h
+13(is)h
+14(the)h
+177 1467(impact)s
+10(of)h
+11(these)h
+12(c)h
+-1(hanges)h
+12(going)h
+11(to)h
+11(b)h
+1(e)h
+12(on)h
+11(users".)h
+18(F)h
+-3(or)h
+11(mature)h
+11(pro)h
+1(ducts,)h
+12(the)h
+12(degree)h
+13(of)h
+11(impact)h
+9(is)h
+12(largely)h
+177 1516(determined)s
+17(b)h
+-1(y)h
+17(the)h
+18(in)h
+-1(v)h
+-1(estmen)h
+-1(t)h
+16(that)h
+18(users)h
+18(ha)h
+-1(v)h
+-1(e)h
+17(made)h
+16(in)h
+17(particular)h
+17(\014le)h
+17(formats)h
+16(supp)h
+1(orted)h
+18(b)h
+-1(y)h
+17(the)h
+177 1566(pro)s
+1(duct.)h
+177 1641(A)s
+-1(t)h
+13(the)h
+13(t)h
+-1(w)h
+-1(o)h
+13(extremes,)h
+13(there)h
+14(are)h
+13(the)h
+13(video)h
+13(game)h
+11(and)h
+13(the)h
+13(compiler.)h
+16(If)h
+13(one)h
+13(c)h
+-1(hanges)h
+13(a)h
+13(video)h
+12(game,)h
+11(the)h
+177 1690(c)s
+-1(hange)h
+12(a\013ects)h
+12(only)h
+10(the)h
+12(future)h
+12(games)h
+10(pla)h
+-1(y)h
+-1(ed.)h
+16(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+12(if)h
+10(one)h
+12(c)h
+-1(hanges)h
+11(a)h
+11(compiler)h
+10(in)h
+11(particular)h
+11(w)h
+-1(a)h
+-1(ys,)h
+177 1740(it)s
+13(is)h
+12(lik)h
+-1(ely)h
+12(that)h
+13(thousands)h
+13(of)h
+13(users)h
+14(will)h
+12(b)h
+1(e)h
+13(forced)h
+14(to)h
+12(c)h
+-1(hange)h
+14(mil)h
+-1(li)h
+-1(ons)h
+11(of)h
+13(source)h
+14(\014les)h
+13(to)h
+13(accommodate)h
+177 1790(the)s
+12(new)h
+12(v)h
+-1(ersion.)h
+17(Th)h
+-1(us)h
+11(the)h
+12(impact)h
+10(of)h
+10(c)h
+-1(hanges)h
+12(to)h
+11(a)h
+11(program)h
+10(dep)h
+1(ends)h
+13(largely)h
+10(on)h
+11(the)h
+12(in)h
+-1(v)h
+-1(estmen)h
+-1(t)h
+10(made)h
+177 1840(b)s
+-1(y)h
+14(users,)h
+15(in)h
+13(source)h
+15(\014les,)h
+14(training,)h
+13(and)h
+13(ev)h
+-1(en)h
+15(m)h
+-1(uscle)h
+13(memo)h
+-1(ry!)h
+177 1914(F)s
+-3(unnelW)h
+-3(eb)h
+14(lies)h
+15(v)h
+-1(ery)h
+15(m)h
+-1(uc)h
+-1(h)h
+14(at)h
+15(the)h
+15(compiler)h
+14(end)h
+15(of)h
+14(this)h
+15(sp)h
+1(ectrum.)h
+22(In)h
+14(fact)h
+15(it)h
+15(lies)h
+14(ev)h
+-1(en)h
+16(further.)h
+22(Not)h
+177 1964(only)s
+15(do)h
+1(es)h
+16(it)h
+14(implem)h
+-1(en)h
+-1(t)h
+14(a)h
+15(language,)h
+14(but)h
+15(it)h
+15(is)h
+15(curren)h
+-1(tly)h
+16(the)h
+107(impl)h
+-1(em)h
+-1(en)h
+-1(tation)h
+13(of)h
+15(that)h
+15(language!)h
+177 2014(This)s
+11(means)h
+11(that,)h
+11(although)h
+11(they)h
+12(shouldn't,)h
+11(p)h
+1(eople)h
+11(will)h
+10(b)h
+1(e)h
+12(tempted)h
+11(to)h
+12(treat)h
+12(the)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+10(program)h
+177 2064(as)s
+16(the)h
+17(de\014nition)h
+15(of)h
+15(its)h
+16(input)h
+16(language)h
+15(instead)h
+16(of)h
+15(the)h
+17(de\014nition)h
+15(c)h
+-1(hapter)h
+17(in)h
+15(the)h
+312 2113(,)s
+14(whic)h
+-1(h)h
+14(tak)h
+-1(es)h
+14(precede)h
+1(nce)h
+1(.)h
+177 2188(Because)s
+13(F)h
+-3(unnelW)h
+-3(eb)h
+10(de\014nes)h
+12(an)h
+10(input)h
+11(language,)h
+10(and)h
+10(p)h
+1(eople)h
+11(will)h
+10(write)h
+11(programs)h
+9(using)h
+10(that)h
+11(language,)h
+177 2238(particular)s
+14(kinds)h
+13(of)h
+14(c)h
+-1(hanges)h
+14(in)h
+13(the)h
+15(language)h
+13(will)h
+12(impact)h
+12(sev)h
+-1(erely)h
+15(on)h
+14(users.)h
+19(Three)h
+15(di\013eren)h
+-1(t)h
+15(kinds)h
+13(of)h
+177 2287(c)s
+-1(hange)h
+14(are)h
+15(discussed)h
+15(b)h
+1(elo)h
+-1(w.)h
+716 2362(Remo)s
+-1(v)h
+-3(al)h
+11(of)h
+12(features)h
+14(\(featurectom)h
+-1(y\))h
+13(is)h
+13(extremely)h
+13(di\016cult)h
+12(once)h
+295 2412(the)s
+16(user)h
+17(base)h
+16(has)h
+16(started)h
+16(using)h
+16(them.)h
+22(If)h
+15(a)h
+15(feature)h
+16(is)h
+16(remo)h
+-1(v)h
+-1(ed,)h
+14(users)h
+17(of)h
+15(the)h
+16(program)h
+295 2461(will)s
+11(ha)h
+-1(v)h
+-1(e)h
+12(to)h
+13(go)h
+11(through)h
+13(all)h
+11(their)h
+13(programs)h
+11(and)h
+12(\014nd)h
+13(a)h
+12(w)h
+-1(a)h
+-1(y)h
+11(to)h
+13(sim)h
+-1(ula)h
+-1(te)h
+11(the)h
+13(e\013ect)h
+14(of)h
+12(the)h
+295 2511(remo)s
+-1(v)h
+-1(ed)h
+13(feature)h
+15(with)h
+13(other)h
+14(features.)h
+19(Often)h
+15(this)h
+13(is)h
+14(so)h
+14(un)h
+-1(think)h
+-2(able,)h
+12(that)h
+14(bad)h
+14(language)h
+295 2561(constructs)s
+16(are)h
+14(tolerated)h
+15(far)h
+13(b)h
+1(ey)h
+-1(ond)h
+15(their)h
+14(useful)h
+14(lifetim)h
+-1(e.)h
+732 2635(Mo)s
+1(di\014cation)h
+17(of)h
+16(features)h
+18(has)h
+18(less)h
+18(direct)h
+18(impact)h
+15(than)h
+17(the)h
+18(re-)h
+295 2685(mo)s
+-1(v)h
+-2(al)h
+12(of)h
+14(features,)h
+15(but)h
+15(can)h
+14(cause)h
+16(more)h
+13(subtle)h
+15(errors.)h
+21(F)h
+-3(or)h
+15(example,)h
+12(consider)h
+16(the)h
+15(sorts)h
+295 2735(of)s
+12(subtle)h
+14(errors)h
+14(that)h
+13(mig)h
+-1(h)h
+-1(t)h
+11(arise)h
+13(if)h
+12(the)h
+14(seman)h
+-1(tics)h
+12(of)h
+12(the)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(commen)h
+-1(t)h
+73(w)h
+-1(ere)h
+295 2785(c)s
+-1(hanged)h
+20(so)h
+20(that)h
+20(it)h
+19(no)h
+20(longer)h
+19(includes)h
+20(the)h
+21(end)h
+20(of)h
+19(line)h
+19(mark)h
+-1(er.)h
+35(An)h
+-1(y)h
+-1(one)h
+20(mo)h
+1(dif)h
+-1(ying)h
+295 2835(features)s
+15(should)h
+14(b)h
+1(e)h
+14(sure)h
+15(that)h
+14(they)h
+15(are)h
+14(not)h
+14(inadv)h
+-1(erten)h
+-1(tly)h
+14(la)h
+-1(ying)h
+12(traps.)h
+1042 2940(35)s
+36 @eop
+37 @bop0
+cmr10.300 sf
+[<FFF007FC0F8001E00780008007C0018003C0010003E0020001F0020000F0040000F804
+0000780800007C1800003C1000001E2000001F2000000F4000000FC00000078000000780
+000007800000078000000780000007800000078000000780000007800000078000000780
+00007FF800>
+32 28 0 27 31] 89 dc
+[<00E0000001900000030800000308000007080000070800000708000007080000071000
+0007100000072000000740000003C03FE003800F00038006000380040005C0040009C008
+0010E0100030E010006070200060702000E0384000E03C4000E01C8000E00F0020E00700
+20700780403009C0401830E18007C03E00>
+32 31 -2 29 32] 38 dc
+37 @bop1
+cmsy10.300 sf
+239 2426(\017)s
+239 2655(\017)s
+239 2785(\017)s
+cmti10.300 sf
+722 998(similar)s
+cmbx10.432 sf
+177 2159(3.3)s
+70(Authorit)h
+-2(y)h
+23(vs)h
+23(User)h
+23(Securit)h
+-2(y)h
+cmbx10.300 sf
+295 42(Adding)s
+15(features:)h
+1645 445([Hoare80])s
+295 1311(Univ)s
+-1(ersal)h
+14(p)h
+1(ortabili)h
+-1(t)h
+-2(y:)h
+295 1532(Clear)s
+16(seman)h
+-1(tics:)h
+cmr10.300 sf
+665 42(Although)s
+14(the)h
+16(addition)h
+14(of)h
+15(features)h
+16(is)h
+15(generally)h
+15(the)h
+16(most)h
+14(painless)h
+295 91(for)s
+12(the)h
+13(user)h
+13(comm)h
+-1(uni)h
+-1(t)h
+-1(y)h
+-3(,)h
+10(as)h
+12(Hoare)h
+13(p)h
+1(oin)h
+-1(ts)h
+12(out,)h
+12(it)h
+12(is)h
+12(also)h
+11(the)h
+13(most)h
+11(dangerous)h
+13(in)h
+12(the)h
+13(long)h
+295 141(run.)s
+343 246(\\When)s
+10(an)h
+-1(y)h
+9(new)h
+10(language)h
+9(design)h
+10(pro)h
+2(ject)h
+11(is)h
+10(nearing)h
+9(completion,)h
+9(there)h
+11(is)h
+9(alw)h
+-1(a)h
+-1(ys)h
+9(a)h
+10(mad)h
+281 295(rush)s
+11(to)h
+10(get)h
+11(new)h
+11(features)h
+11(added)h
+11(b)h
+1(efore)h
+11(standardization.)h
+16(The)h
+11(rush)h
+11(is)h
+10(mad)h
+9(indeed,)h
+11(b)h
+1(ecause)h
+281 345(it)s
+10(leads)h
+11(in)h
+-1(to)h
+10(a)h
+10(trap)h
+11(from)h
+9(whic)h
+-1(h)h
+10(there)h
+12(is)h
+10(no)h
+11(escap)h
+1(e.)h
+18(A)h
+11(feature)h
+11(whic)h
+-1(h)h
+11(is)h
+10(omitted)h
+9(can)h
+11(alw)h
+-1(a)h
+-1(ys)h
+281 395(b)s
+1(e)h
+18(added)h
+18(later,)h
+18(when)h
+18(its)h
+17(design)h
+18(and)h
+17(its)h
+17(implicatio)h
+-1(ns)h
+16(are)h
+18(w)h
+-1(ell)h
+17(understo)h
+1(o)h
+1(d.)h
+30(A)h
+17(feature)h
+281 445(whic)s
+-1(h)h
+13(is)h
+13(included)h
+14(b)h
+1(efore)h
+14(it)h
+13(is)h
+13(fully)h
+12(understo)h
+1(o)h
+1(d)h
+15(can)h
+14(nev)h
+-1(er)h
+14(b)h
+1(e)h
+14(remo)h
+-1(v)h
+-1(ed)h
+12(later.")h
+177 549(These)s
+17(problems)h
+14(exist)h
+15(ev)h
+-1(en)h
+16(when)h
+15(there)h
+17(is)h
+15(a)h
+14(cen)h
+-1(tral)h
+16(authorit)h
+-1(y)h
+-3(.)h
+21(If)h
+14(w)h
+-1(e)h
+16(consider)h
+16(the)h
+15(case)h
+16(where)h
+16(there)h
+177 599(is)s
+16(no)h
+16(cen)h
+-1(tral)h
+17(authorit)h
+-1(y)h
+-3(,)h
+15(and)h
+16(users)h
+18(mo)h
+1(dify)h
+14(a)h
+16(language)h
+15(and)h
+16(its)h
+16(implem)h
+-1(en)h
+-1(tations)h
+14(and)h
+16(distribute)h
+17(the)h
+177 649(mo)s
+1(di\014ed)h
+18(v)h
+-1(ersions,)h
+20(the)h
+20(result)h
+20(is)h
+19(ev)h
+-1(en)h
+19(w)h
+-1(orse.)h
+34(F)h
+-3(or)h
+19(a)h
+19(start,)h
+20(the)h
+20(structure)h
+21(of)h
+19(the)h
+19(genealogy)h
+19(of)h
+18(the)h
+177 699(program)s
+16(c)h
+-1(hanges)h
+19(from)h
+16(a)h
+17(list)h
+18(to)h
+17(a)h
+18(tree.)h
+31(This)h
+18(mak)h
+-1(es)h
+16(it)h
+18(imp)h
+1(ossible)h
+16(to)h
+17(imp)h
+1(ose)h
+17(an)h
+18(ordering)h
+18(on)h
+17(the)h
+177 749(di\013eren)s
+-1(t)h
+16(v)h
+-1(ersions)h
+16(and)h
+16(mak)h
+-1(es)h
+14(it)h
+15(di\016cult)h
+14(to)h
+16(merge)h
+15(them)h
+14(once)h
+16(they)h
+16(div)h
+-1(erge.)h
+23(Second,)h
+16(it)h
+15(reduces)h
+17(the)h
+177 798(p)s
+1(ortabilit)h
+-1(y)h
+16(of)h
+17(\014les)h
+18(created)h
+19(under)h
+19(di\013eren)h
+-1(t)h
+18(v)h
+-1(ersions.)h
+30(Third,)h
+18(it)h
+17(mak)h
+-1(es)h
+16(adding)h
+17(features)h
+19(hazardous.)h
+177 848(If)s
+15(a)h
+15(feature)h
+16(is)h
+15(added)h
+16(in)h
+14(one)h
+16(v)h
+-1(ersion,)h
+15(\014les)h
+16(will)h
+14(b)h
+1(e)h
+15(created)h
+17(that)h
+16(use)h
+16(it.)h
+21(These)h
+17(\014les)h
+16(will)h
+13(imm)h
+-1(ediately)h
+177 898(b)s
+1(ecome)h
+10(non-p)h
+1(ortable.)h
+17(F)h
+-3(urthermore,)h
+11(t)h
+-1(w)h
+-1(o)h
+10(programm)h
+-1(ers)h
+9(ma)h
+-1(y)h
+8(in)h
+-1(tro)h
+1(duce)h
+12(di\013eren)h
+-1(t)h
+11(features)h
+11(that)h
+11(use)h
+11(the)h
+177 948(same)s
+12(syn)h
+-1(tactical)h
+13(constructs,)h
+14(th)h
+-1(us)h
+13(prev)h
+-1(en)h
+-1(ting)h
+13(the)h
+14(t)h
+-1(w)h
+-1(o)h
+12(v)h
+-1(ersions)h
+13(from)h
+11(ev)h
+-1(er)h
+14(b)h
+1(eing)h
+13(merged.)h
+17(W)h
+-3(orse,)h
+12(t)h
+-1(w)h
+-1(o)h
+177 998(programm)s
+-1(ers)h
+12(could)h
+13(in)h
+-1(tro)h
+1(duce)h
+153(features)h
+14(that)h
+14(use)h
+14(the)h
+13(same)h
+13(syn)h
+-1(tactical)h
+13(constructs,)h
+15(pro)h
+1(ducing)h
+177 1048(ev)s
+-1(en)h
+15(more)h
+13(subtle)h
+14(problems.)h
+177 1119(The)s
+10(only)h
+9(w)h
+-1(a)h
+-1(y)h
+8(to)h
+10(a)h
+-1(v)h
+-1(oid)h
+8(all)h
+8(these)h
+11(problems)h
+9(is)h
+9(to)h
+9(create)h
+11(some)h
+9(sort)h
+10(of)h
+8(cen)h
+-1(tral)h
+10(design)h
+10(authorit)h
+-1(y)h
+-3(,)h
+9(\(or,)h
+10(at)h
+9(the)h
+177 1169(v)s
+-1(ery)h
+12(least,)h
+12(some)h
+11(sort)h
+12(of)h
+12(design)h
+12(sync)h
+-1(hronization\))h
+11(that)h
+12(con)h
+-1(trols)h
+12(the)h
+13(language)h
+10(and)h
+12(its)h
+12(impl)h
+-1(emen)h
+-1(tati)h
+-1(on.)h
+177 1240(The)s
+14(b)h
+1(ene\014ts)h
+16(of)h
+13(tigh)h
+-1(t)h
+14(con)h
+-1(trol)h
+13(o)h
+-1(v)h
+-1(er)h
+14(the)h
+15(language)h
+13(are)h
+14(enormous.)h
+765 1311(Source)s
+16(\014les)h
+15(can)h
+15(b)h
+1(e)h
+15(treated)h
+16(as)h
+15(p)h
+1(ortable.)h
+21(If)h
+15(all)h
+13(the)h
+16(language)h
+295 1361(implem)s
+-1(en)h
+-1(tations)h
+17(in)h
+18(the)h
+19(w)h
+-1(orld)h
+17(are)h
+19(singing)h
+18(the)h
+19(same)h
+17(tune,)h
+20(then)h
+19(someone)h
+18(in)h
+18(Sydney)h
+295 1411(could)s
+18(send)h
+19(a)h
+18(\014le)h
+19(to)h
+18(someone)h
+17(in)h
+18(New)h
+19(Y)h
+-3(ork)h
+18(and)h
+18(b)h
+1(e)h
+18(sure)h
+20(that)h
+18(it)h
+18(will)h
+17(b)h
+1(e)h
+18(succes)h
+1(sfully)h
+295 1461(pro)s
+1(cesse)h
+1(d.)h
+658 1532(Doubt)s
+14(ab)h
+1(out)h
+14(the)h
+15(seman)h
+-1(tics)h
+14(of)h
+14(the)h
+15(language)h
+13(will)h
+13(b)h
+1(e)h
+15(greatly)h
+14(mini-)h
+295 1582(mized.)s
+18(So)h
+13(long)h
+13(as)h
+14(more)h
+13(than)h
+14(one)h
+15(sligh)h
+-1(tly)h
+12(di\013ering)h
+14(v)h
+-1(ersion)h
+14(of)h
+13(a)h
+14(language)h
+13(exists,)h
+14(there)h
+295 1632(will)s
+9(b)h
+1(e)h
+12(confusion)h
+10(o)h
+-1(v)h
+-1(er)h
+10(the)h
+12(seman)h
+-1(tics)h
+10(of)h
+10(its)h
+10(constructs.)h
+19(A)h
+11(go)h
+1(o)h
+1(d)h
+10(example)h
+9(is)h
+11(the)h
+11(confusion)h
+295 1682(b)s
+1(et)h
+-1(w)h
+-1(een)h
+16(the)h
+14(A)h
+-3(T&T)h
+14(Unix)h
+13(and)h
+14(Berk)h
+-1(eley)h
+15(Unix)h
+14(shell)h
+13(languages.)h
+177 1753(While)s
+20(c)h
+-1(hanges)h
+21(to)h
+21(the)h
+21(language)h
+20(supp)h
+1(orted)h
+22(b)h
+-1(y)h
+20(a)h
+20(piece)h
+22(of)h
+20(soft)h
+-1(w)h
+-1(are)h
+21(is)h
+20(the)h
+21(most)h
+20(serious)h
+21(problem)h
+177 1803(asso)s
+1(ciated)h
+16(with)h
+14(m)h
+-1(ultipl)h
+-1(e)h
+14(v)h
+-1(ersions)h
+15(of)h
+14(soft)h
+-1(w)h
+-1(are,)h
+15(the)h
+15(lesser)h
+16(problem)h
+14(of)h
+14(k)h
+-1(eeping)h
+15(trac)h
+-1(k)h
+15(of)h
+14(c)h
+-1(hanges)h
+16(that)h
+177 1853(don't)s
+15(a\013ect)h
+16(the)h
+16(language)h
+14(that)h
+15(the)h
+16(soft)h
+-1(w)h
+-1(are)h
+16(impl)h
+-1(em)h
+-1(en)h
+-1(ts)h
+14(can)h
+16(also)h
+14(cause)h
+17(trouble.)h
+22(Merging)h
+15(di\013eren)h
+-1(t)h
+177 1902(v)s
+-1(ersions)h
+15(of)h
+14(soft)h
+-1(w)h
+-1(are)h
+14(is)h
+15(extremely)h
+14(tedious)h
+15(as)h
+14(an)h
+-1(y)h
+-1(one)h
+14(who)h
+14(has)h
+15(tried)h
+15(it)h
+14(will)h
+13(v)h
+-1(erify)h
+-3(.)h
+19(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(c)h
+-1(hanges)h
+177 1952(not)s
+14(a\013ecting)h
+14(the)h
+14(language)h
+13(are)h
+14(far)h
+13(less)h
+14(serious)h
+15(b)h
+1(ecause)h
+15(they)h
+14(impact)h
+12(only)h
+13(on)h
+14(the)h
+14(program)h
+12(itself,)h
+13(not)h
+177 2002(on)s
+14(the)h
+14(far)h
+14(more)h
+13(n)h
+-1(umerous)h
+13(source)h
+15(\014les)h
+14(that)h
+14(dep)h
+1(end)h
+16(on)h
+13(it.)h
+177 2272(There)s
+16(are)h
+15(a)h
+15(n)h
+-1(um)h
+-1(b)h
+1(er)h
+14(of)h
+14(w)h
+-1(a)h
+-1(ys)h
+15(of)h
+14(pro)h
+-1(viding)h
+13(the)h
+16(strong)h
+15(cen)h
+-1(tral)h
+15(design)h
+15(authorit)h
+-1(y)h
+14(required)h
+16(to)h
+15(pro)h
+1(duce)h
+177 2322(the)s
+15(p)h
+1(ortabilit)h
+-1(y)h
+12(and)h
+14(seman)h
+-1(tic)h
+13(securit)h
+-1(y)h
+15(desired)h
+15(b)h
+-1(y)h
+13(users,)h
+281 2426(T)s
+-3(rade)h
+18(mark)h
+16(the)h
+18(name)h
+17(of)h
+17(the)h
+19(language.)h
+28(Publish)h
+18(a)h
+18(sp)h
+1(eci\014cation)h
+18(of)h
+17(the)h
+19(language)h
+17(under)h
+18(the)h
+281 2476(trade)s
+14(name.)h
+16(W)h
+-3(arn)h
+13(all)h
+12(users)h
+15(not)h
+13(to)h
+13(trust)h
+14(an)h
+-1(y)h
+13(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+12(that)h
+13(do)h
+1(es)h
+14(not)h
+13(guaran)h
+-1(tee)h
+14(that)h
+13(it)h
+281 2526(implem)s
+-1(en)h
+-1(ts)h
+11(the)h
+13(language.)h
+17(Then)h
+13(con)h
+-1(trol)h
+12(implem)h
+-1(en)h
+-1(tations)h
+10(b)h
+-1(y)h
+13(only)h
+11(licensing)h
+13(the)h
+13(trade)h
+13(mark)h
+11(to)h
+281 2576(conforming)s
+12(impl)h
+-1(em)h
+-1(en)h
+-1(tations.)h
+281 2655(Create)s
+21(a)h
+20(single)h
+20(implem)h
+-1(en)h
+-1(tation)h
+18(of)h
+20(the)h
+21(language.)h
+36(Do)h
+20(not)h
+20(release)h
+21(the)h
+21(source)h
+22(co)h
+1(de)h
+21(to)h
+20(the)h
+281 2705(implem)s
+-1(en)h
+-1(tatio)h
+-1(n.)h
+16(Release)h
+15(only)h
+13(binary)h
+13(executables.)h
+281 2785(Release)s
+14(the)h
+13(source)h
+15(co)h
+1(de)h
+14(to)h
+13(the)h
+13(implem)h
+-1(en)h
+-1(tation,)h
+10(but)h
+14(under)h
+14(a)h
+13(license)h
+13(that)h
+14(prohibits)h
+12(the)h
+14(distri-)h
+281 2835(bution)s
+13(of)h
+14(mo)h
+1(di\014ed)h
+12(v)h
+-1(ersions.)h
+1042 2940(36)s
+37 @eop
+38 @bop0
+cmbx10.432 sf
+[<FFFFFFF800FFFFFFFF00FFFFFFFFC003FC003FE003FC000FF003FC0007F803FC0007FC
+03FC0003FC03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03
+FC0003FE03FC0003FC03FC0007FC03FC0007F803FC000FF003FC003FE003FFFFFF8003FF
+FFFE0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00
+000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
+0003FC00000003FC000000FFFFF00000FFFFF00000FFFFF00000>
+40 41 -3 40 47] 80 dc
+cmti10.300 sf
+[<01FFCFFE003C01E0003801C0003801C0003801C0003801C00070038000700380007003
+800070038000E0070000E0070000E0070000FFFF0001C00E0001C00E0001C00E0001C00E
+0003801C0003801C0003801C0003801C00070038000700380007003800070038000F0078
+00FFE7FF00>
+32 28 -3 27 31] 72 dc
+[<0FC00001C00001C0000380000380000380000380000700000700000700000700000E0F
+000E11000E23800E43801C83001C80001D00001E00003F800039C00038E00038E00070E2
+0070E20070E20070E400E06400603800>
+24 29 -3 28 19] 107 dc
+cmr10.300 sf
+[<0080008007E01898308460824081C087C08FC08FC086E080F0807E803FC01FF00FF803
+FC00BE008E00876087F083F083E0838082408240842088189007E000800080>
+16 33 -2 30 21] 36 dc
+38 @bop1
+cmsy10.300 sf
+239 762(\017)s
+239 898(\017)s
+239 1084(\017)s
+cmbx10.432 sf
+177 2271(3.4)s
+70(What)h
+23(I)h
+23(W)h
+-6(an)h
+-2(t)h
+24(to)h
+23(Protect)h
+cmti10.300 sf
+1747 1905(F)s
+-3(unnelWeb)h
+177 1955(Hacker's)s
+15(Manual)h
+cmtt10.300 sf
+831 1855(ross@spam.ad)s
+-1(elaid)h
+-1(e.ed)h
+-1(u.au)h
+cmr10.300 sf
+177 42(Man)s
+-1(y)h
+11(other)h
+12(v)h
+-2(ariations)h
+10(on)h
+11(these)h
+13(themes)h
+11(are)h
+12(p)h
+1(ossible,)h
+11(but)h
+12(they)h
+11(are)h
+12(all)h
+10(based)h
+12(on)h
+11(the)h
+12(idea)h
+11(of)h
+11(regulating)h
+177 91(either)s
+15(the)h
+14(\\o\016cial")h
+12(de\014nition)h
+14(of)h
+13(the)h
+15(language)h
+13(or)h
+13(all)h
+13(of)h
+13(its)h
+14(existing)h
+14(implem)h
+-1(en)h
+-1(tatio)h
+-1(ns.)h
+177 168(A)s
+-1(t)h
+15(ab)h
+1(out)h
+14(this)h
+15(stage,)h
+15(a)h
+14(con\015ict)h
+15(arises.)h
+21(While)h
+14(users)h
+16(w)h
+-1(an)h
+-1(t)h
+15(the)h
+15(language)h
+14(they)h
+15(are)h
+15(using)h
+14(to)h
+15(b)h
+1(e)h
+15(tigh)h
+-1(tly)h
+177 217(con)s
+-1(trolled,)h
+13(they)h
+14(also)h
+13(w)h
+-1(an)h
+-1(t)h
+13(to)h
+14(feel)h
+13(secure)h
+16(ab)h
+1(out)h
+13(the)h
+14(a)h
+-1(v)h
+-2(ailabil)h
+-1(it)h
+-1(y)h
+11(of)h
+13(its)h
+14(impl)h
+-1(em)h
+-1(en)h
+-1(tations.)h
+16(If)h
+14(h)h
+-1(undreds)h
+177 267(of)s
+19(source)h
+21(\014les)h
+19(are)h
+20(to)h
+20(b)h
+1(e)h
+20(created)h
+21(in)h
+19(the)h
+20(language,)h
+19(there)h
+21(had)h
+19(b)h
+1(etter)h
+21(b)h
+1(e)h
+20(one)h
+20(or)h
+19(more)h
+18(translators)h
+177 317(a)s
+-1(v)h
+-2(ailable)h
+12(when)h
+14(the)h
+15(time)h
+12(comes)h
+14(to)h
+13(use)h
+15(them.)h
+177 393(In)s
+15(the)h
+15(case)h
+16(of)h
+14(widely-used)h
+15(programm)h
+-1(i)h
+-1(ng)h
+13(languages)h
+14(suc)h
+-1(h)h
+15(as)h
+15(C,)h
+14(the)h
+16(problem)h
+13(of)h
+14(securing)h
+16(impl)h
+-1(em)h
+-1(en-)h
+177 443(tations)s
+12(do)h
+1(es)h
+14(not)h
+12(arise.)h
+18(If)h
+12(y)h
+-1(ou)h
+12(don't)h
+12(get)h
+13(y)h
+-1(our)h
+12(compiler)h
+11(from)h
+11(Borland,)h
+12(y)h
+-1(ou)h
+12(can)h
+13(get)h
+12(it)h
+13(from)h
+10(Microsoft.)h
+177 493(Ho)s
+-1(w)h
+-1(ev)h
+-1(er,)h
+16(in)h
+15(the)h
+16(case)h
+16(of)h
+15(a)h
+15(newly)h
+16(in)h
+-1(tro)h
+1(duced)h
+16(language)h
+14(suc)h
+-1(h)h
+16(as)h
+16(F)h
+-3(unnelW)h
+-3(eb,)h
+15(there)h
+16(ma)h
+-1(y)h
+14(b)h
+1(e)h
+16(v)h
+-1(ery)h
+16(few)h
+177 543(implem)s
+-1(en)h
+-1(tations,)h
+17(or)h
+18(ev)h
+-1(en)h
+19(just)h
+18(one)h
+19(implem)h
+-1(en)h
+-1(tatio)h
+-1(n,)h
+17(and)h
+18(this)h
+19(p)h
+1(oses)h
+19(a)h
+18(danger)h
+19(to)h
+18(the)h
+19(user)h
+19(who)h
+18(is)h
+177 593(commi)s
+-1(tting)h
+11(to)h
+13(that)h
+13(format.)h
+16(Despite)h
+13(the)h
+14(b)h
+1(est)h
+14(in)h
+-1(ten)h
+-1(tions)h
+13(of)h
+12(the)h
+14(cop)h
+-1(yrigh)h
+-1(t)h
+13(o)h
+-1(wner,)h
+13(there)h
+14(are)h
+14(a)h
+12(v)h
+-2(ariet)h
+-1(y)h
+177 642(of)s
+13(w)h
+-1(a)h
+-1(ys)h
+13(in)h
+12(whic)h
+-1(h)h
+13(a)h
+13(computer)h
+13(program)h
+12(can)h
+13(suddenly)h
+14(b)h
+1(ecome)h
+13(una)h
+-1(v)h
+-2(ailable.)h
+16(Here)h
+14(are)h
+14(some)h
+12(examples:)h
+281 762(If)s
+12(the)h
+13(program)h
+11(is)h
+13(o)h
+-1(wned)h
+13(b)h
+-1(y)h
+12(a)h
+12(compan)h
+-1(y)h
+11(and)h
+13(the)h
+13(compan)h
+-1(y)h
+11(go)h
+1(es)h
+13(brok)h
+-1(e,)h
+13(the)h
+13(liquidators)h
+11(ma)h
+-1(y)h
+11(not)h
+281 812(b)s
+1(other)h
+15(to)h
+13(place)h
+14(the)h
+15(soft)h
+-1(w)h
+-1(are)h
+14(in)h
+13(the)h
+15(public)h
+13(domain.)h
+281 898(If)s
+13(the)h
+13(program)h
+12(is)h
+13(o)h
+-1(wned)h
+13(b)h
+-1(y)h
+13(a)h
+13(kindly)h
+12(individual)h
+11(who)h
+13(issues)h
+14(licenses)h
+15(for)h
+13(free,)h
+13(and)h
+13(that)h
+13(individ-)h
+281 948(ual)s
+14(suddenly)h
+15(dies,)h
+15(users)h
+17(migh)h
+-1(t)h
+12(suddenly)h
+16(\014nd)h
+15(themselv)h
+-1(es)h
+15(negotiating)h
+14(with)h
+14(hard-nosed)h
+16(estate)h
+281 998(executors)s
+16(for)h
+13(the)h
+15(righ)h
+-1(ts)h
+13(to)h
+14(con)h
+-1(tin)h
+-1(ue)h
+14(using)h
+14(the)h
+14(program.)h
+281 1084(If)s
+17(who)h
+1(ev)h
+-1(er)h
+18(o)h
+-1(wns)h
+18(the)h
+18(program)h
+16(do)h
+1(es)h
+18(not)h
+17(upgrade)h
+18(the)h
+18(program)h
+16(ev)h
+-1(ery)h
+18(so)h
+17(often,)h
+18(it)h
+17(is)h
+18(actually)h
+281 1134(p)s
+1(ossible)h
+10(for)h
+10(the)h
+11(released)h
+11(executables)h
+12(to)h
+10(\\expire")h
+11(when)h
+10(new)h
+11(op)h
+1(erating)h
+10(system)h
+10(upgrades)h
+11(app)h
+1(ear.)h
+177 1254(These)s
+16(p)h
+1(ossibilities)h
+13(mean)h
+13(that)h
+15(users)h
+15(ab)h
+1(out)h
+15(to)h
+14(in)h
+-1(v)h
+-1(est)h
+14(in)h
+14(a)h
+14(newly)h
+14(in)h
+-1(tro)h
+1(duced)h
+15(programm)h
+-1(i)h
+-1(ng)h
+12(to)h
+1(ol)h
+14(suc)h
+-1(h)h
+177 1304(as)s
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(ha)h
+-1(v)h
+-1(e)h
+17(legitim)h
+-1(ate)h
+15(concerns)h
+19(when)h
+17(they)h
+18(w)h
+-1(orry)h
+16(ab)h
+1(out)h
+17(the)h
+17(to)h
+1(ol's)h
+16(a)h
+-1(v)h
+-2(ailabil)h
+-1(it)h
+-1(y)h
+-4(.)h
+25(F)h
+-3(or)h
+16(non-)h
+177 1354(commerciall)s
+-1(y)h
+9(distributed)h
+12(to)h
+1(ols)h
+11(suc)h
+-1(h)h
+11(as)h
+12(F)h
+-3(unnelW)h
+-3(eb,)h
+10(the)h
+12(simplest)h
+10(solution)h
+10(to)h
+11(this)h
+12(problem)h
+9(is)h
+11(to)h
+11(mak)h
+-1(e)h
+177 1404(the)s
+13(source)h
+13(co)h
+1(de)h
+13(a)h
+-1(v)h
+-2(aila)h
+-1(ble,)h
+10(either)h
+13(b)h
+-1(y)h
+12(placing)h
+11(it)h
+11(in)h
+-1(to)h
+11(the)h
+13(public)h
+11(domain,)h
+10(or)h
+12(b)h
+-1(y)h
+11(releasing)h
+12(it)h
+12(under)h
+13(some)h
+177 1453(kind)s
+15(of)h
+14(public)h
+15(license,)h
+15(suc)h
+-1(h)h
+16(as)h
+15(a)h
+15(GNU)h
+15(license.)h
+22(The)h
+15(trouble)h
+15(with)h
+15(releasing)h
+15(the)h
+16(source)h
+16(co)h
+1(de)h
+16(is)h
+15(that)h
+177 1503(it)s
+14(remo)h
+-1(v)h
+-1(es)h
+14(con)h
+-1(trol)h
+14(from)h
+13(the)h
+15(design)h
+15(authorit)h
+-1(y)h
+-3(.)h
+18(Once)h
+16(the)h
+15(co)h
+1(de)h
+15(is)h
+15(\\out")h
+14(there)h
+15(is)h
+15(no)h
+14(stopping)h
+14(an)h
+-1(y)h
+-1(one)h
+177 1553(from)s
+12(mo)h
+1(difying)h
+11(the)h
+15(program)h
+12(and)h
+14(distributing)h
+13(mo)h
+1(di\014ed)h
+13(v)h
+-1(ersions.)h
+18(All)h
+13(c)h
+-1(haos)h
+14(can)h
+14(ensue.)h
+177 1629(One)s
+17(solution)h
+14(to)h
+16(this)h
+16(con\015ict)h
+16(is)h
+15(to)h
+16(tak)h
+-1(e)h
+15(the)h
+16(trade)h
+17(mark)h
+14(approac)h
+-1(h.)h
+23(This)h
+16(separates)h
+17(the)h
+16(righ)h
+-1(t)h
+15(of)h
+15(the)h
+177 1679(design)s
+13(authorit)h
+-1(y)h
+12(to)h
+13(con)h
+-1(trol)h
+12(the)h
+13(language)h
+12(and)h
+12(its)h
+13(implem)h
+-1(en)h
+-1(tatio)h
+-1(ns,)h
+11(and)h
+13(the)h
+13(righ)h
+-1(t)h
+12(of)h
+12(the)h
+13(users)h
+14(to)h
+13(use)h
+177 1729(the)s
+13(source)h
+15(co)h
+1(de)h
+13(in)h
+12(an)h
+-1(y)h
+13(w)h
+-1(a)h
+-1(y)h
+12(they)h
+13(lik)h
+-1(e)h
+12(\(but)h
+13(they)h
+13(ma)h
+-1(y)h
+11(ha)h
+-1(v)h
+-1(e)h
+12(to)h
+13(c)h
+-1(hange)h
+13(its)h
+13(name!\).)h
+16(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+13(the)h
+13(trade)h
+177 1779(mark)s
+13(approac)h
+-1(h)h
+13(is)h
+14(exp)h
+1(ensiv)h
+-1(e.)h
+177 1855(The)s
+12(solution)h
+12(that)h
+11(I)h
+12(\(Ross)h
+12(William)h
+-2(s)h
+11(\()h
+547(\)\))h
+10(ha)h
+-1(v)h
+-1(e)h
+11(adopted)h
+13(is)h
+11(to)h
+12(release)h
+13(the)h
+177 1905(F)s
+-3(unnelW)h
+-3(eb)h
+17(source)h
+19(co)h
+1(de)h
+18(under)h
+19(a)h
+17(GNU)h
+17(license)h
+19(and)h
+17(then)h
+18(to)h
+17(write)h
+18(this)h
+18(c)h
+-1(hapter)h
+18(in)h
+17(the)h
+500 1955(to)s
+14(dissuade)h
+15(p)h
+1(ossible)h
+15(hac)h
+-1(k)h
+-1(ers)h
+16(from)h
+13(releasing)h
+14(mo)h
+1(di\014ed)h
+13(v)h
+-1(ersions)h
+16(under)h
+15(the)h
+15(F)h
+-3(unnel-)h
+177 2004(W)s
+-3(eb)h
+13(name.)h
+17(This)h
+14(is)h
+13(ab)h
+1(out)h
+14(as)h
+14(close)h
+14(to)h
+13(the)h
+15(GNU/trademark)h
+12(approac)h
+-1(h)h
+14(I)h
+13(can)h
+14(get)h
+14(without)h
+13(forking)h
+13(out)h
+177 2054(ab)s
+1(out)h
+11($1200)h
+11(for)h
+11(a)h
+11(US)h
+11(trademark)h
+11(or)h
+11(pa)h
+-1(ying)h
+10(ev)h
+-1(en)h
+12(more)h
+11(to)h
+11(get)h
+12(a)h
+11(la)h
+-1(wy)h
+-1(er)h
+11(to)h
+11(attempt)h
+10(to)h
+12(draft)h
+11(a)h
+11(con)h
+-1(tract)h
+177 2104(stating)s
+14(\\thou)h
+13(shalt)h
+14(not)h
+14(mo)h
+1(dify)h
+11(the)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(language".)h
+177 2389(The)s
+13(concerns)h
+15(expressed)h
+15(in)h
+12(the)h
+13(previous)h
+13(section)h
+14(ab)h
+1(out)h
+12(mo)h
+1(di\014cations)h
+11(to)h
+13(the)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(program)h
+11(do)h
+177 2439(not)s
+14(preclude)h
+16(mo)h
+1(di\014cations.)h
+18(They)h
+14(merely)h
+14(impl)h
+-1(y)h
+13(that)h
+14(some)h
+13(conditions)h
+14(b)h
+1(e)h
+15(observ)h
+-1(ed)h
+16(when)h
+15(mo)h
+1(di\014ca-)h
+177 2489(tions)s
+15(are)h
+15(made.)h
+19(In)h
+15(fact,)h
+15(ha)h
+-1(ving)h
+13(formall)h
+-1(y)h
+13(released)h
+16(the)h
+15(sources)h
+17(under)h
+15(GNU,)h
+14(there)h
+16(is)h
+15(nothing)h
+14(that)h
+15(I)h
+177 2539(can)s
+16(do)h
+15(to)h
+16(stop)h
+16(p)h
+1(eople)h
+16(distributing)h
+15(mo)h
+1(di\014ed)h
+14(v)h
+-1(ersions)h
+16(and)h
+16(the)h
+16(conditions)h
+15(to)h
+16(b)h
+1(e)h
+16(describ)h
+1(ed)h
+18(m)h
+-1(ust)h
+14(b)h
+1(e)h
+177 2588(imp)s
+1(osed)h
+13(v)h
+-1(olun)h
+-1(tarily)h
+-3(.)h
+177 2665(In)s
+14(the)h
+15(end)h
+14(there)h
+15(are)h
+14(t)h
+-1(w)h
+-1(o)h
+14(things)h
+14(that)h
+14(I)h
+13(w)h
+-1(an)h
+-1(t)h
+14(to)h
+14(protect/main)h
+-1(tain:)h
+228 2785(1.)s
+20(Restriction)h
+17(of)h
+17(the)h
+17(name)h
+16(\\F)h
+-3(unnelW)h
+-3(eb")h
+16(only)h
+16(to)h
+17(computer)h
+17(programs)h
+15(that)h
+17(exactly)h
+18(impl)h
+-1(em)h
+-1(en)h
+-1(t)h
+281 2835(m)s
+-1(y)h
+12(\\o\016cial")h
+12(de\014nition)h
+14(of)h
+13(the)h
+14(language.)h
+1042 2940(37)s
+38 @eop
+39 @bop0
+cmti10.300 sf
+[<1FFFFFC01C0701C0300E00C0200E0080600E0080400E0080401C0080801C0080801C00
+80001C000000380000003800000038000000380000007000000070000000700000007000
+0000E0000000E0000000E0000000E0000001C0000001C0000001C0000001C0000003C000
+007FFE0000>
+32 28 -7 27 30] 84 dc
+cmbx10.300 sf
+[<003FE3F801F03F1C03C03E3E07C07C3E0F807C3E0F807C1C0F807C000F807C000F807C
+000F807C000F807C00FFFFFFC0FFFFFFC00F807C000F807C000F807C000F807C000F807C
+000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C
+007FE1FFC07FE1FFC0>
+32 29 0 28 28] 11 dc
+cmr10.300 sf
+[<60F0F0600000000000000000000060F0F0701010101020204080>
+8 26 -4 17 12] 59 dc
+39 @bop1
+cmtt10.300 sf
+1251 42(.fw)s
+364(.fwi)h
+1171 917(.fw)s
+131(.fwi)h
+1514 966(.bw)s
+131(.bwi)h
+cmbx10.432 sf
+177 1364(3.5)s
+70(Mo)h
+2(difying)h
+22(the)h
+23(Man)h
+-2(uals)h
+177 1980(3.6)s
+70(Ho)h
+-2(w)h
+23(Cop)h
+-2(yrigh)h
+-2(t)h
+23(La)h
+-2(w)h
+23(W)h
+-6(orks)h
+cmti10.300 sf
+539 1533(The)s
+17(F)h
+-3(unnelWeb)h
+18(User's)h
+16(Manual)h
+99(The)h
+17(F)h
+-3(unnelWeb)h
+18(Hacker's)h
+16(Manual)h
+cmbx10.300 sf
+295 441(Mo)s
+1(di\014cations)h
+16(that)h
+18(do)h
+18(not)h
+17(a\013ect)h
+19(functi)h
+-1(onal)h
+-1(i)h
+-1(t)h
+-1(y:)h
+295 717(Mo)s
+1(di\014cations)h
+12(that)h
+13(a\013ect)h
+14(functi)h
+-1(onal)h
+-1(i)h
+-1(t)h
+-1(y:)h
+744 2276(w)s
+-1(ork)h
+122(cop)h
+-1(yrigh)h
+-2(t)h
+1216 2708(license)s
+959 2835(deriv)s
+-1(ed)h
+13(w)h
+-1(ork)h
+cmr10.300 sf
+228 42(2.)s
+20(Restriction)h
+15(of)h
+14(the)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(source)h
+16(\014le)h
+15(extensions)h
+16(\\)h
+66(")h
+13(\(input)h
+15(\014les\))h
+15(and)h
+14(\\)h
+88(")h
+14(\(include)h
+281 91(\014les\))s
+14(only)h
+13(to)h
+14(source)h
+15(\014les)h
+15(that)h
+14(conform)h
+12(to)h
+14(m)h
+-1(y)h
+12(\\o\016cial")h
+12(de\014nition)h
+13(of)h
+14(the)h
+14(language.)h
+177 214(So)s
+13(long)h
+11(as)h
+13(these)h
+14(conditions)h
+12(hold,)h
+12(source)h
+14(\014les)h
+13(created)h
+14(under)h
+14(\\F)h
+-3(unnelW)h
+-3(eb")h
+12(will)h
+11(b)h
+1(e)h
+13(p)h
+1(ortable,)h
+13(and)h
+12(the)h
+177 264(language)s
+12(will)h
+12(ha)h
+-1(v)h
+-1(e)h
+12(the)h
+14(p)h
+1(oten)h
+-1(tial)h
+12(to)h
+13(b)h
+1(e)h
+14(stable)h
+13(and)h
+13(w)h
+-1(ell-de\014ned.)h
+18(Here)h
+14(are)h
+13(m)h
+-1(y)h
+11(suggestions)h
+14(for)h
+12(ho)h
+-1(w)h
+13(to)h
+177 314(ob)s
+1(ey)h
+15(these)h
+17(rules.)h
+22(These)h
+16(suggestions)h
+16(are)h
+15(in)h
+15(addition)h
+13(to)h
+15(the)h
+16(GNU)h
+15(license)h
+15(rules)h
+16(ab)h
+1(out)h
+15(do)h
+1(cumen)h
+-1(ting)h
+177 363(an)s
+-1(y)h
+14(c)h
+-1(hanges)h
+14(that)h
+14(y)h
+-1(ou)h
+14(mak)h
+-1(e)h
+12(in)h
+13(the)h
+15(source)h
+15(\014les.)h
+1289 441(If)s
+16(y)h
+-1(ou)h
+16(c)h
+-1(hange)h
+16(the)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+295 491(program)s
+16(in)h
+18(a)h
+17(manner)h
+17(that)h
+18(do)h
+1(es)h
+18(not)h
+18(a\013ect)h
+19(the)h
+18(functionalit)h
+-1(y)h
+16(of)h
+17(the)h
+19(program)h
+16(in)h
+17(an)h
+-1(y)h
+295 540(w)s
+-1(a)h
+-1(y)h
+14(\(e.g.)h
+13(p)h
+1(ort)h
+14(it)h
+14(to)h
+14(a)h
+14(new)h
+14(mac)h
+-1(hine,)h
+13(or)h
+14(just)h
+14(sp)h
+1(eed)h
+16(it)h
+13(up\),)h
+14(then)h
+15(y)h
+-1(ou)h
+13(should)h
+14(mo)h
+1(dify)h
+12(the)h
+295 590(program)s
+12(to)h
+13(write)h
+13(out)h
+13(a)h
+13(message)h
+13(when)h
+13(it)h
+13(starts)h
+14(up)h
+13(sa)h
+-1(ying)h
+12(that)h
+13(it)h
+13(is)h
+13(a)h
+13(mo)h
+1(di\014ed)h
+12(v)h
+-1(ersion)h
+295 640(of)s
+14(F)h
+-3(unnelW)h
+-3(eb.)h
+17(No)h
+14(other)h
+14(actions)h
+14(need)h
+15(b)h
+1(e)h
+15(tak)h
+-1(en.)h
+1114 717(If)s
+12(y)h
+-1(ou)h
+12(mak)h
+-1(e)h
+10(c)h
+-1(hanges)h
+14(to)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(that)h
+295 767(a\013ect)s
+12(its)h
+11(functionalit)h
+-1(y)h
+10(\(e.g.)h
+10(c)h
+-1(hanges)h
+12(to)h
+11(comma)h
+-1(nd)h
+10(line)h
+10(options,)h
+11(the)h
+12(comm)h
+-1(and)h
+9(language,)h
+295 817(or)s
+13(the)h
+14(input)h
+13(language\))h
+13(y)h
+-1(ou)h
+12(should)h
+13(c)h
+-1(hange)h
+14(the)h
+14(name)h
+12(of)h
+12(the)h
+14(program)h
+12(so)h
+13(that)h
+13(the)h
+14(name)h
+295 867(no)s
+15(longer)h
+15(con)h
+-1(tains)h
+16(the)h
+16(w)h
+-1(ord)h
+15(\\F)h
+-3(unnelW)h
+-3(eb",)h
+14(and)h
+15(should)h
+15(c)h
+-1(ho)h
+1(ose)h
+17(alternativ)h
+-1(e)h
+15(input)h
+15(and)h
+295 917(include-\014le)s
+12(\014le)h
+12(extensions)h
+12(\(the)h
+13(curren)h
+-1(t)h
+13(ones)h
+12(are)h
+12(\\)h
+66(")h
+11(and)h
+11(\\)h
+88("\).)h
+16(F)h
+-3(or)h
+12(example,)h
+10(y)h
+-1(ou)h
+295 966(migh)s
+-1(t)h
+10(call)h
+11(y)h
+-1(our)h
+11(program)h
+10(\\BananaW)h
+-3(eb")h
+11(and)h
+11(use)h
+13(the)h
+12(\014le)h
+12(extensions)h
+12(\\)h
+66(")h
+11(and)h
+11(\\)h
+88(".)h
+177 1044(These)s
+15(rules)h
+14(are)h
+14(not)h
+14(v)h
+-1(ery)h
+14(restrictiv)h
+-1(e.)h
+19(Basically)h
+13(y)h
+-1(ou)h
+13(can)h
+14(do)h
+13(what)h
+14(y)h
+-1(ou)h
+13(lik)h
+-1(e)h
+13(so)h
+14(long)h
+12(as)h
+14(y)h
+-1(ou)h
+13(c)h
+-1(hange)h
+14(the)h
+177 1094(name)s
+11(of)h
+11(the)h
+12(resulting)h
+12(program.)h
+16(I)h
+12(do)h
+11(not)h
+12(wish)h
+12(to)h
+12(restrict)h
+13(an)h
+-1(y)h
+-1(one)h
+11(who)h
+12(migh)h
+-1(t)h
+10(w)h
+-1(an)h
+-1(t)h
+11(to)h
+12(use)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+177 1143(as)s
+18(a)h
+18(foundation)h
+17(for)h
+17(a)h
+18(more)h
+17(sophisticated)h
+18(literate)h
+18(programm)h
+-1(ing)h
+16(system.)h
+30(My)h
+17(sole)h
+18(aim)h
+16(here)h
+19(is)h
+18(to)h
+177 1193(protect)s
+15(the)h
+15(in)h
+-1(tegrit)h
+-1(y)h
+13(of)h
+13(what)h
+14(already)h
+14(exists.)h
+177 1483(While)s
+15(it)h
+16(is)h
+15(p)h
+1(ermitted)h
+16(to)h
+15(mo)h
+1(dify)h
+14(the)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(program,)h
+15(no)h
+15(license)h
+17(has)h
+16(b)h
+1(een)h
+16(gran)h
+-1(ted)h
+17(to)h
+15(mo)h
+1(dify)h
+177 1533(its)s
+16(do)h
+1(cumen)h
+-1(tation)h
+15(\()h
+588(and)h
+630(\).)h
+25(The)h
+177 1583(only)s
+12(op)h
+1(eration)h
+13(that)h
+12(can)h
+13(b)h
+1(e)h
+14(p)h
+1(erformed)h
+12(on)h
+12(the)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+12(do)h
+1(cumen)h
+-1(tation)h
+11(is)h
+13(a)h
+12(v)h
+-1(erbatim)h
+11(cop)h
+-1(y)h
+13(in)h
+12(an)h
+-1(y)h
+177 1633(medium)s
+-1(.)h
+177 1710(If)s
+15(y)h
+-1(ou)h
+15(ha)h
+-1(v)h
+-1(e)h
+15(created)h
+17(a)h
+16(mo)h
+1(di\014ed)h
+14(v)h
+-1(ersion)h
+15(of)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(and)h
+15(wish)h
+16(to)h
+15(do)h
+1(cumen)h
+-1(t)h
+15(it,)h
+15(either)h
+16(write)h
+16(y)h
+-1(our)h
+177 1760(o)s
+-1(wn)h
+17(man)h
+-1(ual)h
+15(from)h
+15(scratc)h
+-1(h,)h
+19(or)h
+17(write)h
+17(a)h
+17(man)h
+-1(ual)h
+15(that)h
+17(can)h
+17(b)h
+1(e)h
+18(used)h
+18(in)h
+16(conjunction)h
+18(with)h
+16(the)h
+18(existing)h
+177 1809(man)s
+-1(uals.)h
+177 2099(In)s
+17(order)h
+18(to)h
+17(understand)h
+19(the)h
+18(next)h
+17(section,)h
+19(some)h
+16(understanding)h
+18(of)h
+16(cop)h
+-1(yrigh)h
+-1(t)h
+17(la)h
+-1(w)h
+16(is)h
+17(required.)h
+29(The)h
+177 2149(assertions)s
+15(made)h
+13(in)h
+14(this)h
+15(section)h
+14(are)h
+15(not)h
+14(legal)h
+13(opinions;)h
+13(they)h
+15(are)h
+15(merely)h
+13(appro)h
+-1(ximati)h
+-1(ons)h
+13(of)h
+13(the)h
+15(la)h
+-1(w,)h
+177 2199(based)s
+15(on)h
+13(m)h
+-1(y)h
+13(understanding)h
+14(of)h
+13(it.)h
+177 2276(By)s
+17(default,)h
+17(who)h
+1(ev)h
+-1(er)h
+17(creates)h
+18(a)h
+135(o)h
+-1(wns)h
+229(o)h
+-1(v)h
+-1(er)h
+17(it.)h
+26(This)h
+16(means)h
+16(that)h
+17(b)h
+-1(y)h
+16(default,)h
+17(that)h
+177 2326(p)s
+1(erson)h
+15(is)h
+14(the)h
+14(only)h
+13(p)h
+1(erson)h
+15(in)h
+14(the)h
+14(w)h
+-1(orld)h
+14(who)h
+13(has)h
+14(the)h
+15(legal)h
+13(righ)h
+-1(t)h
+13(to)h
+14(mak)h
+-1(e)h
+12(copies)h
+15(of)h
+13(the)h
+14(w)h
+-1(ork.)h
+177 2403(Cop)s
+-1(yrigh)h
+-1(t)h
+14(o)h
+-1(v)h
+-1(er)h
+15(a)h
+14(w)h
+-1(ork)h
+14(usually)h
+14(co)h
+-1(v)h
+-1(ers)h
+16(all)h
+13(direct)h
+16(deriv)h
+-2(ations)h
+14(of)h
+14(this)h
+15(w)h
+-1(ork.)h
+20(F)h
+-3(or)h
+14(example,)h
+14(if)h
+13(someone)h
+177 2453(o)s
+-1(wns)h
+12(the)h
+13(source)h
+14(co)h
+1(de)h
+13(to)h
+12(a)h
+11(computer)h
+12(program)h
+11(then)h
+13(they)h
+12(also)h
+12(o)h
+-1(wn)h
+12(an)h
+-1(y)h
+11(direct)h
+13(deriv)h
+-2(ations)h
+12(suc)h
+-1(h)h
+13(as)h
+12(the)h
+177 2503(binary)s
+14(executable.)h
+177 2580(More)s
+16(than)h
+16(one)h
+15(p)h
+1(erson)h
+17(ma)h
+-1(y)h
+13(o)h
+-1(wn)h
+15(cop)h
+-1(yrigh)h
+-1(t)h
+15(o)h
+-1(v)h
+-1(er)h
+16(a)h
+15(w)h
+-1(ork.)h
+23(If)h
+15(this)h
+15(is)h
+16(the)h
+16(case,)h
+16(then)h
+16(the)h
+16(w)h
+-1(ork)h
+16(cannot)h
+177 2630(b)s
+1(e)h
+15(copied)h
+14(without)h
+13(the)h
+15(p)h
+1(ermission)h
+13(of)h
+13(all)h
+13(of)h
+13(the)h
+14(p)h
+1(eople)h
+15(o)h
+-1(wning)h
+13(the)h
+14(cop)h
+-1(yrigh)h
+-1(t.)h
+177 2708(A)s
+18(p)h
+1(erson)h
+18(\(or)h
+17(group\))h
+17(o)h
+-1(wning)h
+17(cop)h
+-1(yrigh)h
+-1(t)h
+16(o)h
+-1(v)h
+-1(er)h
+18(a)h
+17(w)h
+-1(ork)h
+17(can)h
+171(the)h
+18(righ)h
+-1(t)h
+17(to)h
+17(mak)h
+-1(e)h
+16(copies)h
+18(of)h
+16(the)h
+177 2757(w)s
+-1(ork)h
+14(to)h
+13(an)h
+-1(y)h
+-1(one)h
+14(he)h
+14(lik)h
+-1(es)h
+14(under)h
+15(an)h
+-1(y)h
+13(conditions)h
+14(he)h
+14(lik)h
+-1(es.)h
+177 2835(If)s
+14(a)h
+13(w)h
+-1(ork)h
+14(is)h
+14(mo)h
+1(di\014ed,)h
+12(the)h
+14(result)h
+15(is)h
+14(called)h
+13(a)h
+285(.)h
+1042 2940(38)s
+39 @eop
+40 @bop0
+cmmi10.300 sf
+[<00000C0000000C0000001C0000001C0000003C0000007C0000005C0000009C0000008E
+0000010E0000010E0000020E0000040E0000040E0000080E0000080E0000100E0000200E
+00003FFE0000400700004007000080070001000700010007000200070002000700060007
+001E000700FF807FF0>
+32 29 -1 28 31] 65 dc
+[<01FFFF00003C01C0003800E0003800F0003800700038007000700070007000F0007000
+F0007001E000E003C000E0078000E01F0000FFFC0001C00F0001C0078001C003C001C003
+C0038003C0038003C0038003C0038003C0070007800700070007000E0007001C000E0078
+00FFFFC000>
+32 28 -2 27 31] 66 dc
+[<01FFC0FF80001E003C00001E003000000E002000000F00400000070080000007010000
+000782000000038400000003C800000001D000000001F000000000E000000000E0000000
+00F00000000170000000027000000004380000000838000000103C000000201C00000040
+1E000000800E000001800E000003000F000006000700001E000F8000FF803FF000>
+40 28 -1 27 34] 88 dc
+[<FFE007F80F0001E00F0001800700010007000200078004000380080003C0100001C030
+0001C0200001E0400000E0800000F100000072000000760000007C000000380000003800
+000070000000700000007000000070000000E0000000E0000000E0000000E0000001C000
+001FFC0000>
+32 28 -1 27 24] 89 dc
+cmbx10.432 sf
+[<0000FFE000000007FFFC0000003FC07F8000007F001FC00001FC0007F00003F80003F8
+0007F00001FC000FF00001FE001FE00000FF001FE00000FF003FC000007F803FC000007F
+807FC000007FC07F8000003FC07F8000003FC07F8000003FC0FF8000003FE0FF8000003F
+E0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003F
+E0FF8000003FE0FF8000003FE07F8000003FC07FC000007FC07FC000007FC03FC000007F
+803FC000007F801FE00000FF001FE00000FF000FF00001FE0007F00001FC0003F80003F8
+0001FC0007F00000FF001FE000003FC07F8000000FFFFE00000000FFE00000>
+48 41 -4 40 52] 79 dc
+[<0001FF803FE000001FFFE3FFF800007F80FFF01E0000FE007FC01F0003FC01FF803F80
+03F801FF007F8007F001FE007F8007F001FE007F8007F001FE007F8007F001FE003F0007
+F000FE001E0007F000FE00000007F000FE00000007F000FE00000007F000FE000000FFFF
+FFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF8007F000FE003F8007F000FE003F8007F000
+FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE
+003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE00
+3F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F
+8007F000FE003F8007F000FE003F8007F000FE003F807FFF0FFFE3FFF87FFF0FFFE3FFF8
+7FFF0FFFE3FFF8>
+56 42 -1 41 57] 14 dc
+40 @bop1
+cmsy10.300 sf
+239 1732(\017)s
+239 1958(\017)s
+cmbx10.300 sf
+590 2767(Figure)s
+14(1)h
+cmmi10.300 sf
+820 42(A)s
+495(B)h
+503 91(A)s
+94(B)h
+1024 676(X)s
+614(X)h
+131(Y)h
+343 775(X)s
+1538(Y)h
+1076 825(X)s
+cmti10.300 sf
+591 309(their)s
+857 508(them)s
+1343 1590(my)s
+cmbx10.432 sf
+177 1363(3.7)s
+70(Managemen)h
+-2(t)h
+21(of)h
+23(the)h
+22(O\016cial)h
+21(F)h
+-6(unnelW)h
+-6(eb)h
+cmr10.300 sf
+177 42(If)s
+13(cop)h
+-1(yrigh)h
+-1(t)h
+13(on)h
+14(a)h
+13(w)h
+-1(ork)h
+13(is)h
+13(o)h
+-1(wned)h
+14(b)h
+-1(y)h
+58(is)h
+13(the)h
+14(w)h
+-1(ork)h
+13(is)h
+14(mo)h
+1(di\014ed)h
+12(b)h
+-1(y)h
+46(,)h
+14(cop)h
+-1(yrigh)h
+-1(t)h
+13(on)h
+13(the)h
+14(deriv)h
+-1(ed)h
+14(w)h
+-1(ork)h
+177 91(is)s
+14(o)h
+-1(wned)h
+14(b)h
+-1(y)h
+14(b)h
+1(oth)h
+59(and)h
+46(.)h
+177 159(Cop)s
+-1(yrigh)h
+-1(t)h
+16(is)h
+16(not)h
+16(o)h
+-1(wnership)h
+17(o)h
+-1(v)h
+-1(er)h
+16(particular)h
+16(con\014gurations)h
+17(of)h
+16(inform)h
+-1(ation,)h
+14(but)h
+17(rather)h
+17(is)h
+16(the)h
+17(righ)h
+-1(t)h
+177 209(to)s
+14(restrict)h
+16(the)h
+15(cop)h
+-1(ying)h
+13(of)h
+14(informati)h
+-1(on)h
+12(deriv)h
+-1(ed)h
+15(from)h
+12(particular)h
+14(sources.)h
+21(F)h
+-3(or)h
+14(example,)h
+12(if)h
+14(t)h
+-1(w)h
+-1(o)h
+13(p)h
+1(eople)h
+177 259(p)s
+1(oin)h
+-1(t)h
+17(their)h
+17(cameras)h
+17(out)h
+17(a)h
+17(windo)h
+-1(w)h
+16(and)h
+17(tak)h
+-1(e)h
+17(iden)h
+-1(tical)h
+16(photographs,)h
+18(eac)h
+-1(h)h
+17(p)h
+1(erson)h
+18(has)h
+18(the)h
+17(righ)h
+-1(t)h
+17(to)h
+177 309(restrict)s
+15(the)h
+15(cop)h
+-1(ying)h
+13(of)h
+111(photograph)h
+14(regardless)h
+15(of)h
+13(the)h
+14(fact)h
+14(that)h
+14(the)h
+14(other)h
+14(p)h
+1(erson)h
+15(has)h
+14(cop)h
+-1(yrigh)h
+-1(t)h
+177 359(o)s
+-1(v)h
+-1(er)h
+15(an)h
+14(iden)h
+-1(tical)h
+14(photograph.)h
+20(In)h
+14(the)h
+15(unlik)h
+-1(ely)h
+14(ev)h
+-1(en)h
+-1(t)h
+15(that)h
+14(t)h
+-1(w)h
+-1(o)h
+14(p)h
+1(eople)h
+15(wrote)h
+15(no)h
+-1(v)h
+-1(els)h
+15(that)h
+14(w)h
+-1(ere)h
+16(letter)h
+177 408(for)s
+13(letter)h
+14(iden)h
+-1(tical)h
+13(and)h
+13(it)h
+13(could)h
+13(b)h
+1(e)h
+14(pro)h
+-1(v)h
+-1(en)h
+14(that)h
+13(there)h
+15(w)h
+-1(as)h
+13(no)h
+13(con)h
+-1(tact)h
+14(b)h
+1(et)h
+-1(w)h
+-1(een)h
+15(the)h
+14(t)h
+-1(w)h
+-1(o)h
+13(p)h
+1(eople)h
+13(when)h
+177 458(they)s
+11(wrote)h
+12(the)h
+11(no)h
+-1(v)h
+-1(els,)h
+11(then)h
+11(cop)h
+-1(yrigh)h
+-1(t)h
+11(la)h
+-1(w)h
+10(w)h
+-1(ould)h
+10(eac)h
+-1(h)h
+11(protect)h
+12(the)h
+11(righ)h
+-1(t)h
+11(of)h
+10(eac)h
+-1(h)h
+11(p)h
+1(erson)h
+12(to)h
+11(restrict)h
+12(the)h
+177 508(cop)s
+-1(ying)h
+12(of)h
+13(the)h
+13(no)h
+-1(v)h
+-1(el)h
+12(originating)h
+11(from)h
+99(.)h
+18(In)h
+13(practice,)h
+13(the)h
+14(probabilit)h
+-1(y)h
+11(of)h
+12(suc)h
+-1(h)h
+14(an)h
+13(ev)h
+-1(en)h
+-1(t)h
+13(o)h
+1(ccurring)h
+177 558(is)s
+15(so)h
+16(lo)h
+-1(w)h
+14(that)h
+15(the)h
+16(la)h
+-1(w)h
+15(assumes)h
+15(that)h
+15(if)h
+15(t)h
+-1(w)h
+-1(o)h
+14(w)h
+-1(orks)h
+16(are)h
+15(close)h
+16(or)h
+15(iden)h
+-1(tical,)h
+15(that)h
+15(there)h
+17(has)h
+15(b)h
+1(een)h
+17(some)h
+177 608(informati)s
+-1(on)h
+12(in)h
+-1(terc)h
+-1(hange)h
+15(at)h
+13(some)h
+13(p)h
+1(oin)h
+-1(t.)h
+177 676(Th)s
+-1(us,)h
+12(if)h
+11(I)h
+12(o)h
+-1(wn)h
+12(cop)h
+-1(yrigh)h
+-1(t)h
+11(on)h
+12(computer)h
+11(program)h
+48(,)h
+12(and)h
+12(I)h
+11(create)h
+14(an)h
+11(iden)h
+-1(tical)h
+12(cop)h
+-1(y)h
+11(of)h
+61(called)h
+57(and)h
+177 726(distribute)s
+17(it)h
+16(under)h
+17(the)h
+16(terms)h
+16(of)h
+16(a)h
+16(license)h
+17(agreemen)h
+-1(t,)h
+16(then)h
+16(that)h
+17(license)h
+17(agreemen)h
+-1(t)h
+15(do)h
+1(es)h
+17(not)h
+16(co)h
+-1(v)h
+-1(er)h
+177 775(the)s
+14(cop)h
+-1(y)h
+49(.)h
+19(Once)h
+14(the)h
+13(license)h
+14(agreemen)h
+-1(t)h
+12(is)h
+13(signed,)h
+13(there)h
+14(is)h
+13(nothing)h
+12(I)h
+13(can)h
+13(do)h
+12(to)h
+13(undo)h
+13(the)h
+13(license;)h
+177 825(has)s
+14(gone.)h
+18(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(I)h
+14(still)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(total)h
+13(con)h
+-1(trol)h
+13(o)h
+-1(v)h
+-1(er)h
+51(.)h
+177 893(V)s
+-3(ersion)h
+14(2)h
+14(of)h
+13(the)h
+14(GNU)h
+14(General)h
+14(Public)h
+14(License)h
+15(\(under)h
+15(whic)h
+-1(h)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(is)h
+13(released\))h
+16(sp)h
+1(eci\014es)h
+16(\(in)h
+13(a)h
+177 943(n)s
+-1(utshell\))h
+11(that)h
+12(soft)h
+-1(w)h
+-1(are)h
+11(can)h
+11(b)h
+1(e)h
+12(copied)h
+11(freely)h
+11(so)h
+12(long)h
+10(as)h
+11(it)h
+11(is)h
+11(not)h
+11(sold,)h
+10(and)h
+11(that)h
+11(it)h
+11(can)h
+12(b)h
+1(e)h
+11(mo)h
+1(di\014ed)h
+10(and)h
+177 993(copied)s
+15(freely)h
+16(so)h
+15(long)h
+14(as)h
+15(the)h
+16(mo)h
+1(di\014cations)h
+13(are)h
+15(logged)h
+15(and)h
+15(it)h
+14(is)h
+15(not)h
+15(sold.)h
+21(In)h
+15(b)h
+1(oth)h
+16(cases,)h
+16(it)h
+15(requires)h
+177 1043(that)s
+16(the)h
+17(result)h
+17(of)h
+15(the)h
+17(cop)h
+-1(y)h
+16(or)h
+16(mo)h
+1(di\014catio)h
+-1(n)h
+15(op)h
+1(eration)h
+15(b)h
+1(e)h
+17(copied)h
+16(only)h
+16(under)h
+16(the)h
+17(conditions)h
+16(of)h
+15(the)h
+177 1092(license.)s
+177 1160(Once)s
+15(a)h
+13(declaration)h
+13(is)h
+13(issued)h
+14(licensing)h
+13(a)h
+13(cop)h
+-1(y)h
+13(of)h
+13(a)h
+13(program)h
+11(under)h
+14(GNU)h
+13(license,)h
+14(that)h
+14(license)h
+14(cannot)h
+177 1210(b)s
+1(e)h
+15(retracted.)h
+177 1472(I)s
+14(in)h
+-1(tend)h
+13(to)h
+14(main)h
+-1(tai)h
+-1(n)h
+12(an)h
+13(o\016cial)h
+12(cop)h
+-1(y)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(and)h
+13(release)h
+15(it)h
+14(under)h
+14(GNU)h
+13(license)h
+15(from)h
+12(time)h
+12(to)h
+177 1522(time)s
+13(so)h
+14(that)h
+14(ev)h
+-1(ery)h
+-1(one)h
+14(can)h
+15(use)h
+14(it.)h
+18(Unfortunately)h
+14(its)h
+14(going)h
+12(to)h
+14(b)h
+1(e)h
+14(a)h
+14(little)h
+13(messy)h
+-3(.)h
+177 1590(F)s
+-3(or)h
+16(a)h
+17(v)h
+-2(ariet)h
+-1(y)h
+16(of)h
+15(reasons,)h
+18(I)h
+17(w)h
+-1(an)h
+-1(t)h
+16(to)h
+16(main)h
+-1(tai)h
+-1(n)h
+15(total)h
+16(con)h
+-1(trol)h
+16(o)h
+-1(v)h
+-1(er)h
+87(cop)h
+-1(y)h
+17(of)h
+15(the)h
+18(o\016cial)h
+15(v)h
+-1(ersion)h
+16(of)h
+177 1640(F)s
+-3(unnelW)h
+-3(eb.)h
+18(Some)h
+12(of)h
+14(the)h
+14(reasons)h
+15(are:)h
+281 1732(If)s
+15(it)h
+16(turns)h
+17(out)h
+16(that)h
+16(there)h
+17(is)h
+15(an)h
+16(enormous)h
+15(demand)h
+15(for)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(\(unlik)h
+-1(ely\))h
+15(then)h
+17(I)h
+15(w)h
+-1(an)h
+-1(t)h
+16(to)h
+281 1782(b)s
+1(e)h
+14(able)h
+12(to)h
+13(create)h
+15(a)h
+12(business)h
+15(based)h
+13(on)h
+13(it,)h
+12(or)h
+13(at)h
+13(least)h
+14(b)h
+1(e)h
+13(able)h
+13(to)h
+13(bundle)h
+13(it)h
+13(with)h
+12(other)h
+14(pro)h
+1(ducts.)h
+281 1832(This)s
+14(w)h
+-1(ould)h
+14(b)h
+1(e)h
+16(di\016cult)h
+14(if)h
+13(the)h
+16(only)h
+13(up-to-date)h
+15(cop)h
+-1(y)h
+15(a)h
+-1(v)h
+-2(ailabl)h
+-1(e)h
+13(w)h
+-1(as)h
+15(a)h
+14(GNU)h
+15(cop)h
+-1(y)h
+-3(.)h
+19(Note:)h
+20(If)h
+15(this)h
+281 1882(happ)s
+1(ens,)h
+14(all)h
+13(the)h
+14(GNU)h
+14(releases)h
+16(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(will)h
+13(remain)h
+12(v)h
+-2(alid.)h
+281 1958(I)s
+18(w)h
+-1(an)h
+-1(t)h
+18(to)h
+18(b)h
+1(e)h
+19(able)h
+18(to)h
+18(cop)h
+-1(y)h
+18(co)h
+1(de)h
+19(from)h
+16(m)h
+-1(y)h
+17(v)h
+-1(ersion)h
+18(of)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(in)h
+-1(to)h
+18(comm)h
+-1(ercial)h
+16(pro)h
+1(ducts)h
+281 2008(without)s
+13(ha)h
+-1(ving)h
+13(to)h
+14(w)h
+-1(orry)h
+14(ab)h
+1(out)h
+14(the)h
+14(GNU)h
+14(license.)h
+177 2101(The)s
+16(trouble)h
+15(is)h
+16(that)h
+15(\(in)h
+15(m)h
+-1(y)h
+14(understanding)h
+15(of)h
+15(cop)h
+-1(yrigh)h
+-1(t)h
+15(la)h
+-1(w\),)h
+14(once)h
+16(a)h
+15(cop)h
+-1(y)h
+16(of)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+15(has)h
+16(b)h
+1(een)h
+177 2151(released)s
+18(under)h
+18(GNU)h
+17(license,)h
+17(then)h
+18(it)h
+16(and)h
+17(an)h
+-1(y)h
+16(w)h
+-1(orks)h
+17(deriv)h
+-1(ed)h
+18(from)h
+15(it)h
+16(fall)h
+16(under)h
+17(GNU)h
+17(license)h
+17(to)h
+1(o.)h
+177 2200(This)s
+13(means)h
+13(that)h
+13(if)h
+13(y)h
+-1(ou)h
+13(mo)h
+1(dif)h
+-1(y)h
+12(a)h
+13(GNU)h
+13(release)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(and)h
+13(send)h
+14(me)h
+13(y)h
+-1(our)h
+13(mo)h
+1(di\014cations,)h
+11(and)h
+177 2250(I)s
+18(incorp)h
+1(orate)h
+19(them)h
+17(in)h
+-1(to)h
+18(m)h
+-1(y)h
+16(v)h
+-1(ersion,)h
+19(then)h
+19(I)h
+18(no)h
+18(longer)h
+17(o)h
+-1(wn)h
+18(cop)h
+-1(yrigh)h
+-1(t)h
+18(on)h
+18(the)h
+18(v)h
+-1(ersion)h
+19(I)h
+18(mo)h
+1(di\014ed.)h
+177 2300(Basically)s
+-3(,)h
+12(if)h
+13(GNU)h
+14(touc)h
+-1(hes)h
+15(a)h
+14(w)h
+-1(ork,)h
+13(then)h
+14(that)h
+14(cop)h
+-1(y)h
+14(is)h
+14(gone)h
+14(forev)h
+-1(er.)h
+177 2368(My)s
+18(solution)h
+16(to)h
+18(the)h
+18(problem)h
+16(is)h
+17(to)h
+17(k)h
+-1(eep)h
+19(a)h
+17(cop)h
+-1(y)h
+17(of)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+17(that)h
+18(is)h
+17(GNU-clean)h
+17(and)h
+18(only)h
+16(mak)h
+-1(e)h
+177 2418(mo)s
+1(di\014cations)h
+9(to)h
+10(it)h
+11(that)h
+10(are)h
+11(GNU-clean.)h
+17(So)h
+11(long)h
+9(as)h
+11(m)h
+-1(y)h
+9(o\016cial)h
+9(cop)h
+-1(y)h
+11(is)h
+10(GNU)h
+10(clean,)h
+11(an)h
+-1(y)h
+11(mo)h
+1(di\014catio)h
+-1(ns)h
+177 2468(that)s
+14(I)h
+14(mak)h
+-1(e)h
+12(m)h
+-1(yself)h
+12(will)h
+13(b)h
+1(e)h
+14(GNU)h
+14(clean.)h
+18(The)h
+14(problem)h
+12(comes)h
+14(when)h
+14(someone)h
+13(else)h
+15(mo)h
+1(di\014es)h
+13(the)h
+14(GNU)h
+177 2518(v)s
+-1(ersion)h
+10(and)h
+9(then)h
+10(w)h
+-1(an)h
+-1(ts)h
+10(me)h
+8(to)h
+10(incorp)h
+1(orate)h
+10(the)h
+10(mo)h
+1(di\014cations)h
+8(in)h
+-1(to)h
+8(m)h
+-1(y)h
+8(o\016cial)h
+8(v)h
+-1(ersion.)h
+17(As)h
+10(I)h
+10(understand)h
+177 2567(the)s
+11(la)h
+-1(w,)h
+10(b)h
+-1(y)h
+10(default,)h
+10(the)h
+11(programm)h
+-1(er)h
+9(o)h
+-1(wns)h
+11(the)h
+11(mo)h
+1(di\014catio)h
+-1(ns)h
+9(\(b)h
+1(ecause)h
+12(he)h
+11(made)h
+9(them\),)h
+10(but)h
+11(the)h
+11(result)h
+177 2617(of)s
+12(making)h
+10(the)h
+13(mo)h
+1(di\014cations)h
+10(falls)h
+12(under)h
+13(GNU)h
+12(license.)h
+18(What)h
+12(I)h
+12(prop)h
+1(ose)h
+14(is)h
+12(that)h
+12(those)h
+13(who)h
+12(w)h
+-1(an)h
+-1(t)h
+12(their)h
+177 2667(mo)s
+1(di\014cations)h
+12(included)h
+14(in)h
+14(the)h
+14(o\016cial)h
+13(cop)h
+-1(y)h
+13(of)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(sign)h
+14(an)h
+13(agreemen)h
+-1(t)h
+14(transferring)h
+14(cop)h
+-1(yrigh)h
+-1(t)h
+177 2717(of)s
+13(the)h
+13(mo)h
+1(di\014cations)h
+12(o)h
+-1(v)h
+-1(er)h
+13(to)h
+13(me)h
+12(on)h
+13(condition)h
+12(that)h
+13(the)h
+14(result)h
+14(b)h
+1(e)h
+13(released)h
+15(under)h
+14(GNU)h
+13(license)h
+14(within)h
+177 2767(a)s
+14(certain)h
+14(time)h
+13(p)h
+1(erio)h
+1(d.)h
+207(demonstrates)h
+14(the)h
+15(pro)h
+1(cess.)h
+177 2835(There)s
+15(are)h
+15(t)h
+-1(w)h
+-1(o)h
+13(main)h
+12(disadv)h
+-2(an)h
+-1(tages)h
+13(to)h
+14(this)h
+14(sc)h
+-1(heme:)h
+1042 2940(39)s
+40 @eop
+41 @bop0
+cmr8.300 sf
+[<00FC000303000E01C01C00E0380070300030700038600018E0001CE0001CE0001CE000
+1CE0001CE0001CE0001C7000387000383000303800701C00E00E01C003030000FC00>
+24 23 -2 22 27] 79 dc
+[<007E080381980600580C0038180018300018700008700008E00008E00000E00000E000
+00E00000E003FEE000387000387000383000381800380C00380600380380D8007F08>
+24 23 -2 22 28] 71 dc
+[<FC00FE1E00381F001017001013801011C01011C01010E010107010103810103810101C
+10100E10100F101007101003901001D01001D01000F0100070100030380030FE0010>
+24 23 -1 22 26] 78 dc
+[<FF80FE1C00381C00101C00101C00101C00101C00101C00101C00101C00101C00101C00
+101C00101C00101C00101C00101C00101C00100E0020060020030040018180007E00>
+24 23 -1 22 26] 85 dc
+[<FF83FE1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701FFF
+F01C00701C00701C00701C00701C00701C00701C00701C00701C00701C0070FF83FE>
+24 23 -1 22 26] 72 dc
+[<0F9E18E33060707070707070306018C02F80200060003FE03FF83FFC600EC006C006C0
+06600C38380FE0>
+16 21 -1 13 18] 103 dc
+[<07C2001C2600381E00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E
+001C2E0007CE00000E00000E00000E00000E00000E00007FC0>
+24 20 -1 13 19] 113 dc
+[<FFFFE01C00E01C00601C00201C00101C00101C00101C04001C04001C04001C0C001FFC
+001C0C001C04001C04001C04001C00001C00001C00001C00001C00001C0000FFC000>
+24 23 -1 22 23] 70 dc
+[<FF07FC3F803C01E00E001C00E004001C00E004001C017004000E017008000E01700800
+0E023808000702381000070238100007041C100003841C200003841C200003880E200001
+C80E400001C80E400001D80F400000F007800000F007800000F007800000600300000060
+0300000060030000>
+40 23 -1 22 36] 87 dc
+[<00FCF807839C0E079C1C07081C07001C07001C07001C07001C0700FFFFE01C07001C07
+001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF1FE0>
+24 23 0 22 21] 11 dc
+41 @bop1
+cmsy10.300 sf
+239 1988(\017)s
+239 2115(\017)s
+239 2341(\017)s
+cmbx10.300 sf
+453 1320(Figure)s
+14(1)h
+cmr8.300 sf
+343 1079(Once)s
+13(a)h
+12(w)h
+-1(ork)h
+13(is)h
+13(released)h
+11(under)h
+11(GNU)h
+13(license,)h
+12(all)h
+12(deriv)h
+-1(ed)h
+11(w)h
+-1(orks)h
+12(fall)h
+12(under)h
+12(GNU)h
+13(license.)h
+18(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+281 1129(this)s
+9(diagram)h
+8(sho)h
+-1(ws)h
+10(ho)h
+-1(w)h
+10(cop)h
+-1(yrigh)h
+-2(t)h
+8(can)h
+9(b)h
+1(e)h
+10(main)h
+-1(tain)h
+-1(ed)h
+8(o)h
+-1(v)h
+-1(er)h
+9(a)h
+10(w)h
+-1(ork,)h
+10(while)h
+9(still)h
+9(making)h
+8(it)h
+10(a)h
+-1(v)h
+-2(ailable)h
+8(under)h
+281 1179(GNU)s
+14(license.)h
+19(Unfortunatel)h
+-1(y)h
+-3(,)h
+12(this)h
+13(sc)h
+-1(heme)h
+11(requires)h
+12(that)h
+12(cop)h
+-1(yrigh)h
+-2(t)h
+12(on)h
+13(mo)h
+1(di\014c)h
+-1(ati)h
+-1(ons)h
+11(to)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(b)h
+1(e)h
+281 1229(signed)s
+10(o\013)h
+11(b)h
+-1(y)h
+11(the)h
+11(p)h
+1(eople)h
+9(who)h
+12(mak)h
+-1(e)h
+10(the)h
+11(mo)h
+1(di\014ca)h
+-1(tio)h
+-1(ns.)h
+cmtt10.300 sf
+221 91(+----------)s
+-1(>----)h
+-1(-----)h
+-1(-+---)h
+-1(-----)h
+-1(-----)h
+-1(-<--)h
+-1(-----)h
+-1(-----)h
+-1(-+)h
+221 141(|\(modificat)s
+-1(ions)h
+19(by)h
+87(|)h
+610(|)h
+221 191(|)s
+21(me\))h
+370(V)h
+610(|)h
+221 241(|)s
+109(+---------)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(----)h
+-1(-+)h
+194(|)h
+221 291(+--<--|)s
+42(My)h
+21(Official)h
+20(Copy)h
+21(of)h
+22(FunnelWeb)h
+63(|)h
+196(|)h
+352 340(|)s
+65(Copyright)h
+20(\(C\))h
+21(Ross)h
+21(Williams)h
+85(|)h
+196(|)h
+352 390(+---------)s
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(----)h
+-1(-+)h
+194(|)h
+700 440(|)s
+22(\(Periodic)h
+20(releases\))h
+150(/)h
+22(\\)h
+700 490(V)s
+567(/)h
+65(\\)h
+43(Programmers)h
+482 540(+-------------)s
+-1(-----)h
+-1(+)h
+347(/Legal\\)h
+20(sign)h
+21(away)h
+482 589(|)s
+22(GNU)h
+21(Release)h
+20(Copy)h
+21(|)h
+349(\\Filte/)h
+20(copyright)h
+20(on)h
+482 639(+-------------)s
+-1(-----)h
+-1(+)h
+369(\\)h
+21(r)h
+22(/)h
+43(modifications)h
+700 689(|)s
+588(\\)h
+22(/)h
+700 739(|)s
+22(\(Modificatio)h
+-1(ns)h
+20(made)h
+21(by)h
+108(|)h
+700 789(V)s
+44(random)h
+20(programmers\))h
+19(--->--+)h
+460 839(+--------------)s
+-1(-----)h
+-1(----+)h
+460 888(|)s
+22(Modified)h
+20(GNU)h
+21(Version)h
+43(|)h
+460 938(+--------------)s
+-1(-----)h
+-1(----+)h
+cmr10.300 sf
+628 1320(:)s
+18(Ho)h
+-1(w)h
+13(I)h
+14(am)h
+12(going)h
+13(to)h
+14(main)h
+-1(ta)h
+-1(in)h
+12(cop)h
+-1(yrigh)h
+-1(t)h
+13(o)h
+-1(v)h
+-1(er)h
+14(F)h
+-3(unnelW)h
+-3(eb.)h
+228 1453(1.)s
+20(Getting)h
+15(eac)h
+-1(h)h
+17(p)h
+1(erson)h
+17(who)h
+15(con)h
+-1(tributes)h
+17(mo)h
+1(di\014cations)h
+14(to)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+16(to)h
+15(sign)h
+16(and)h
+16(send)h
+16(a)h
+16(piece)h
+281 1503(of)s
+13(pap)h
+1(er)h
+15(signing)h
+13(a)h
+-1(w)h
+-1(a)h
+-1(y)h
+12(cop)h
+-1(yrigh)h
+-1(t)h
+14(will)h
+12(b)h
+1(e)h
+15(tedious.)h
+228 1580(2.)s
+20(Programm)h
+-1(ers)h
+15(ma)h
+-1(y)h
+14(b)h
+1(e)h
+17(reluctan)h
+-1(t)h
+16(to)h
+16(sign)h
+16(a)h
+-1(w)h
+-1(a)h
+-1(y)h
+14(cop)h
+-1(yrigh)h
+-1(t)h
+16(on)h
+16(mo)h
+1(di\014catio)h
+-1(ns)h
+15(b)h
+1(ecause)h
+17(the)h
+17(result)h
+281 1630(could)s
+15(b)h
+1(e)h
+16(used)h
+16(b)h
+-1(y)h
+15(me)h
+14(for)h
+15(comm)h
+-1(ercial)h
+13(purp)h
+1(oses)h
+17(b)h
+-1(y)h
+15(me)h
+14(at)h
+15(a)h
+15(later)h
+16(date)h
+15(\(Note:)h
+21(But)h
+16(it)h
+15(m)h
+-1(ust)h
+14(b)h
+1(e)h
+281 1679(released)s
+15(under)h
+15(GNU)h
+14(as)h
+13(w)h
+-1(ell\).)h
+177 1774(These)s
+18(disadv)h
+-2(an)h
+-1(tages)h
+15(are)h
+17(regrettable)h
+17(consequences)h
+19(of)h
+15(m)h
+-1(y)h
+15(decision)h
+16(to)h
+16(retain)h
+16(total)h
+15(con)h
+-1(trol)h
+16(o)h
+-1(v)h
+-1(er)h
+16(the)h
+177 1824(\\o\016cial")s
+12(v)h
+-1(ersion)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb.)h
+177 1893(The)s
+14(upshot)h
+15(of)h
+13(all)h
+13(this)h
+14(is)h
+13(that:)h
+281 1988(I)s
+12(will)h
+10(nev)h
+-1(er)h
+12(allo)h
+-1(w)h
+11(an)h
+-1(y)h
+11(co)h
+1(de)h
+12(from)h
+10(a)h
+12(GNU)h
+11(release)h
+13(of)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+11(to)h
+12(touc)h
+-1(h)h
+12(m)h
+-1(y)h
+10(o\016cial)h
+10(cop)h
+-1(y)h
+-3(.)h
+17(Only)h
+281 2038(mo)s
+1(di\014cations)h
+12(will)h
+12(b)h
+1(e)h
+15(acceptable.)h
+281 2115(If)s
+19(y)h
+-1(ou)h
+19(mak)h
+-1(e)h
+18(a)h
+19(mo)h
+1(di\014cation)h
+17(to)h
+20(F)h
+-3(unnelW)h
+-3(eb)h
+19(and)h
+19(send)h
+20(it)h
+19(to)h
+20(me)h
+18(for)h
+19(inclusion)h
+19(in)h
+19(the)h
+20(o\016cial)h
+281 2165(v)s
+-1(ersion,)h
+17(I)h
+16(will)h
+16(not)h
+16(incorp)h
+1(orate)h
+17(y)h
+-1(our)h
+17(mo)h
+1(di\014cation)h
+14(un)h
+-1(til)h
+16(I)h
+17(ha)h
+-1(v)h
+-1(e)h
+16(receiv)h
+-1(ed)h
+18(a)h
+16(signed)h
+17(declaration)h
+281 2214(transferring)s
+11(cop)h
+-1(yrigh)h
+-1(t.)h
+17(I)h
+11(will)h
+9(prepare)h
+13(suc)h
+-1(h)h
+11(a)h
+11(con)h
+-1(tract)h
+12(when)h
+11(the)h
+12(\014rst)h
+11(p)h
+1(erson)h
+12(sends)h
+12(me)h
+10(a)h
+11(w)h
+-1(orth)h
+-1(y)h
+281 2264(mo)s
+1(di\014cation!)h
+281 2341(If)s
+12(y)h
+-1(ou)h
+12(in)h
+-1(tend)h
+13(to)h
+12(mak)h
+-1(e)h
+11(c)h
+-1(hanges)h
+13(to)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(that)h
+12(are)h
+13(so)h
+13(massiv)h
+-1(e)h
+11(that)h
+13(they)h
+13(will)h
+11(in)h
+-1(v)h
+-1(olv)h
+-1(e)h
+11(wide-)h
+281 2391(scale)s
+13(mo)h
+1(di\014cation)h
+11(of)h
+12(the)h
+14(source)h
+14(\014les,)h
+13(and)h
+13(y)h
+-1(ou)h
+12(w)h
+-1(an)h
+-1(t)h
+13(the)h
+13(mo)h
+1(di\014cation)h
+11(to)h
+13(b)h
+1(e)h
+13(part)h
+13(of)h
+13(the)h
+13(o\016cial)h
+281 2441(v)s
+-1(ersion,)h
+16(it)h
+16(migh)h
+-1(t)h
+14(b)h
+1(e)h
+17(a)h
+16(go)h
+1(o)h
+1(d)h
+15(idea)h
+16(to)h
+16(con)h
+-1(tact)h
+17(me)h
+15(b)h
+1(efore)h
+17(doing)h
+15(so.)h
+25(There)h
+17(are)h
+16(t)h
+-1(w)h
+-1(o)h
+16(reasons)h
+17(for)h
+281 2491(doing)s
+11(this.)h
+18(First,)h
+12(it)h
+12(allo)h
+-1(ws)h
+11(me)h
+12(a)h
+12(c)h
+-1(hance)h
+13(to)h
+12(commen)h
+-1(t)h
+10(on)h
+12(y)h
+-1(our)h
+13(prop)h
+1(osed)h
+13(mo)h
+1(di\014catio)h
+-1(ns)h
+11(and)h
+12(giv)h
+-1(e)h
+281 2540(m)s
+-1(y)h
+14(opinion)h
+14(on)h
+16(whether)h
+17(they)h
+16(are)h
+16(lik)h
+-1(ely)h
+14(to)h
+16(b)h
+1(e)h
+16(incorp)h
+1(orated)h
+16(in)h
+-1(to)h
+15(the)h
+17(o\016cial)h
+14(v)h
+-1(ersion.)h
+23(Second,)h
+281 2590(I)s
+16(can)h
+15(send)h
+17(y)h
+-1(ou)h
+15(a)h
+15(cop)h
+-1(y)h
+16(\(under)h
+17(sp)h
+1(ecial)h
+15(license\))h
+17(of)h
+15(the)h
+16(GNU-clean)h
+16(o\016cial)h
+14(v)h
+-1(ersion)h
+16(to)h
+15(w)h
+-1(ork)h
+15(on.)h
+281 2640(This)s
+14(will)h
+12(allo)h
+-1(w)h
+12(y)h
+-1(ou)h
+14(to)h
+14(ship)h
+13(bac)h
+-1(k)h
+14(y)h
+-1(our)h
+14(c)h
+-1(hanges)h
+15(as)h
+13(\014les)h
+15(rather)h
+14(than)h
+14(as)h
+14(c)h
+-1(hange)h
+15(sections.)h
+177 2735(As)s
+16(a)h
+16(separate)h
+17(p)h
+1(oin)h
+-1(t)h
+15(from)h
+14(the)h
+16(legal)h
+15(issues,)h
+16(I)h
+16(am)h
+14(lik)h
+-1(ely)h
+14(to)h
+16(turn)h
+16(out)h
+16(to)h
+15(b)h
+1(e)h
+17(prett)h
+-1(y)h
+16(pic)h
+-1(ky)h
+15(ab)h
+1(out)h
+16(what)h
+177 2785(mo)s
+1(di\014cations)h
+10(I)h
+13(will)h
+10(incorp)h
+1(orate)h
+13(in)h
+-1(to)h
+11(the)h
+13(o\016cial)h
+11(cop)h
+-1(y)h
+-3(.)h
+17(Whether)h
+13(a)h
+12(mo)h
+1(di\014cation)h
+10(will)h
+11(b)h
+1(e)h
+12(accepted)h
+14(will)h
+177 2835(dep)s
+1(end,)h
+15(amongst)h
+12(other)h
+15(things,)h
+13(on)h
+14(the)h
+14(follo)h
+-1(wing)h
+11(criteria.)h
+1042 2940(40)s
+41 @eop
+42 @bop0
+cmbx10.432 sf
+[<00007FE003000003FFFC0F00001FFFFF1F00007FF00FFF0000FF8001FF0003FE0000FF
+0007FC00007F000FF800003F000FF000001F001FE000001F003FE000000F003FC000000F
+007FC0000007007FC0000007007FC000000700FF8000000000FF8000000000FF80000000
+00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
+00FF8001FFFFF8FF8001FFFFF87FC001FFFFF87FC00000FF007FC00000FF003FC00000FF
+003FE00000FF001FE00000FF000FF00000FF000FF80000FF0007FC0000FF0003FE0001FF
+0000FF8001FF00007FF007FF00001FFFFFBF000003FFFE0F0000007FF00300>
+48 41 -4 40 54] 71 dc
+[<01FF000FFFE03E03F87803FC7801FCFE01FEFE01FEFE01FEFE01FE7C01FE3803FC0003
+FC0007F0000FE0000F80001F00001E00003C00003C000078000078000070000070000070
+0000700000700000700000000000000000000000000000000000000000700001FC0003FE
+0003FE0003FE0003FE0003FE0001FC00007000>
+24 42 -4 41 32] 63 dc
+42 @bop1
+cmti10.300 sf
+1544 1034(and)s
+cmsy10.300 sf
+239 42(\017)s
+239 174(\017)s
+239 257(\017)s
+239 390(\017)s
+cmbx10.300 sf
+222 1208(GNU)s
+16(break)h
+-1(out)h
+cmbx10.432 sf
+177 818(3.8)s
+70(A)h
+23(GNU)h
+22(V)h
+-6(ersion?)h
+177 1519(3.9)s
+70(Sum)h
+-1(m)h
+-2(ary)h
+cmr10.300 sf
+281 42(Do)s
+1(es)h
+11(the)h
+11(mo)h
+1(di\014cation)h
+9(\014t)h
+11(in)h
+10(with)h
+11(the)h
+11(design)h
+11(goals)h
+10(of)h
+10(F)h
+-3(unnelW)h
+-3(eb,)h
+11(or)h
+10(is)h
+11(it)h
+10(just)h
+11(a)h
+11(case)h
+12(of)h
+10(creeping)h
+281 91(featurism?)s
+281 174(Ho)s
+-1(w)h
+13(w)h
+-1(ell)h
+14(co)h
+1(ded)h
+14(is)h
+14(the)h
+15(mo)h
+1(di\014catio)h
+-1(n?)h
+17(W)h
+-3(ould)h
+12(it)h
+14(reduce)h
+15(the)h
+15(qualit)h
+-1(y)h
+12(of)h
+13(the)h
+15(co)h
+1(de?)h
+281 257(If)s
+14(the)h
+16(mo)h
+1(di\014cation)h
+13(c)h
+-1(hanges)h
+15(F)h
+-3(unnelW)h
+-3(eb's)h
+15(functionalit)h
+-1(y)h
+-3(,)h
+12(is)h
+15(this)h
+15(a)h
+15(desirable)h
+15(c)h
+-1(hange?)h
+22(Ho)h
+-1(w)h
+14(will)h
+281 307(it)s
+13(impact)h
+13(on)h
+13(existing)h
+14(users?)h
+281 390(W)s
+-3(ould)h
+13(it)h
+13(b)h
+1(e)h
+15(quic)h
+-1(k)h
+-1(er)h
+14(for)h
+14(me)h
+13(to)h
+14(mak)h
+-1(e)h
+13(the)h
+14(mo)h
+1(di\014cation)h
+12(m)h
+-1(yself)h
+13(than)h
+14(to)h
+14(w)h
+-1(ork)h
+13(out)h
+14(ho)h
+-1(w)h
+14(to)h
+14(incor-)h
+281 440(p)s
+1(orate)h
+14(the)h
+15(submitted)h
+13(mo)h
+1(di\014cation?)h
+177 556(It)s
+13(is)h
+12(m)h
+-1(y)h
+11(goal)h
+12(to)h
+12(guard)h
+13(the)h
+13(in)h
+-1(tegrit)h
+-1(y)h
+12(of)h
+12(the)h
+13(design)h
+13(and)h
+12(co)h
+1(de)h
+14(of)h
+12(the)h
+13(o\016cial)h
+11(v)h
+-1(ersion)h
+13(of)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(and)h
+177 606(so)s
+13(I)h
+13(will)h
+11(probably)h
+12(b)h
+1(e)h
+13(rather)h
+14(fussy)h
+13(ab)h
+1(out)h
+12(what)h
+13(I)h
+12(regard)h
+14(as)h
+12(a)h
+13(w)h
+-1(orth)h
+-1(while)h
+12(mo)h
+1(di\014cation.)h
+15(I)h
+13(do)h
+12(not)h
+13(wish)h
+177 656(to)s
+14(lose)h
+14(con)h
+-1(trol)h
+13(of)h
+14(the)h
+14(co)h
+1(de,)h
+14(either)h
+15(tec)h
+-1(hnically)h
+14(or)h
+14(legally)h
+-3(.)h
+177 934(The)s
+18(con)h
+-1(trols)h
+17(on)h
+16(the)h
+18(o\016cial)h
+15(v)h
+-1(ersion)h
+17(of)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(describ)h
+1(ed)h
+19(in)h
+16(the)h
+18(previous)h
+17(section)h
+18(will)h
+15(ha)h
+-1(v)h
+-1(e)h
+17(at)h
+177 984(most)s
+14(a)h
+15(minor)h
+13(impact)h
+14(on)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(dev)h
+-1(elopmen)h
+-1(t)h
+14(if)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(already)h
+15(serv)h
+-1(es)h
+17(the)h
+16(needs)h
+16(of)h
+15(most)h
+177 1034(of)s
+19(its)h
+20(users.)h
+36(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+21(if)h
+19(it)h
+19(turns)h
+20(out)h
+20(that)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+19(is)h
+20(b)h
+1(oth)h
+20(p)h
+1(opular,)h
+105(needs)h
+21(widespread)h
+177 1083(mo)s
+1(di\014cations)h
+13(and)h
+14(enhancemen)h
+-1(ts,)h
+15(then)h
+15(the)h
+15(o\016cial)h
+13(feedbac)h
+-1(k)h
+15(lo)h
+1(op)h
+13(describ)h
+1(ed)h
+16(in)h
+14(the)h
+15(previous)h
+15(section)h
+177 1133(will)s
+13(b)h
+1(ecome)h
+13(un)h
+-1(w)h
+-1(ork)h
+-2(able,)h
+13(and)h
+14(there)h
+15(will)h
+12(b)h
+1(e)h
+15(a)h
+13(GNU)h
+14(break)h
+-1(out.)h
+177 1208(A)s
+340(will)h
+12(o)h
+1(ccur)h
+15(if)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(users)h
+16(b)h
+1(ecome)h
+13(organized)h
+14(enough)h
+14(and)h
+14(anno)h
+-1(y)h
+-1(ed)h
+14(enough)h
+177 1258(\(at)s
+20(the)h
+21(o\016cial)h
+18(dev)h
+-1(elopmen)h
+-1(t)h
+19(cycle\))h
+21(to)h
+20(start)h
+20(main)h
+-1(taini)h
+-1(ng)h
+18(a)h
+20(coheren)h
+-1(t)h
+21(v)h
+-1(ersion)h
+20(of)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+20(that)h
+177 1307(div)s
+-1(erges)h
+19(from)h
+16(the)h
+19(o\016cial)h
+17(v)h
+-1(ersion.)h
+31(If)h
+18(a)h
+18(GNU)h
+18(break)h
+-1(out)h
+18(o)h
+1(ccurs,)h
+20(I)h
+18(w)h
+-1(ould)h
+18(appreciate,)h
+19(as)h
+19(requested)h
+177 1357(earlier,)s
+14(that)h
+14(a)h
+13(di\013eren)h
+-1(t)h
+15(name)h
+13(and)h
+14(\014le)h
+13(extensions)h
+15(b)h
+1(e)h
+15(c)h
+-1(hosen)h
+15(for)h
+13(the)h
+15(div)h
+-1(erging)h
+13(v)h
+-1(ersion.)h
+177 1635(Decen)s
+-1(tralized)h
+21(mo)h
+1(di\014cations)h
+18(to)h
+20(a)h
+19(programm)h
+-1(ing)h
+17(language)h
+19(and)h
+20(its)h
+20(implem)h
+-1(en)h
+-1(tatio)h
+-1(ns)h
+19(can)h
+20(seriously)h
+177 1685(damage)s
+12(the)h
+14(language's)h
+13(p)h
+1(ortabilit)h
+-1(y)h
+12(and)h
+14(seman)h
+-1(tic)h
+12(clarit)h
+-1(y)h
+-3(.)h
+17(Unfortunately)h
+-3(,)h
+13(there)h
+15(is)h
+13(a)h
+13(tension)h
+14(b)h
+1(et)h
+-1(w)h
+-1(een)h
+177 1735(cen)s
+-1(tralizing)h
+10(con)h
+-1(trol)h
+10(of)h
+9(a)h
+10(programm)h
+-1(i)h
+-1(ng)h
+8(language)h
+9(and)h
+10(pro)h
+-1(viding)h
+9(source)h
+11(co)h
+1(de)h
+11(securit)h
+-1(y)h
+11(to)h
+10(nerv)h
+-1(ous)h
+11(users.)h
+177 1785(In)s
+15(F)h
+-3(unnelW)h
+-3(eb,)h
+13(this)h
+15(trade-o\013)h
+15(has)h
+15(b)h
+1(een)h
+15(resolv)h
+-1(ed)h
+15(to)h
+15(some)h
+13(exten)h
+-1(t)h
+16(b)h
+-1(y)h
+14(releasing)h
+15(the)h
+15(source)h
+16(co)h
+1(de)h
+15(along)h
+177 1835(with)s
+16(a)h
+16(request)h
+18(that)h
+16(if)h
+16(the)h
+16(functionalit)h
+-1(y)h
+15(of)h
+16(the)h
+17(program)h
+14(is)h
+16(mo)h
+1(di\014ed,)h
+15(that)h
+17(the)h
+17(program's)h
+14(name)h
+15(b)h
+1(e)h
+177 1884(c)s
+-1(hanged)h
+12(and)h
+12(a)h
+11(di\013eren)h
+-1(t)h
+13(\014le)h
+11(extension)h
+13(b)h
+1(e)h
+12(c)h
+-1(hosen)h
+13(for)h
+11(input)h
+12(\014les)h
+12(created)h
+13(under)h
+12(the)h
+13(mo)h
+1(di\014ed)h
+10(program.)h
+177 1934(The)s
+14(author)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(has)h
+13(decided)h
+15(to)h
+13(main)h
+-1(tain)h
+11(an)h
+13(o\016cial)h
+13(v)h
+-1(ersion)h
+13(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(o)h
+-1(v)h
+-1(er)h
+14(whic)h
+-1(h)h
+13(he)h
+177 1984(will)s
+14(o)h
+-1(wn)h
+15(cop)h
+-1(yrigh)h
+-1(t,)h
+15(but)h
+16(whic)h
+-1(h)h
+15(he)h
+16(will)h
+14(release)h
+17(under)h
+16(GNU)h
+15(license)h
+17(from)h
+13(time)h
+14(to)h
+16(time.)h
+21(This)h
+16(means)h
+177 2034(that)s
+16(cop)h
+-1(yrigh)h
+-1(t)h
+15(on)h
+16(all)h
+14(c)h
+-1(hanges)h
+17(to)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+16(m)h
+-1(ust)h
+14(b)h
+1(e)h
+17(signed)h
+16(o)h
+-1(v)h
+-1(er)h
+15(to)h
+16(the)h
+16(author)h
+16(b)h
+1(efore)h
+17(they)h
+16(ha)h
+-1(v)h
+-1(e)h
+177 2084(a)s
+16(c)h
+-1(hance)h
+18(of)h
+16(b)h
+1(eing)h
+17(incorp)h
+1(orated)h
+17(in)h
+16(the)h
+17(o\016cial)h
+15(v)h
+-1(ersion.)h
+27(Finally)h
+-3(,)h
+14(it)h
+17(is)h
+16(p)h
+1(ossible)h
+17(that)h
+17(this)h
+16(reluctance)h
+177 2133(of)s
+14(the)h
+15(author)h
+14(to)h
+14(remo)h
+-1(v)h
+-1(e)h
+13(his)h
+14(cop)h
+-1(yrigh)h
+-1(ted)h
+15(v)h
+-1(ersion)h
+14(from)h
+12(the)h
+15(dev)h
+-1(elopmen)h
+-1(t)h
+13(cycle)h
+15(of)h
+14(the)h
+15(o\016cial)h
+13(v)h
+-1(ersion)h
+177 2183(will)s
+11(result)h
+14(in)h
+12(a)h
+12(GNU)h
+13(break)h
+-1(out)h
+13(in)h
+12(whic)h
+-1(h)h
+12(a)h
+13(div)h
+-1(erging)h
+11(GNU)h
+13(v)h
+-1(ersion)h
+12(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(will)h
+11(b)h
+1(e)h
+13(main)h
+-1(tai)h
+-1(ned)h
+177 2233(b)s
+-1(y)h
+14(the)h
+14(GNU)h
+14(comm)h
+-2(unit)h
+-1(y)h
+-3(.)h
+16(The)h
+14(author)h
+14(hop)h
+1(es)h
+15(this)h
+14(w)h
+-1(on't)h
+13(b)h
+1(e)h
+15(necessary)h
+16(and)h
+14(requests,)h
+15(if)h
+13(this)h
+14(happ)h
+1(ens,)h
+177 2283(that)s
+14(the)h
+15(div)h
+-1(erging)h
+13(GNU)h
+13(v)h
+-1(ersion)h
+14(b)h
+1(e)h
+15(renamed.)h
+1042 2940(41)s
+42 @eop
+43 @bop0
+43 @bop1
+cmr10.300 sf
+1042 2940(42)s
+43 @eop
+44 @bop0
+cmbx10.622 sf
+[<00000007C0000000000FC0000000000FC0000000001FC0000000003FC0000000007FC0
+00000000FFC000000000FFC000000001FFC000000003FFC000000007FFC00000000FFFC0
+0000000FFFC00000001EFFC00000003CFFC00000007CFFC0000000F8FFC0000000F0FFC0
+000001E0FFC0000003C0FFC0000007C0FFC000000F80FFC000000F00FFC000001E00FFC0
+00003C00FFC000007C00FFC00000F800FFC00000F000FFC00001E000FFC00003C000FFC0
+0007C000FFC0000F8000FFC0000F0000FFC0001E0000FFC0003C0000FFC0007C0000FFC0
+00F80000FFC000FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0000001FFC0
+00000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0
+00000001FFC000000001FFC000000001FFC0000007FFFFFFC00007FFFFFFC00007FFFFFF
+C00007FFFFFFC0>
+48 55 -3 54 49] 52 dc
+cmbx10.300 sf
+[<003FC1FE0001F03F818003C03E01C007C07E03E00F807C03E00F807C03E00F807C01C0
+0F807C00000F807C00000F807C00000F807C0000FFFFFFFFE0FFFFFFFFE00F807C03E00F
+807C03E00F807C03E00F807C03E00F807C03E00F807C03E00F807C03E00F807C03E00F80
+7C03E00F807C03E00F807C03E00F807C03E00F807C03E00F807C03E07FE1FF0FFC7FE1FF
+0FFC>
+40 29 0 28 40] 14 dc
+[<03F0600F0CE01E07E03C03E07C03E07803E0F803E0F803E0F803E0F803E0F803E0F803
+E07803E07C03E03C03E01C07E00E0FE003F3E00003E00003E00003E00003E00003E00003
+E0001FFC001FFC>
+24 26 -2 17 25] 113 dc
+44 @bop1
+cmti10.300 sf
+1853 2316(al)s
+2(l)h
+cmbx10.622 sf
+177 376(Chapter)s
+34(4)h
+cmbx10.746 sf
+177 607(F)s
+-10(unnelW)h
+-10(eb)h
+41(F)h
+-10(uture)h
+cmtt10.300 sf
+1211 1719(COMLINE)s
+15(MAX)h
+389 2465(SETALL)s
+655(SET)h
+747 2785(command.c)s
+cmbx10.432 sf
+177 1107(4.1)s
+70(Do)h
+2(cum)h
+-1(e)h
+-1(n)h
+-2(tation)h
+177 1604(4.2)s
+70(Com)h
+-1(m)h
+-3(and)h
+22(Line)h
+22(In)h
+-2(terface)h
+177 2201(4.3)s
+70(Shell)h
+21(In)h
+-2(terpreter)h
+cmbx10.300 sf
+177 1221(An)s
+12(o\016cial)h
+11(example:)h
+177 1344(Index)s
+20(program:)h
+177 1719(Bu\013er)s
+14(length:)h
+177 1892(An)s
+-1(tiquated)h
+14(F)h
+-4(eatures:)h
+177 2316(SET)s
+-4(ALL)h
+20(command:)h
+177 2588(Recursion)s
+14(test:)h
+177 2662(Diagnosti)s
+-1(c)h
+13(coun)h
+-1(ti)h
+-1(ng:)h
+177 2785(Argumen)s
+-1(t)h
+16(coun)h
+-1(ti)h
+-1(ng:)h
+cmr10.300 sf
+177 847(Previous)s
+13(c)h
+-1(hapters)h
+14(ha)h
+-1(v)h
+-1(e)h
+13(explained)h
+12(the)h
+13(design)h
+13(of)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(and)h
+13(giv)h
+-1(en)h
+12(reasons)h
+14(for)h
+12(wh)h
+-1(y)h
+12(it)h
+13(is)h
+12(the)h
+13(w)h
+-1(a)h
+-1(y)h
+177 897(it)s
+15(is.)h
+24(This)h
+15(c)h
+-1(hapter)h
+17(go)h
+1(es)h
+16(through)h
+16(eac)h
+-1(h)h
+16(of)h
+15(the)h
+17(asp)h
+1(ects)h
+17(of)h
+15(F)h
+-3(unnelW)h
+-3(eb,)h
+15(and)h
+16(explores)h
+16(their)h
+16(problems,)h
+177 946(ho)s
+-1(w)h
+14(they)h
+14(can)h
+14(b)h
+1(e)h
+15(solv)h
+-1(ed,)h
+13(and)h
+14(lists)h
+13(opp)h
+1(ortunities)h
+15(for)h
+13(impro)h
+-1(v)h
+-1(em)h
+-1(en)h
+-1(t.)h
+601 1221(A)s
+11(o\016cial)h
+9(example)h
+10(program)h
+9(written)h
+12(using)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+11(should)h
+10(b)h
+1(e)h
+12(constructed)h
+177 1271(and)s
+14(made)h
+13(a)h
+-1(v)h
+-2(aila)h
+-1(ble.)h
+533 1344(In)s
+19(order)h
+18(to)h
+19(t)h
+-1(yp)h
+1(eset)h
+19(the)h
+19(do)h
+1(cumen)h
+-1(tation,)h
+18(a)h
+18(p)h
+1(ortable)h
+18(index)h
+18(sorting)h
+18(program)h
+17(is)h
+177 1394(required.)s
+31(One)h
+19(should)h
+17(b)h
+1(e)h
+19(written)h
+18(and)h
+18(added)h
+18(to)h
+18(the)h
+18(distribution)h
+18(kit.)h
+29(P)h
+-1(erhaps)h
+19(this)h
+18(could)h
+18(b)h
+1(e)h
+18(the)h
+177 1444(o\016cial)s
+13(example!)h
+484 1719(Curren)s
+-1(tly)h
+13(the)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+12(shell)h
+13(uses)h
+15(the)h
+260(constan)h
+-1(t)h
+13(to)h
+13(size)h
+14(its)h
+13(in)h
+-1(ternal)h
+177 1768(comma)s
+-1(nd)h
+15(line)h
+15(bu\013ers.)h
+27(This)h
+16(is)h
+16(un)h
+-1(tenable.)h
+25(The)h
+17(maxim)h
+-3(um)h
+13(length)h
+16(of)h
+16(a)h
+16(shell)h
+16(comm)h
+-1(and)h
+14(line)h
+16(should)h
+177 1818(not)s
+14(b)h
+1(e)h
+14(mac)h
+-1(hine)h
+13(dep)h
+1(enden)h
+-1(t.)h
+638 1892(As)s
+15(the)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(language)h
+14(dev)h
+-1(elops,)h
+14(it)h
+14(is)h
+14(lik)h
+-1(ely)h
+13(that)h
+15(some)h
+13(c)h
+-1(hanges)h
+15(will)h
+177 1941(ha)s
+-1(v)h
+-1(e)h
+15(to)h
+15(b)h
+1(e)h
+16(made)h
+13(that)h
+15(will)h
+14(render)h
+17(one)h
+15(or)h
+15(more)h
+14(language)h
+14(constructs)h
+17(obsolete.)h
+22(When)h
+15(this)h
+15(happ)h
+1(ens,)h
+177 1991(it)s
+13(ma)h
+-1(y)h
+10(b)h
+1(e)h
+14(necessary)h
+15(to)h
+12(add)h
+13(a)h
+13(comm)h
+-1(and)h
+11(line)h
+12(option)h
+12(that)h
+13(has)h
+13(the)h
+13(p)h
+1(o)h
+-1(w)h
+-1(er)h
+13(to)h
+13(turn)h
+13(on)h
+13(and)h
+12(o\013)h
+13(w)h
+-1(arnings)h
+177 2041(or)s
+14(errors)h
+15(\015agging)h
+13(an)h
+-1(tiquated)h
+13(features.)h
+618 2316(When)s
+17(writing)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+17(scripts,)h
+19(it)h
+17(is)h
+18(sometim)h
+-1(es)h
+17(desirable)h
+18(to)h
+17(set)h
+80(of)h
+177 2366(F)s
+-3(unnelW)h
+-3(eb's)h
+16(options)h
+17(to)h
+16(some)h
+16(particular)h
+17(v)h
+-2(alue)h
+16(so)h
+17(that)h
+16(the)h
+18(script)h
+17(is)h
+17(not)h
+16(vulnerable)h
+17(to)h
+17(c)h
+-1(hanges)h
+17(in)h
+177 2415(F)s
+-3(unnelW)h
+-3(eb's)h
+15(default)h
+16(v)h
+-2(alues)h
+15(whic)h
+-1(h)h
+16(migh)h
+-1(t)h
+14(o)h
+1(ccur)h
+16(from)h
+14(time)h
+15(to)h
+16(time.)h
+22(T)h
+-3(o)h
+15(this)h
+16(end,)h
+16(it)h
+16(ma)h
+-1(y)h
+13(b)h
+1(e)h
+17(w)h
+-1(orth)h
+177 2465(creating)s
+13(a)h
+12(\\)h
+132(")h
+11(comm)h
+-1(and)h
+11(that)h
+12(is)h
+13(iden)h
+-1(tical)h
+11(to)h
+13(the)h
+13(\\)h
+66(")h
+11(comma)h
+-1(nd)h
+11(except)h
+14(that)h
+12(it)h
+12(will)h
+11(generate)h
+177 2515(an)s
+14(error)h
+15(if)h
+13(the)h
+14(v)h
+-2(alue)h
+13(of)h
+14(an)h
+13(option)h
+13(is)h
+14(not)h
+14(sp)h
+1(eci\014ed)h
+15(explicitly)h
+-3(.)h
+510 2588(A)s
+14(test)h
+15(should)h
+14(b)h
+1(e)h
+14(added)h
+15(to)h
+13(test)h
+15(for)h
+14(recursiv)h
+-1(e)h
+15(in)h
+-1(v)h
+-1(o)h
+1(cation)h
+13(in)h
+13(a)h
+14(shellscript.)h
+621 2662(The)s
+13(co)h
+1(de)h
+13(for)h
+12(coun)h
+-1(ting)h
+12(diagnostics)h
+13(in)h
+12(the)h
+13(script)h
+13(in)h
+-1(terpreter)h
+14(is)h
+13(rather)h
+13(messy)h
+177 2711(and)s
+14(p)h
+1(erhaps)h
+15(ev)h
+-1(en)h
+14(buggy)h
+-3(.)h
+18(It)h
+13(should)h
+14(b)h
+1(e)h
+15(cleaned)h
+14(up)h
+14(and)h
+14(comm)h
+-1(en)h
+-1(ted.)h
+621 2785(In)s
+15(the)h
+228(mo)h
+1(dule,)h
+14(there)h
+17(is)h
+15(a)h
+15(v)h
+-2(ariable)h
+15(that)h
+15(coun)h
+-1(ts)h
+16(the)h
+17(argumen)h
+-1(ts)h
+177 2835(to)s
+14(a)h
+14(comma)h
+-1(nd.)h
+18(Curren)h
+-1(tly)h
+14(it)h
+14(tak)h
+-1(es)h
+15(the)h
+15(v)h
+-2(alue)h
+13(of)h
+14(the)h
+15(n)h
+-1(um)h
+-1(b)h
+1(er)h
+13(of)h
+14(parameters)h
+14(including)h
+14(the)h
+15(comm)h
+-1(and)h
+1042 2940(43)s
+14 2 1368 1719 r
+44 @eop
+45 @bop0
+cmbx10.432 sf
+[<00000300000007800000078000000F8000000F0000000F0000001F0000001E0000003E
+0000003C0000003C0000007C0000007800000078000000F8000000F0000001F0000001E0
+000001E0000003E0000003C0000003C0000007C00000078000000F8000000F0000000F00
+00001F0000001E0000003E0000003C0000003C0000007C0000007800000078000000F800
+0000F0000001F0000001E0000001E0000003E0000003C0000003C0000007C00000078000
+000F8000000F0000000F0000001F0000001E0000001E0000003E0000003C0000007C0000
+007800000078000000F8000000F0000000F000000060000000>
+32 60 -4 44 34] 47 dc
+cmbx10.300 sf
+[<0FF0303C601EF01FF81FF81F701F003E003C007000E001C00180018003000300030003
+000300000000000000000007800FC00FC00FC00FC00780>
+16 29 -3 28 23] 63 dc
+[<001FE00000E01C0003000300060001800C0000C018000060300FC0302038601060F010
+1860F01F18C1E01F0CC1E01F0CC3E01F0CC3E01F0CC3E01F0CC3E01F0CC3E01F0CC1E01F
+0CC1E01F0C60F01F0860F01F1820386F10300FC7E0180000000C00000006000000030000
+3C00E007F0001FFC00>
+32 29 -3 28 37] 64 dc
+45 @bop1
+cmsy10.300 sf
+375 1590(f)s
+736 1640(f)s
+1284 1789(f)s
+cmbx10.432 sf
+177 814(4.4)s
+70(Language)h
+24(Design)h
+177 2566(4.5)s
+70(Scanner/Mapp)h
+2(er)h
+cmtt10.300 sf
+1726 295(Make)s
+1251 395(+D)s
+787 445(Make)s
+348(Make)h
+177 495(.fw)s
+1181 544(.sig)s
+534(.fw)h
+263 594(Make)s
+863(.fw)h
+202(.sig)h
+615 1060(@O)s
+780 1110(0)s
+769(@F)h
+364 1236(@<Sloth@>)s
+714 1640(@)s
+350(@-)h
+1262 1789(@)s
+657 2347(@\()s
+99(@\))h
+cmbx10.300 sf
+177 168(Mak)s
+-1(e)h
+15(facilit)h
+-2(y:)h
+177 295(Signatur)s
+-1(e)h
+12(\014le:)h
+177 1060(Output)s
+10(or)h
+11(\014le?:)h
+177 1187(Syn)s
+-1(tax)h
+16(of)h
+17(section)h
+16(names:)h
+177 1463(One)s
+15(macro)h
+14(p)h
+1(er)h
+15(section:)h
+177 1590(Should)s
+15(@)h
+38(suppress)h
+15(EOL?:)h
+177 1866(Pragma)s
+20(syn)h
+-1(tax:)h
+177 1993(Condition)s
+-1(al)h
+-1(s:)h
+177 2170(File)s
+15(mark)h
+-1(ers:)h
+177 2297(F)s
+-4(ormal)h
+13(parameter)h
+13(lists:)h
+177 2685(All)s
+17(non-con)h
+-1(ti)h
+-1(guo)h
+-1(us)h
+16(mappings:)h
+cmr10.300 sf
+177 42(v)s
+-1(erb.)h
+19(This)h
+13(has)h
+13(turned)h
+15(out)h
+13(to)h
+13(mak)h
+-1(e)h
+12(the)h
+14(co)h
+1(de)h
+14(less)h
+15(readable.)h
+18(It)h
+13(should)h
+13(b)h
+1(e)h
+14(c)h
+-1(hanged)h
+14(to)h
+13(b)h
+1(e)h
+14(the)h
+14(n)h
+-1(um)h
+-1(b)h
+1(er)h
+177 91(of)s
+13(argumen)h
+-1(ts)h
+14(to)h
+13(the)h
+15(comm)h
+-1(and)h
+12(v)h
+-1(erb.)h
+479 168(It)s
+13(ma)h
+-1(y)h
+11(b)h
+1(e)h
+13(w)h
+-1(orth)h
+13(building)h
+12(some)h
+12(sort)h
+13(of)h
+12(mak)h
+-1(e)h
+12(facilit)h
+-1(y)h
+11(in)h
+-1(to)h
+12(the)h
+14(script)h
+14(language)h
+12(so)h
+13(as)h
+177 218(to)s
+14(supp)h
+1(ort)h
+15(mac)h
+-1(hines)h
+13(suc)h
+-1(h)h
+14(as)h
+14(the)h
+15(Macin)h
+-1(tosh)h
+14(that)h
+13(do)h
+14(not)h
+14(already)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(this)h
+14(facilit)h
+-1(y)h
+-3(.)h
+484 295(One)s
+13(problem)h
+12(with)h
+12(using)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(in)h
+12(conjunction)h
+12(with)h
+13(an)h
+12(external)h
+112(facilit)h
+-1(y)h
+177 345(is)s
+15(that)h
+16(a)h
+15(user)h
+16(migh)h
+-1(t)h
+13(c)h
+-1(hange)h
+16(a)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(source)h
+16(\014le)h
+16(without)h
+15(making)h
+13(c)h
+-1(hanges)h
+16(that)h
+15(will)h
+14(a\013ect)h
+16(the)h
+177 395(\014les)s
+16(that)h
+15(it)h
+14(generates.)h
+24(If)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+15(is)h
+15(then)h
+16(run)h
+15(and)h
+15(the)h
+16(\\)h
+44(")h
+14(option)h
+14(is)h
+15(on,)h
+15(then)h
+15(the)h
+16(output)h
+15(\014les)h
+177 445(will)s
+15(b)h
+1(e)h
+17(deleted)h
+18(\(to)h
+17(a)h
+-1(v)h
+-1(oid)h
+15(further)h
+121(propagations\).)h
+25(If)h
+120(then)h
+17(has)h
+17(a)h
+16(pro)h
+1(duction)h
+17(linking)h
+15(the)h
+255 495(\014le)s
+13(to)h
+13(its)h
+13(output)h
+13(\014les,)h
+13(then)h
+13(it)h
+13(ma)h
+-1(y)h
+11(conclude)h
+13(that)h
+13(the)h
+13(output)h
+13(\014les)h
+14(are)h
+13(still)h
+12(out)h
+13(of)h
+12(date.)h
+18(T)h
+-3(o)h
+12(solv)h
+-1(e)h
+177 544(the)s
+17(problem,)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+16(could)h
+17(b)h
+1(e)h
+17(c)h
+-1(hanged)h
+16(to)h
+17(write)h
+16(a)h
+120(\014le)h
+16(whenev)h
+-1(er)h
+18(it)h
+16(pro)h
+1(cesse)h
+1(s)h
+18(a)h
+98(\014le.)h
+177 594(The)s
+116(pro)h
+1(duction)h
+14(could)h
+13(then)h
+15(b)h
+1(e)h
+14(wired)h
+15(up)h
+14(to)h
+13(link)h
+13(the)h
+94(\014le)h
+14(to)h
+14(the)h
+115(\014le)h
+14(instead)h
+14(of)h
+13(to)h
+14(the)h
+177 644(output)s
+14(\014les.)h
+177 933(Some)s
+13(prop)h
+1(osed)h
+15(c)h
+-1(hanges)h
+15(to)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(do)h
+14(not)h
+14(corresp)h
+1(ond)h
+16(to)h
+14(an)h
+-1(y)h
+13(particular)h
+14(comp)h
+1(onen)h
+-1(t)h
+14(of)h
+13(F)h
+-3(unnel-)h
+177 983(W)s
+-3(eb)h
+14(and)h
+13(are)h
+15(really)h
+13(to)h
+14(do)h
+13(with)h
+14(the)h
+14(design)h
+15(of)h
+13(the)h
+14(input)h
+14(language.)h
+512 1060(The)s
+11(\\)h
+44(")h
+9(sp)h
+1(ecial)h
+11(sequence)h
+13(for)h
+10(de\014ning)h
+11(an)h
+10(output)h
+11(\014le)h
+11(is)h
+10(somewhat)h
+10(non-mnem)h
+-1(oni)h
+-1(c)h
+177 1110(and)s
+14(can)h
+14(b)h
+1(e)h
+14(confused)h
+15(with)h
+14(zero)h
+15(\(\\)h
+22("\).)h
+17(P)h
+-1(erhaps)h
+15(it)h
+13(should)h
+14(b)h
+1(e)h
+15(replaced)h
+15(b)h
+-1(y)h
+13(the)h
+15(\\)h
+44(")h
+13(sequence.)h
+720 1187(Curren)s
+-1(tly)h
+15(section)h
+16(names)h
+14(use)h
+16(the)h
+16(same)h
+14(syn)h
+-1(tax)h
+15(as)h
+15(macro)h
+14(names.)h
+21(F)h
+-3(or)h
+177 1236(example)s
+16(\\)h
+198(".)h
+25(It)h
+17(can)h
+18(b)h
+1(e)h
+17(argued)h
+18(that)h
+17(angle)h
+16(brac)h
+-1(k)h
+-1(ets)h
+18(should)h
+17(b)h
+1(e)h
+18(reserv)h
+-1(ed)h
+19(only)h
+16(for)h
+17(macro)h
+177 1286(names)s
+16(and)h
+17(that)h
+16(some)h
+16(other)h
+18(syn)h
+-1(tax)h
+16(should)h
+17(b)h
+1(e)h
+17(found)h
+17(for)h
+16(delimiti)h
+-1(ng)h
+15(section)h
+17(names.)h
+26(This)h
+17(is)h
+16(not)h
+17(a)h
+177 1336(clear)s
+12(issue.)h
+18(It)h
+11(could)h
+12(also)h
+10(b)h
+1(e)h
+13(argued)h
+11(that)h
+12(they)h
+12(are)h
+12(b)h
+1(oth)h
+11(names,)h
+11(and)h
+11(that)h
+11(b)h
+1(ecause)h
+14(sections)h
+12(can)h
+12(inherit)h
+177 1386(their)s
+14(names)h
+14(from)h
+12(the)h
+14(macros)h
+13(they)h
+15(con)h
+-1(tain,)h
+13(that)h
+13(the)h
+15(names)h
+13(are)h
+14(of)h
+14(the)h
+14(same)h
+13(\\t)h
+-1(yp)h
+1(e".)h
+680 1463(One)s
+14(particular)h
+13(st)h
+-1(yle)h
+13(of)h
+13(using)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(is)h
+13(to)h
+13(ha)h
+-1(v)h
+-1(e)h
+13(at)h
+14(most)h
+12(one)h
+13(macro)h
+177 1513(de\014nition)s
+12(p)h
+1(er)h
+13(section.)h
+19(It)h
+12(ma)h
+-1(y)h
+11(b)h
+1(e)h
+13(w)h
+-1(orth)h
+12(adding)h
+12(a)h
+12(pragma)h
+10(that)h
+13(instructs)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+11(to)h
+13(enforce)h
+13(this.)h
+760 1590(When)s
+15(de\014ning)h
+15(a)h
+15(macro)h
+14(in)h
+15(F)h
+-3(unnelW)h
+-3(eb,)h
+14(it)h
+15(seems)h
+15(to)h
+15(b)h
+1(e)h
+16(rule)h
+15(rather)h
+177 1640(than)s
+14(the)h
+15(exception)h
+14(that)h
+14(the)h
+15(\\)h
+43(")h
+13(b)h
+1(e)h
+14(follo)h
+-1(w)h
+-1(ed)h
+13(b)h
+-1(y)h
+13(\\)h
+44(".)h
+18(This)h
+13(suppresse)h
+1(s)h
+16(the)h
+15(EOL)h
+14(on)h
+14(the)h
+14(de\014nition)h
+177 1690(line,)s
+12(allo)h
+-1(wing)h
+11(the)h
+13(\014rst)h
+14(line)h
+12(of)h
+13(the)h
+13(macro)h
+12(to)h
+12(b)h
+1(e)h
+14(placed)h
+13(imm)h
+-1(edia)h
+-1(tely)h
+11(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+13(and)h
+12(in)h
+13(line)h
+12(with)h
+13(the)h
+13(other)h
+177 1739(lines)s
+17(without)h
+17(in)h
+-1(tro)h
+1(ducing)h
+17(an)h
+16(EOL)h
+18(at)h
+17(the)h
+17(start)h
+18(of)h
+17(the)h
+17(macro)h
+16(text.)h
+28(One)h
+18(option)h
+16(is)h
+17(to)h
+17(in)h
+-1(tro)h
+1(duce)h
+18(a)h
+177 1789(pragma)s
+12(to)h
+14(determine)h
+14(whether)h
+15(to)h
+14(suppress)h
+16(EOLs)h
+14(follo)h
+-1(wing)h
+12(\\)h
+43(".)h
+536 1866(It)s
+18(is)h
+18(not)h
+18(clear)h
+18(ho)h
+-1(w)h
+18(\\lo)h
+1(ose")h
+17(the)h
+19(syn)h
+-1(tax)h
+18(of)h
+17(pragmas)h
+17(should)h
+17(b)h
+1(e.)h
+31(P)h
+-1(erhaps)h
+19(they)h
+177 1916(should)s
+14(b)h
+1(e)h
+14(case)h
+15(insensitiv)h
+-1(e.)h
+478 1993(Dep)s
+1(ending)h
+17(on)h
+17(demand,)h
+17(it)h
+17(ma)h
+-1(y)h
+15(b)h
+1(e)h
+18(w)h
+-1(orth)h
+18(rein)h
+-1(tro)h
+1(ducing)h
+17(some)h
+17(sort)h
+17(of)h
+17(conditional)h
+177 2043(feature)s
+17(in)h
+-1(to)h
+16(F)h
+-3(unnelW)h
+-3(eb.)h
+24(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+17(it)h
+15(w)h
+-1(ould)h
+16(ha)h
+-1(v)h
+-1(e)h
+16(to)h
+16(b)h
+1(e)h
+17(v)h
+-1(ery)h
+16(simple)h
+15(to)h
+16(comp)h
+1(ete)h
+16(with)h
+16(the)h
+16(v)h
+-2(arious)h
+177 2093(w)s
+-1(a)h
+-1(ys)h
+14(in)h
+13(whic)h
+-1(h)h
+14(conditionals)h
+13(can)h
+14(already)h
+13(b)h
+1(e)h
+15(fudged)h
+14(within)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(as)h
+14(it)h
+14(stands.)h
+473 2170(It)s
+14(migh)h
+-1(t)h
+13(b)h
+1(e)h
+15(w)h
+-1(orth)h
+15(mo)h
+1(difyi)h
+-1(ng)h
+13(the)h
+15(language)h
+14(so)h
+15(that)h
+14(a)h
+15(sp)h
+1(ecial)h
+15(syn)h
+-1(tactical)h
+14(mark)h
+-1(er)h
+14(is)h
+177 2220(required)s
+11(at)h
+10(the)h
+11(start)h
+11(and)h
+10(end)h
+10(of)h
+10(\014les.)h
+17(This)h
+10(will)h
+9(assist)h
+10(in)h
+10(detecting)h
+11(truncations)h
+11(and)h
+10(other)h
+11(corruptions.)h
+680 2297(It)s
+13(mig)h
+-1(h)h
+-1(t)h
+11(b)h
+1(e)h
+13(w)h
+-1(orth)h
+13(c)h
+-1(hanging)h
+12(o)h
+-1(v)h
+-1(er)h
+12(to)h
+13(a)h
+12(syn)h
+-1(tax)h
+12(for)h
+13(formal)h
+10(parameter)h
+12(lists)h
+177 2347(that)s
+16(do)h
+1(es)h
+17(not)h
+17(require)h
+17(the)h
+76(and)h
+60(.)h
+25(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+17(they)h
+16(could)h
+16(b)h
+1(e)h
+17(retained)h
+17(as)h
+16(optional)h
+15(for)h
+16(bac)h
+-1(kw)h
+-1(ard)h
+177 2396(compatibili)s
+-1(t)h
+-1(y)h
+-3(.)h
+826 2685(Curren)s
+-1(tly)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+15(requires)h
+17(that)h
+17(all)h
+15(input)h
+15(\014les)h
+17(b)h
+1(e)h
+17(mapp)h
+1(ed)h
+177 2735(in)s
+-1(to)h
+15(a)h
+15(con)h
+-1(tiguous)h
+15(lump)h
+14(of)h
+15(memo)h
+-1(ry)h
+-3(.)h
+21(This)h
+15(caused)h
+17(problems)h
+15(for)h
+15(t)h
+-1(w)h
+-1(o)h
+15(reasons.)h
+24(First,)h
+15(to)h
+16(do)h
+15(this,)h
+16(one)h
+177 2785(has)s
+12(to)h
+12(allo)h
+1(cate)h
+11(the)h
+12(memo)h
+-1(ry)h
+10(\014rst,)h
+13(and)h
+11(to)h
+12(do)h
+11(that,)h
+12(y)h
+-1(ou)h
+11(ha)h
+-1(v)h
+-1(e)h
+12(to)h
+11(kno)h
+-1(w)h
+11(ho)h
+-1(w)h
+12(long)h
+11(the)h
+12(\014le)h
+12(is,)h
+11(and)h
+12(it)h
+11(turns)h
+177 2835(out)s
+14(that)h
+14(\014nding)h
+14(out)h
+14(the)h
+14(length)h
+14(of)h
+13(a)h
+14(\014le)h
+14(in)h
+14(a)h
+13(p)h
+1(ortable)h
+15(manner)h
+13(is)h
+14(v)h
+-1(ery)h
+14(ine\016cien)h
+-1(t.)h
+18(Second,)h
+15(although)h
+1042 2940(44)s
+45 @eop
+46 @bop0
+cmtt10.300 sf
+[<03000F803FE0FDF8F0784010>
+16 6 -4 24 22] 94 dc
+cmti10.300 sf
+[<070E0019910010E38020E38041C30041C00001C00001C0000380000380000380000380
+00070200670200E70400CB04008B080070F000>
+24 18 -3 17 19] 120 dc
+cmbx10.300 sf
+[<007800FC00FC00FC00FC007800000000000000000000000003FC03FC007C007C007C00
+7C007C007C007C007C007C007C007C007C007C007C007C007C007C007C707CF87CF878F8
+F070E01F80>
+16 38 3 29 15] 106 dc
+46 @bop1
+cmtt10.300 sf
+423 395(@^D\(10\))s
+682 572(@^D\(ddd\))s
+1093 622(LF)s
+611 699(version)s
+470 1703(@M)s
+cmbx10.432 sf
+177 1018(4.6)s
+70(P)h
+-2(arser)h
+177 1308(4.7)s
+70(Analyser)h
+177 1923(4.8)s
+70(T)h
+-6(angle)h
+177 2588(4.9)s
+70(W)h
+-6(ea)h
+-2(v)h
+-2(e)h
+cmti10.300 sf
+1172 2169(no)s
+21(indentation)h
+108(blank)h
+20(indentation)h
+1259 2219(T)s
+-3(ext)h
+17(indentation)h
+295(blank)h
+177 2269(indentation)s
+cmbx10.300 sf
+177 295(EOL)s
+14(is)h
+14(unsp)h
+1(eci\014)h
+-1(abl)h
+-1(e:)h
+177 522(Allo)s
+-1(w)h
+15(mnemonics)h
+14(for)h
+16(unpri)h
+-1(n)h
+-2(tabl)h
+-1(es:)h
+177 699(V)s
+-4(ersion)h
+16(pragma:)h
+177 1427(Recursion)s
+11(detection)h
+-1(:)h
+907 1526([T)s
+-4(arjan72])h
+177 1653(Once)s
+16(only)h
+16(macros:)h
+177 2169(T)s
+-4(ext)h
+23(inden)h
+-2(tati)h
+-1(on)h
+-1(:)h
+177 2785(Align)s
+15(table)h
+16(of)h
+17(con)h
+-1(ten)h
+-1(ts)h
+-1(:)h
+cmr10.300 sf
+177 42(IBM)s
+14(PC)h
+13(compatibles)h
+12(ma)h
+-1(y)h
+11(ha)h
+-1(v)h
+-1(e)h
+13(megab)h
+-1(ytes)h
+13(of)h
+13(mem)h
+-1(ory)h
+-3(,)h
+11(it)h
+12(is)h
+14(segmen)h
+-1(ted)h
+13(in)h
+-1(to)h
+12(blo)h
+1(c)h
+-1(ks)h
+14(of)h
+12(at)h
+13(most)h
+12(64K.)h
+177 91(This)s
+14(means)h
+13(that)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(curren)h
+-1(tly)h
+15(cannot)h
+14(read)h
+15(a)h
+13(\014le)h
+14(longer)h
+14(than)h
+14(64K)h
+13(on)h
+14(a)h
+13(PC.)h
+177 168(These)s
+16(problems)h
+13(could)h
+15(b)h
+1(e)h
+15(a)h
+-1(v)h
+-1(oided)h
+13(if)h
+14(the)h
+15(mapp)h
+1(er)h
+14(and)h
+14(scanner)h
+16(w)h
+-1(ere)h
+15(reorganized)h
+15(to)h
+14(allo)h
+-1(w)h
+13(input)h
+14(\014les)h
+177 218(to)s
+14(b)h
+1(e)h
+14(read)h
+15(in)h
+13(and)h
+14(stored)h
+15(as)h
+14(a)h
+13(link)h
+-1(ed)h
+14(list)h
+13(of)h
+13(c)h
+-1(h)h
+-1(unks)h
+15(of)h
+13(text)h
+14(rather)h
+15(than)h
+14(a)h
+14(con)h
+-1(tiguous)h
+13(blo)h
+1(c)h
+-1(k.)h
+632 295(F)s
+-3(unnelW)h
+-3(eb)h
+12(uses)h
+13(ASCI)h
+1(I)h
+13(c)h
+-1(haracter)h
+14(decimal)h
+11(ten)h
+13(\(10\))h
+12(in)h
+-1(ternally)h
+11(to)h
+12(represe)h
+1(n)h
+-1(t)h
+177 345(logical)s
+12(end-of-line)h
+12(and)h
+13(is)h
+13(curren)h
+-1(tly)h
+14(organized)h
+13(so)h
+13(that)h
+13(if)h
+13(one)h
+13(of)h
+13(these)h
+14(is)h
+13(inserted)h
+14(in)h
+-1(to)h
+13(the)h
+14(text)h
+13(b)h
+-1(y)h
+13(the)h
+177 395(user)s
+13(using)h
+11(a)h
+12(\\)h
+154(",)h
+9(it)h
+12(will)h
+10(b)h
+1(e)h
+12(written)h
+13(out)h
+11(as)h
+12(a)h
+11(logical)h
+10(end)h
+12(of)h
+12(line,)h
+11(rather)h
+12(than)h
+12(as)h
+12(a)h
+11(single)h
+12(ASCI)h
+1(I)h
+177 445(c)s
+-1(haracter)h
+15(10.)h
+18(This)h
+14(should)h
+13(b)h
+1(e)h
+15(\014xed.)h
+928 522(F)s
+-3(unnelW)h
+-3(eb)h
+14(allo)h
+-1(ws)h
+13(users)h
+16(to)h
+14(insert)h
+15(unprin)h
+-1(table)h
+14(c)h
+-1(haracters)h
+177 572(in)s
+-1(to)h
+16(the)h
+17(output)h
+16(using)h
+16(the)h
+17(\\)h
+176(")h
+14(sp)h
+1(ecial)h
+16(sequence.)h
+28(P)h
+-1(erhaps)h
+17(it)h
+16(w)h
+-1(ould)h
+15(b)h
+1(e)h
+17(c)h
+-1(hanged)h
+17(so)h
+16(that)h
+16(it)h
+177 622(understands)s
+16(ASCI)h
+1(I)h
+14(standard)h
+14(mnemoni)h
+-1(cs)h
+13(suc)h
+-1(h)h
+14(as)h
+14(\\)h
+44(")h
+13(as)h
+14(w)h
+-1(ell)h
+13(as)h
+14(ASCI)h
+1(I)h
+15(n)h
+-1(um)h
+-1(b)h
+1(ers.)h
+543 699(A)s
+16(\\)h
+154(")h
+14(pragma)h
+14(should)h
+15(b)h
+1(e)h
+17(added)h
+16(that)h
+16(allo)h
+-1(ws)h
+14(the)h
+17(user)h
+17(to)h
+15(sp)h
+1(ecify)h
+17(in)h
+15(the)h
+177 749(input)s
+15(\014le)h
+16(the)h
+16(v)h
+-1(ersion)h
+16(of)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+15(that)h
+16(w)h
+-1(as)h
+15(around)h
+16(when)h
+16(the)h
+16(input)h
+15(\014le)h
+15(w)h
+-1(as)h
+16(created.)h
+24(A)h
+-1(t)h
+16(a)h
+15(later)h
+177 799(date,)s
+15(suc)h
+-1(h)h
+16(a)h
+14(construct)h
+17(w)h
+-1(ould)h
+14(b)h
+1(e)h
+16(v)h
+-1(ery)h
+15(useful)h
+15(for)h
+14(determining)h
+14(ho)h
+-1(w)h
+15(an)h
+14(input)h
+15(\014le)h
+15(should)h
+15(b)h
+1(e)h
+15(up)h
+1(dated)h
+177 848(if)s
+13(the)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(language)h
+13(has)h
+14(c)h
+-1(hanged)h
+14(b)h
+1(et)h
+-1(w)h
+-1(een)h
+16(v)h
+-1(ersions.)h
+177 1138(There)s
+15(are)h
+15(no)h
+13(prop)h
+1(osals)h
+14(to)h
+14(c)h
+-1(hange)h
+14(the)h
+15(parser)h
+15(except)h
+15(as)h
+14(a)h
+13(consequence)h
+17(of)h
+13(other)h
+14(prop)h
+1(osals.)h
+621 1427(Curren)s
+-1(tly)h
+12(the)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+11(analyser)h
+12(\015ags,)h
+11(with)h
+12(an)h
+11(error,)h
+13(all)h
+11(macros)h
+11(with)h
+11(an)h
+177 1477(in\014nite)s
+11(expansion.)h
+17(This)h
+12(w)h
+-1(ould)h
+10(b)h
+1(e)h
+12(b)h
+1(est)h
+12(c)h
+-1(hanged)h
+12(to)h
+11(\015agging)h
+10(all)h
+10(macros)h
+11(that)h
+11(are)h
+12(directly)h
+12(or)h
+11(indirectly)h
+177 1526(recursiv)s
+-1(e.)h
+19(T)h
+-3(o)h
+11(do)h
+11(this,)h
+11(T)h
+-3(arjan's)h
+11(algorithm)h
+219(for)h
+12(the)h
+12(detection)h
+12(of)h
+11(strong)h
+12(comp)h
+1(onen)h
+-1(ts)h
+11(should)h
+177 1576(b)s
+1(e)h
+15(installed.)h
+585 1653(By)s
+15(default)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(prev)h
+-1(en)h
+-1(ts)h
+16(a)h
+15(macro)h
+13(from)h
+13(b)h
+1(eing)h
+14(called)h
+15(more)h
+13(than)h
+15(once)h
+177 1703(unless)s
+15(it)h
+13(has)h
+14(a)h
+13(\\)h
+44(")h
+13(asso)h
+1(ciated)h
+14(with)h
+14(it.)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(do)h
+1(es)h
+15(allo)h
+-1(w)h
+12(a)h
+13(macro)h
+13(that)h
+13(calls)h
+14(suc)h
+-1(h)h
+14(a)h
+177 1753(macro)s
+13(to)h
+14(b)h
+1(e)h
+14(called)h
+14(more)h
+13(than)h
+13(once.)h
+19(P)h
+-1(erhaps)h
+15(this)h
+14(\\lo)h
+1(ophole")h
+12(should)h
+14(b)h
+1(e)h
+15(plugged)h
+13(someho)h
+-1(w.)h
+177 2042(The)s
+12(T)h
+-3(angler)h
+11(is)h
+12(one)h
+12(of)h
+11(the)h
+13(cleanest)h
+13(comp)h
+1(onen)h
+-1(ts)h
+11(of)h
+11(F)h
+-3(unnelW)h
+-3(eb,)h
+11(as)h
+12(basically)h
+11(all)h
+10(it)h
+12(has)h
+12(to)h
+11(do)h
+12(is)h
+12(expand)h
+177 2092(some)s
+13(v)h
+-1(ery)h
+14(w)h
+-1(ell-de\014ned)h
+15(macros.)h
+576 2169(Curren)s
+-1(tly)h
+21(F)h
+-3(unnelW)h
+-3(eb)h
+19(supp)h
+1(orts)h
+313(and)h
+338(.)h
+38(A)h
+177 2219(third)s
+17(form)h
+14(could)h
+17(b)h
+1(e)h
+17(added)h
+17(if)h
+15(it)h
+16(w)h
+-1(as)h
+17(considered)h
+17(necess)h
+1(ary)h
+-3(.)h
+345(is)h
+16(the)h
+17(same)h
+16(as)h
+398 2269(except)s
+17(that)h
+15(instead)h
+15(of)h
+15(inden)h
+-1(ting)h
+14(with)h
+15(blanks,)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(w)h
+-1(ould)h
+14(inden)h
+-1(t)h
+16(with)h
+14(the)h
+16(text)h
+177 2319(to)s
+16(the)h
+17(left)h
+16(of)h
+16(the)h
+17(called)h
+16(macro.)h
+24(This)h
+16(facilit)h
+-1(y)h
+15(could)h
+16(b)h
+1(e)h
+17(useful)h
+16(for)h
+16(comm)h
+-1(en)h
+-1(ting)h
+14(out)h
+17(large)h
+16(b)h
+1(o)h
+1(dies)h
+16(of)h
+177 2369(text)s
+15(in)h
+14(languages)h
+15(that)h
+14(do)h
+15(not)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(m)h
+-1(ulti-l)h
+-1(ine)h
+13(comm)h
+-1(en)h
+-1(ts)h
+14(\(e.g.)h
+20(Ada\).)h
+20(A)h
+15(discussion)h
+15(of)h
+14(the)h
+15(pros)h
+15(and)h
+177 2418(cons)s
+15(of)h
+13(this)h
+14(form)h
+12(of)h
+13(inden)h
+-1(tation)h
+14(app)h
+1(ears)h
+14(earlier.)h
+177 2708(P)s
+-1(erhaps)h
+15(F)h
+-3(unnelW)h
+-3(eb's)h
+13(w)h
+-1(eak)h
+-1(est)h
+15(asp)h
+1(ect)h
+15(is)h
+14(its)h
+14(t)h
+-1(yp)h
+1(esetting)h
+15(facilit)h
+-1(y)h
+-3(.)h
+692 2785(When)s
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(generates)h
+17(a)h
+15(table)h
+15(of)h
+15(con)h
+-1(ten)h
+-1(ts,)h
+16(the)h
+15(section)h
+16(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+177 2835(are)s
+14(not)h
+14(quite)h
+14(aligned)h
+13(with)h
+14(the)h
+14(start)h
+15(of)h
+13(the)h
+14(con)h
+-1(trolling)h
+13(heading)h
+14(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+13(them.)h
+1042 2940(45)s
+46 @eop
+47 @bop0
+cmti10.300 sf
+[<000F8400304C00403C0080180100180300180300180600100600100600000700000700
+0003E00003FC0001FF00007F800007C00001C00001C00000C00000C02000C02000C06001
+80600180600300600200F00400CC180083E000>
+24 30 -3 28 23] 83 dc
+cmbx10.300 sf
+[<0003800000038000000380000003800000038000000380000003800000038000000380
+000003800000038000000380000003800000038000FFFFFFFCFFFFFFFCFFFFFFFC000380
+000003800000038000000380000003800000038000000380000003800000038000000380
+0000038000000380000003800000038000>
+32 31 -3 25 37] 43 dc
+47 @bop1
+cmsy10.300 sf
+1116 1406(f)s
+165(g)h
+cmbx10.432 sf
+177 2610(4.10)s
+70(Lister)h
+cmtt10.300 sf
+405 1095(@^\(num\))s
+1343 1176(@+)s
+1094 1406(@)s
+164(@)h
+687 1456(@[)s
+147(@])h
+1685 1587(tt)s
+22(font)h
+cmti10.300 sf
+919 503(F)s
+-3(unnelWeb)h
+19(macr)h
+-2(os)h
+276 2048(gener)s
+-2(ate)h
+877(Spider)h
+177 2098(Spider)s
+1047 2148(Spider)s
+cmbx10.300 sf
+177 42(T)s
+-1(yp)h
+1(esetting)h
+20(strength)h
+-1(:)h
+177 222(T)s
+-1(yp)h
+1(eset)h
+12(a)h
+13(p)h
+1(ortion)h
+-1(:)h
+177 403(Generic)s
+14(t)h
+-1(yp)h
+1(esetter)h
+13(option)h
+-1(:)h
+177 683(Suppress)s
+-1(ion)h
+15(of)h
+18(includ)h
+-1(e)h
+16(\014les:)h
+177 914(Cross)s
+14(reference)h
+12(of)h
+14(iden)h
+-1(t)h
+-1(i)h
+-1(\014ers)h
+-1(:)h
+177 1045(Supp)s
+1(ort)h
+18(for)h
+19(non-pri)h
+-1(n)h
+-2(tab)h
+-1(les)h
+-1(:)h
+177 1176(Supp)s
+1(ort)h
+14(for)h
+16(@+)h
+17(sequences:)h
+177 1306(T)s
+-1(yp)h
+1(eset)h
+11(text)h
+12(in)h
+11(macro)h
+12(b)h
+1(o)h
+1(dies:)h
+177 1587(Non-tt)s
+14(t)h
+-1(yp)h
+1(esettin)h
+-1(g:)h
+1559 2048([Ramsey89])s
+177 2735(Glue)s
+17(factor:)h
+cmr10.300 sf
+665 42(It)s
+20(should)h
+20(b)h
+1(e)h
+20(p)h
+1(ossible)h
+20(to)h
+19(sp)h
+1(ecify)h
+20(the)h
+20(lev)h
+-1(el)h
+20(of)h
+19(t)h
+-1(yp)h
+1(esetting)h
+20(strength)h
+21(for)h
+177 91(headings)s
+16(so)h
+16(that)h
+17(short)h
+16(do)h
+1(cumen)h
+-1(ts)h
+16(do)h
+16(not)h
+16(lo)h
+1(ok)h
+15(o)h
+-1(v)h
+-1(erdone)h
+16(when)h
+17(t)h
+-1(yp)h
+1(eset.)h
+26(A)h
+16(new)h
+17(pragma)h
+14(w)h
+-1(ould)h
+15(b)h
+1(e)h
+177 141(go)s
+1(o)h
+1(d)h
+14(for)h
+13(this.)h
+576 222(Sometim)s
+-1(es)h
+10(it)h
+11(is)h
+11(desirable)h
+11(to)h
+11(t)h
+-1(yp)h
+1(eset)h
+13(just)h
+11(a)h
+11(p)h
+1(ortion)h
+11(of)h
+10(a)h
+11(program.)h
+15(A)h
+12(comm)h
+-1(and)h
+177 272(line)s
+12(option)h
+11(could)h
+12(b)h
+1(e)h
+12(added)h
+12(to)h
+12(do)h
+12(this.)h
+17(The)h
+13(option)h
+11(could)h
+11(accept)h
+14(as)h
+12(its)h
+12(argumen)h
+-1(t,)h
+10(a)h
+12(string)h
+12(con)h
+-1(taining)h
+177 322(a)s
+14(list)h
+13(of)h
+13(section)h
+15(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+14(or)h
+13(heading)h
+14(names.)h
+746 403(In)s
+14(addition)h
+12(to)h
+14(building)h
+12(in)h
+13(a)h
+13(n)h
+-1(um)h
+-1(b)h
+1(er)h
+13(of)h
+13(di\013eren)h
+-1(t)h
+15(v)h
+-1(ersions)h
+14(of)h
+13(W)h
+-3(ea)h
+-1(v)h
+-1(e,)h
+177 453(one)s
+17(for)h
+17(eac)h
+-1(h)h
+17(p)h
+1(opular)h
+17(t)h
+-1(yp)h
+1(esetter,)h
+19(it)h
+17(w)h
+-1(ould)h
+16(b)h
+1(e)h
+17(p)h
+1(ossible)h
+17(to)h
+17(add)h
+17(a)h
+16(sp)h
+1(ecial)h
+17(generic)h
+18(format)h
+15(where)h
+18(the)h
+177 503(t)s
+-1(yp)h
+1(eset)h
+19(output)h
+17(is)h
+17(expressed)h
+19(in)h
+17(terms)h
+17(of)h
+364(.)h
+27(The)h
+18(user)h
+18(could)h
+17(then)h
+17(sp)h
+1(ecify)h
+18(macro)h
+177 552(de\014nitions)s
+13(for)h
+13(a)h
+12(non-supp)h
+1(orted)h
+14(t)h
+-1(yp)h
+1(esette)h
+1(r)h
+15(and)h
+13(run)h
+13(the)h
+13(output)h
+14(through)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(T)h
+-3(angle)h
+12(to)h
+13(get)h
+13(a)h
+177 602(t)s
+-1(yp)h
+1(eset)h
+16(\014le)h
+13(in)h
+14(a)h
+13(format)h
+12(suitable)h
+14(for)h
+14(the)h
+14(unsupp)h
+1(orted)h
+16(t)h
+-1(yp)h
+1(esetter.)h
+784 683(It)s
+16(should)h
+16(b)h
+1(e)h
+16(p)h
+1(ossible)h
+17(to)h
+15(sp)h
+1(ecify)h
+17(in)h
+15(the)h
+17(input)h
+15(\014le)h
+16(that)h
+16(particular)h
+177 733(included)s
+14(\014les)h
+14(not)h
+13(app)h
+1(ear)h
+14(in)h
+13(the)h
+14(t)h
+-1(yp)h
+1(eset)h
+15(output.)h
+18(Curren)h
+-1(tly)h
+-3(,)h
+13(the)h
+14(fact)h
+13(that)h
+13(an)h
+14(inclusion)h
+12(has)h
+14(o)h
+1(ccurred)h
+177 783(is)s
+15(not)h
+16(ev)h
+-1(en)h
+16(represen)h
+-1(ted)h
+18(in)h
+15(the)h
+16(t)h
+-1(yp)h
+1(eset)h
+16(output.)h
+23(Suppression)h
+16(of)h
+15(inclusions)h
+15(is)h
+15(particularly)h
+15(necessary)h
+177 833(where)s
+15(a)h
+14(library)h
+13(of)h
+13(macros)h
+13(has)h
+14(b)h
+1(een)h
+15(included)h
+14(at)h
+14(the)h
+15(top)h
+13(of)h
+14(eac)h
+-1(h)h
+14(of)h
+13(a)h
+14(group)h
+14(of)h
+13(source)h
+15(\014les.)h
+799 914(WEB)s
+13(pro)h
+-1(vides)h
+12(a)h
+12(list)h
+12(of)h
+12(iden)h
+-1(ti\014ers)h
+13(and)h
+12(a)h
+12(list)h
+12(of)h
+12(all)h
+11(the)h
+13(de\014nitions)h
+177 964(in)s
+14(whic)h
+-1(h)h
+13(they)h
+15(are)h
+14(used.)h
+19(A)h
+14(simila)h
+-1(r)h
+12(feature)h
+15(could)h
+14(b)h
+1(e)h
+14(added)h
+14(to)h
+14(F)h
+-3(unnelW)h
+-3(eb.)h
+783 1045(Curren)s
+-1(tly)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(do)h
+1(es)h
+18(not)h
+17(pro)h
+-1(vide)h
+18(supp)h
+1(ort)h
+18(for)h
+17(t)h
+-1(yp)h
+1(esetting)h
+177 1095(the)s
+15(sp)h
+1(ecial)h
+14(\\)h
+154(")h
+12(sequences.)h
+20(This)h
+14(should)h
+14(b)h
+1(e)h
+14(added.)h
+765 1176(Curren)s
+-1(tly)h
+15(W)h
+-3(ea)h
+-1(v)h
+-1(e)h
+14(do)h
+1(es)h
+15(not)h
+14(see)h
+16(\\)h
+44(")h
+14(sequences)h
+17(as)h
+14(suc)h
+-1(h.)h
+21(Instead)h
+15(it)h
+177 1225(p)s
+1(erceiv)h
+-1(es)h
+16(them)h
+13(as)h
+14(ordinary)h
+13(EOLs.)h
+19(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(there)h
+15(are)h
+15(argumen)h
+-1(ts)h
+13(for)h
+13(t)h
+-1(yp)h
+1(esetting)h
+15(them)h
+13(sp)h
+1(ecially)h
+-3(.)h
+807 1306(One)s
+12(of)h
+10(the)h
+11(m)h
+-1(uc)h
+-1(h-lo)h
+-1(v)h
+-1(ed)h
+9(features)h
+11(of)h
+10(WEB)h
+11(is)h
+11(the)h
+11(w)h
+-1(a)h
+-1(y)h
+10(that)h
+11(it)h
+10(allo)h
+-1(ws)h
+177 1356(the)s
+13(user)h
+14(to)h
+12(switc)h
+-1(h)h
+13(recursiv)h
+-1(ely)h
+13(b)h
+1(et)h
+-1(w)h
+-1(een)h
+14(do)h
+1(cumen)h
+-1(t)h
+12(and)h
+12(program)h
+11(formats.)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+12(do)h
+1(es)h
+13(not)h
+12(allo)h
+-1(w)h
+177 1406(this,)s
+18(but)h
+18(should.)h
+29(In)h
+17(F)h
+-3(unnelW)h
+-3(eb,)h
+18(the)h
+18(delimiters)h
+17(\\)h
+43(")h
+16(and)h
+18(\\)h
+43(")h
+16(are)h
+18(already)h
+17(used)h
+19(consisten)h
+-1(tly)h
+18(to)h
+177 1456(delimit)s
+18(macro)h
+18(text.)h
+37(The)h
+20(\\)h
+44(")h
+19(and)h
+19(\\)h
+44(")h
+19(sequences)h
+22(ha)h
+-1(v)h
+-1(e)h
+20(b)h
+1(een)h
+21(reserv)h
+-1(ed)h
+22(for)h
+19(the)h
+21(delimi)h
+-1(tation)h
+17(of)h
+177 1506(do)s
+1(cumen)h
+-1(tation)h
+13(text.)h
+599 1587(The)s
+13(curren)h
+-1(t)h
+15(v)h
+-1(ersion)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(sets)h
+15(all)h
+12(its)h
+13(macro)h
+12(text)h
+14(in)h
+167(.)h
+17(This)h
+177 1637(is)s
+14(b)h
+1(oth)h
+14(a)h
+13(blessing)h
+14(and)h
+14(a)h
+14(curse.)h
+19(It)h
+14(is)h
+14(a)h
+13(blessing)h
+14(b)h
+1(ecause)h
+16(it)h
+13(connects)h
+16(the)h
+14(reader)h
+15(directly)h
+14(to)h
+14(the)h
+14(co)h
+1(de,)h
+177 1686(with)s
+14(no)h
+14(complicated)h
+13(in)h
+-1(termediary)h
+-3(.)h
+17(It)h
+14(is)h
+14(a)h
+14(curse)h
+16(b)h
+1(ecause)h
+16(it)h
+14(lo)h
+1(oks)h
+13(ugly)h
+14(compared)h
+13(to)h
+14(the)h
+15(b)h
+1(eautifully)h
+177 1736(t)s
+-1(yp)h
+1(eset)h
+16(programs)h
+12(pro)h
+1(duced)h
+15(b)h
+-1(y)h
+14(other)h
+14(literate)h
+15(programm)h
+-1(i)h
+-1(ng)h
+12(to)h
+1(ols.)h
+177 1817(The)s
+20(di\016cult)h
+-1(y)h
+18(with)h
+18(adding)h
+18(suc)h
+-1(h)h
+20(b)h
+1(eautiful)h
+18(t)h
+-1(yp)h
+1(esetting)h
+20(is)h
+19(that)h
+19(it)h
+19(is)h
+19(necessarily)h
+20(language-sp)h
+1(eci\014c.)h
+177 1867(Keyw)s
+-1(ords)h
+15(and)h
+14(syn)h
+-1(tax)h
+14(di\013er)h
+14(from)h
+12(language)h
+14(to)h
+13(language)h
+13(and)h
+14(it)h
+14(w)h
+-1(ould)h
+13(not)h
+14(b)h
+1(e)h
+15(easy)h
+14(to)h
+14(come)h
+13(up)h
+14(with)h
+177 1917(a)s
+14(set)h
+15(of)h
+13(language)h
+13(indep)h
+1(enden)h
+-1(t)h
+15(rules.)h
+177 1998(One)s
+19(approac)h
+-1(h)h
+19(is)h
+18(to)h
+18(write)h
+18(a)h
+19(set)h
+19(of)h
+17(W)h
+-3(ea)h
+-1(v)h
+-1(e)h
+18(bac)h
+-1(k-ends,)h
+20(one)h
+18(for)h
+18(eac)h
+-1(h)h
+19(language.)h
+31(Another)h
+19(approac)h
+-1(h)h
+177 2048(is)s
+17(to)h
+183(bac)h
+-1(k)h
+17(ends.)h
+28(This)h
+17(is)h
+17(the)h
+17(approac)h
+-1(h)h
+17(tak)h
+-1(en)h
+17(in)h
+16(the)h
+150(system)h
+239(.)h
+26(In)h
+17(the)h
+308 2098(system,)s
+16(the)h
+17(programm)h
+-1(er)h
+15(writes)h
+16(pro)h
+1(duction)h
+17(rules)h
+16(for)h
+16(con)h
+-1(v)h
+-1(erting)h
+16(lexical)h
+15(comp)h
+1(onen)h
+-1(ts)h
+16(of)h
+15(the)h
+177 2148(program)s
+14(text)h
+15(in)h
+-1(to)h
+15(t)h
+-1(yp)h
+1(esetter)h
+17(instructions.)h
+22(The)h
+146(program)h
+13(reads)h
+16(these)h
+17(rules)h
+15(and)h
+15(generates)h
+17(a)h
+177 2197(new)s
+14(v)h
+-1(ersion)h
+15(of)h
+13(WEB)h
+14(suited)h
+14(for)h
+14(the)h
+14(target)h
+15(language.)h
+177 2278(F)s
+-3(or)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+18(a)h
+18(sligh)h
+-1(tly)h
+17(di\013eren)h
+-1(t)h
+20(system)h
+18(is)h
+18(prop)h
+1(osed)h
+20(in)h
+18(whic)h
+-1(h)h
+18(Spider-lik)h
+-1(e)h
+18(rules)h
+19(app)h
+1(ear)h
+19(in)h
+18(the)h
+177 2328(input)s
+16(\014le)h
+17(and)h
+16(are)h
+17(used)h
+18(directly)h
+16(b)h
+-1(y)h
+17(W)h
+-3(ea)h
+-1(v)h
+-1(e)h
+16(to)h
+16(p)h
+1(erform)h
+16(the)h
+17(t)h
+-1(yp)h
+1(esetting.)h
+27(An)h
+16(in)h
+-1(termediate)h
+16(abstract)h
+177 2378(t)s
+-1(yp)h
+1(esetting)h
+13(language)h
+11(could)h
+12(b)h
+1(e)h
+13(used)h
+13(so)h
+12(that)h
+12(the)h
+13(pro)h
+1(ductions)h
+12(can)h
+13(b)h
+1(e)h
+12(made)h
+11(language)h
+11(sp)h
+1(eci\014c,)h
+14(but)h
+12(not)h
+177 2428(t)s
+-1(yp)h
+1(esetter)h
+16(sp)h
+1(eci\014c.)h
+453 2735(A)s
+16(glue)h
+16(factor)h
+16(could)h
+16(b)h
+1(e)h
+17(added)h
+17(that)h
+16(determines)h
+17(ho)h
+-1(w)h
+16(man)h
+-1(y)h
+14(lines)h
+16(can)h
+17(b)h
+1(e)h
+17(in)h
+15(b)h
+1(et)h
+-1(w)h
+-1(een)h
+177 2785(t)s
+-1(w)h
+-1(o)h
+14(diagnostics)h
+14(in)h
+13(the)h
+15(listing)h
+13(b)h
+1(efore)h
+15(the)h
+14(t)h
+-1(w)h
+-1(o)h
+14(groups)h
+14(of)h
+14(lines)h
+14(are)h
+14(joined)h
+14(together)h
+15(in)h
+13(the)h
+15(listing)h
+13(with)h
+177 2835(no)s
+14(in)h
+-1(terv)h
+-1(ening)h
+14(ellipsis.)h
+1042 2940(46)s
+47 @eop
+48 @bop0
+48 @bop1
+cmsy10.300 sf
+239 1452(\017)s
+239 1535(\017)s
+239 1618(\017)s
+239 1701(\017)s
+cmbx10.432 sf
+177 42(4.11)s
+70(Diagnostics)h
+177 594(4.12)s
+70(Sp)h
+2(eed)h
+177 1170(4.13)s
+70(Correctness)h
+177 2104(4.14)s
+70(T)h
+-6(est)h
+22(Suite)h
+cmbx10.300 sf
+177 157(Advisory)s
+16(informati)h
+-1(on)h
+-1(:)h
+177 382(Ab)s
+1(ort)h
+15(after)h
+14(n)h
+15(errors:)h
+177 709(Measuremen)s
+-1(t)h
+11(of)h
+13(sp)h
+1(eed:)h
+177 834(Find)s
+19(the)h
+20(hot)h
+19(sp)h
+1(ots:)h
+177 958(Change)s
+17(some)h
+16(declaration)h
+-1(s:)h
+177 1286(Bounds)s
+17(analysis:)h
+177 1892(Stac)s
+-1(k)h
+18(detection)h
+-1(:)h
+cmtt10.300 sf
+177 2337(Lister)s
+177 2386(------)s
+243 2436(LR01:)s
+20(Test)h
+21(with)h
+21(a)h
+22(full)h
+21(listing)h
+20(with)h
+21(no)h
+21(diagnostics.)h
+243 2486(LR02:)s
+20(Test)h
+21(with)h
+21(a)h
+22(full)h
+21(listing)h
+20(with)h
+21(diagnostics.)h
+243 2536(LR03:)s
+20(Test)h
+21(with)h
+21(an)h
+22(abbreviated)h
+19(listing)h
+20(with)h
+21(no)h
+22(diagnostics.)h
+243 2586(LR04:)s
+20(Test)h
+21(with)h
+21(an)h
+22(abbreviated)h
+19(listing)h
+20(with)h
+21(diagnostics.)h
+243 2635(LR05:)s
+20(Test)h
+21(error)h
+21(context)h
+20(system)h
+21(with)h
+21(nearby)h
+20(diagnostics.)h
+177 2735(Boundary)s
+20(Cases)h
+177 2785(-------------)s
+-1(-)h
+177 2835(Static)s
+21(analysis)h
+20(might)h
+21(preclude)h
+20(the)h
+21(need)h
+21(for)h
+21(most)h
+21(of)h
+21(these)h
+21(tests.)h
+cmr10.300 sf
+661 157(Some)s
+13(of)h
+15(F)h
+-3(unnelW)h
+-3(eb's)h
+15(diagnostics)h
+14(pro)h
+-1(vide)h
+15(a)h
+15(detailed)h
+15(explanatory)h
+15(para-)h
+177 207(graph.)s
+17(While)h
+11(this)h
+12(informa)h
+-1(tion)h
+9(migh)h
+-1(t)h
+10(b)h
+1(e)h
+12(useful)h
+12(the)h
+12(\014rst)h
+12(time,)h
+11(it)h
+11(has)h
+12(the)h
+12(capacit)h
+-1(y)h
+11(to)h
+12(clog)h
+11(up)h
+12(a)h
+11(listing)h
+177 257(\014le)s
+15(if)h
+14(the)h
+15(user)h
+16(has)h
+15(made)h
+14(the)h
+15(same)h
+14(error)h
+16(man)h
+-1(y)h
+13(times.)h
+20(T)h
+-3(o)h
+14(solv)h
+-1(e)h
+14(this)h
+15(problem,)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+15(could)h
+14(b)h
+1(e)h
+177 307(mo)s
+1(di\014ed)h
+13(so)h
+14(that)h
+14(suc)h
+-1(h)h
+14(explanations)h
+13(are)h
+15(only)h
+13(displa)h
+-1(y)h
+-1(ed)h
+13(the)h
+15(\014rst)h
+14(time)h
+13(the)h
+14(error)h
+15(o)h
+1(ccurs.)h
+629 382(A)s
+14(facilit)h
+-1(y)h
+12(could)h
+13(b)h
+1(e)h
+14(added)h
+14(to)h
+13(prev)h
+-1(en)h
+-1(t)h
+15(F)h
+-3(unnelW)h
+-3(eb's)h
+13(scanning,)h
+13(parsing,)h
+13(and)h
+177 431(analysing)s
+13(phases)h
+15(from)h
+12(con)h
+-1(tin)h
+-1(uing)h
+13(if)h
+13(a)h
+13(certain)h
+15(n)h
+-1(um)h
+-1(b)h
+1(er)h
+13(of)h
+13(errors)h
+15(ha)h
+-1(v)h
+-1(e)h
+14(already)h
+14(b)h
+1(een)h
+15(issued.)h
+673 709(Although)s
+11(F)h
+-3(unnelW)h
+-3(eb)h
+11(can)h
+12(generate)h
+13(a)h
+11(breakdo)h
+-1(wn)h
+12(of)h
+11(where)h
+13(it)h
+11(is)h
+11(sp)h
+1(ending)h
+177 759(its)s
+14(time,)h
+12(it)h
+14(do)h
+1(es)h
+14(not)h
+14(giv)h
+-1(e)h
+13(a)h
+14(\014nal)h
+13(rating)h
+14(in)h
+13(lines)h
+14(p)h
+1(er)h
+15(min)h
+-1(ute.)h
+16(This)h
+14(should)h
+14(b)h
+1(e)h
+14(added.)h
+619 834(Although)s
+17(F)h
+-3(unnelW)h
+-3(eb)h
+18(has)h
+18(b)h
+1(een)h
+19(designed)h
+19(to)h
+17(allo)h
+-1(w)h
+17(high)h
+17(sp)h
+1(eed,)h
+20(not)h
+18(m)h
+-1(uc)h
+-1(h)h
+177 884(e\013ort)s
+15(has)h
+14(so)h
+14(far)h
+13(b)h
+1(een)h
+15(made)h
+13(to)h
+14(mak)h
+-1(e)h
+12(it)h
+14(fast.)h
+18(This)h
+13(should)h
+14(b)h
+1(e)h
+15(done.)h
+756 958(F)s
+-3(unnelW)h
+-3(eb)h
+14(is)h
+14(full)h
+14(of)h
+14(v)h
+-2(ariable)h
+14(declarations)h
+15(where)h
+16(the)h
+15(v)h
+-2(ariables)h
+14(are)h
+177 1008(wider)s
+14(than)h
+14(they)h
+15(need)h
+14(b)h
+1(e.)h
+19(Replacing)h
+13(these)h
+15(migh)h
+-1(t)h
+12(sp)h
+1(eed)h
+16(it)h
+13(up.)h
+552 1286(Not)s
+16(m)h
+-1(uc)h
+-1(h)h
+15(e\013ort)h
+18(has)h
+16(gone)h
+17(in)h
+-1(to)h
+16(the)h
+17(design)h
+17(of)h
+16(F)h
+-3(unnelW)h
+-3(eb's)h
+15(input)h
+17(b)h
+1(oundaries.)h
+177 1336(An)s
+12(analysis)h
+11(should)h
+11(b)h
+1(e)h
+12(made)h
+11(of)h
+11(F)h
+-3(unnelW)h
+-3(eb's)h
+11(b)h
+1(eha)h
+-1(viour)h
+11(when)h
+12(the)h
+13(follo)h
+-1(wi)h
+-1(ng)h
+10(quan)h
+-1(tities)h
+11(are)h
+12(stretc)h
+-1(hed:)h
+281 1452(Input)s
+14(line)h
+14(length.)h
+281 1535(Input)s
+14(\014le)h
+14(size.)h
+281 1618(Num)s
+-1(b)h
+1(er)h
+13(of)h
+14(macros.)h
+281 1701(Length)s
+14(of)h
+13(macro.)h
+177 1818(In)s
+14(particular,)h
+13(F)h
+-3(unnelW)h
+-3(eb's)h
+13(b)h
+1(eha)h
+-1(viour)h
+14(at)h
+14(32K)h
+14(and)h
+13(64K)h
+14(b)h
+1(oundaries)h
+14(should)h
+14(b)h
+1(e)h
+14(observ)h
+-1(ed.)h
+537 1892(Macin)s
+-1(tosh)h
+16(THINK-C)h
+16(pro)h
+-1(vides)h
+16(just)h
+17(6K)h
+16(of)h
+15(memo)h
+-1(ry)h
+14(for)h
+16(the)h
+17(stac)h
+-1(k.)h
+24(It)h
+16(migh)h
+-1(t)h
+14(b)h
+1(e)h
+177 1942(w)s
+-1(orth)h
+14(adding)h
+13(c)h
+-1(hec)h
+-1(ks)h
+15(to)h
+14(mak)h
+-1(e)h
+12(sure)h
+15(that)h
+14(the)h
+15(stac)h
+-1(k)h
+14(is)h
+14(not)h
+14(b)h
+1(eing)h
+14(blo)h
+-1(wn.)h
+177 2220(The)s
+14(follo)h
+-1(wing)h
+12(tests)h
+15(should)h
+14(b)h
+1(e)h
+14(added)h
+14(to)h
+14(the)h
+15(test)h
+15(suite:)h
+1042 2940(47)s
+48 @eop
+49 @bop0
+cmbx10.432 sf
+[<0001FF0000001FFFC000007F80F00000FE00F80003FC01FC0003F803FC0007F003FC00
+07F003FC0007F003FC0007F001F80007F000F00007F000000007F000000007F000000007
+F0000000FFFFFFFC00FFFFFFFC00FFFFFFFC0007F001FC0007F001FC0007F001FC0007F0
+01FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001
+FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC
+0007F001FC0007F001FC0007F001FC007FFF1FFFC07FFF1FFFC07FFF1FFFC0>
+40 42 -1 41 38] 12 dc
+49 @bop1
+cmbx10.300 sf
+177 967(Icon)s
+14(for)h
+14(the)h
+13(Macin)h
+-1(tosh:)h
+cmbx10.432 sf
+177 851(4.15)s
+70(Mac)h
+-2(hine-Sp)h
+2(eci\014c)h
+20(Changes)h
+177 1179(4.16)s
+70(Summ)h
+-3(ary)h
+cmr10.300 sf
+682 967(Curren)s
+-1(tly)h
+13(no)h
+13(icon)h
+12(is)h
+12(supplied)h
+13(for)h
+12(the)h
+14(Macin)h
+-1(tosh)h
+12(v)h
+-1(ersion)h
+13(of)h
+12(F)h
+-3(unnelW)h
+-3(eb.)h
+177 1017(An)s
+14(icon)h
+14(depicting)h
+14(a)h
+13(spider)h
+15(or)h
+14(a)h
+13(funnelled)h
+14(w)h
+-1(eb)h
+14(of)h
+14(some)h
+13(kind)h
+13(w)h
+-1(ould)h
+13(seem)h
+14(appropriate.)h
+177 1295(This)s
+15(c)h
+-1(hapter)h
+17(has)h
+15(describ)h
+1(es)h
+17(some)h
+15(of)h
+14(the)h
+16(problems)h
+15(with)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(and)h
+16(some)h
+14(of)h
+15(the)h
+15(opp)h
+1(ortunities)h
+177 1345(that)s
+13(exist)h
+14(for)h
+13(impro)h
+-1(vi)h
+-1(ng)h
+12(it.)h
+17(The)h
+14(direction)h
+13(and)h
+13(sp)h
+1(eed)h
+15(in)h
+13(whic)h
+-1(h)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(will)h
+11(dev)h
+-1(elop)h
+14(will)h
+12(dep)h
+1(end)h
+177 1395(largely)s
+15(on)h
+16(user)h
+17(feedbac)h
+-1(k.)h
+25(If)h
+15(y)h
+-1(ou)h
+16(ha)h
+-1(v)h
+-1(e)h
+15(an)h
+-1(y)h
+16(strong)h
+16(feelings)h
+16(on)h
+16(where)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+15(should)h
+16(go,)h
+15(please)h
+177 1444(email)s
+12(them)h
+13(to)h
+14(Ross)h
+14(Willi)h
+-1(am)h
+-1(s)h
+12(\()h
+547(\).)h
+1042 2940(48)s
+cmtt10.300 sf
+243 42(BC01:)s
+20(Test)h
+21(what)h
+21(happens)h
+21(when)h
+21(memory)h
+20(runs)h
+21(out.)h
+243 91(BC02:)s
+20(Test)h
+21(on)h
+22(a)h
+21(file)h
+21(with)h
+21(a)h
+22(single)h
+20(line)h
+21(of)h
+22(a)h
+21(megabyte.)h
+243 141(BC03:)s
+20(Test)h
+21(on)h
+22(a)h
+21(file)h
+21(of)h
+22(a)h
+21(megabyte)h
+20(of)h
+22(EOLs.)h
+243 191(BC04:)s
+20(Generate)h
+20(an)h
+22(output)h
+20(file)h
+21(with)h
+21(an)h
+22(extremely)h
+20(long)h
+21(line.)h
+243 241(BC05:)s
+20(Generate)h
+20(an)h
+22(output)h
+20(file)h
+21(with)h
+21(one)h
+21(million)h
+21(lines.)h
+243 291(BC06:)s
+20(Test)h
+21(on)h
+22(a)h
+21(file)h
+21(with)h
+21(very)h
+21(many)h
+21(macros.)h
+177 390(General)s
+177 440(-------)s
+243 490(GN01:)s
+20(A)h
+22(large)h
+21(legal)h
+20(input)h
+21(file)h
+21(exercising)h
+20(as)h
+21(many)h
+21(features)h
+20(as)h
+22(possible.)h
+373 540(1.)s
+22(Test)h
+21(listing)h
+20(file.)h
+373 589(2.)s
+22(Test)h
+21(output)h
+20(files.)h
+373 639(3.)s
+22(Test)h
+21(typeset)h
+20(file.)h
+243 689(GN...)s
+20(A)h
+22(selection)h
+20(of)h
+21(ten)h
+21(real-life)h
+20(FunnelWeb)h
+20(files.)h
+733 1444(ross@spam.ade)s
+-1(laide)h
+-1(.edu.)h
+-1(au)h
+49 @eop
+50 @bop0
+cmbx10.622 sf
+[<00000001F80000000000000001F80000000000000003FC0000000000000003FC000000
+0000000007FE0000000000000007FE0000000000000007FE000000000000000FFF000000
+000000000FFF000000000000001FFF800000000000001FFF800000000000001FFF800000
+000000003FFFC00000000000003FFFC00000000000007FFFE00000000000007DFFE00000
+000000007DFFE0000000000000FDFFF0000000000000F8FFF0000000000001F8FFF80000
+00000001F07FF8000000000001F07FF8000000000003F07FFC000000000003E03FFC0000
+00000007E03FFE000000000007C01FFE00000000000FC01FFF00000000000F801FFF0000
+0000000F800FFF00000000001F800FFF80000000001F0007FF80000000003F0007FFC000
+0000003E0003FFC0000000003E0003FFC0000000007E0003FFE0000000007C0001FFE000
+000000FC0001FFF000000000F80000FFF000000000F80000FFF000000001FFFFFFFFF800
+000001FFFFFFFFF800000003FFFFFFFFFC00000003FFFFFFFFFC00000003E000003FFC00
+000007E000003FFE00000007C000001FFE0000000FC000001FFF0000000F8000000FFF00
+00001F8000000FFF8000001F0000000FFF8000001F00000007FF8000003F00000007FFC0
+00003E00000003FFC000007E00000003FFE00000FF00000001FFE000FFFFFC0001FFFFFF
+F0FFFFFC0001FFFFFFF0FFFFFC0001FFFFFFF0FFFFFC0001FFFFFFF0>
+72 59 -3 58 75] 65 dc
+[<00FE007FC000FFFE01FFF800FFFE07FFFE00FFFE1F03FF00FFFE3C01FF0007FE7801FF
+8003FE7000FF8003FEE000FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFF
+FFFFFFFC3FFFFFFFFFFC3FFFFF>
+48 38 -4 37 55] 110 dc
+[<000000003FC00000003FFFC00000003FFFC00000003FFFC00000003FFFC000000001FF
+C000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FF
+C000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FF
+C000000000FFC000000000FFC000000000FFC000000000FFC00000FFC0FFC0000FFFF8FF
+C0003FFFFEFFC000FFE03FFFC001FF000FFFC007FE0003FFC00FFC0001FFC00FF80000FF
+C01FF80000FFC03FF00000FFC03FF00000FFC07FF00000FFC07FE00000FFC07FE00000FF
+C0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FF
+C0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC07FE00000FFC07FE00000FF
+C07FF00000FFC03FF00000FFC03FF00000FFC01FF00000FFC01FF80001FFC00FFC0003FF
+C007FC0007FFC003FF001FFFE000FFC07EFFFF003FFFFCFFFF000FFFF0FFFF0001FF80FF
+FF>
+48 60 -3 59 55] 100 dc
+[<00F00003FC0007FE000FFE000FFF001FFF001FFF001FFF000FFF000FFE0007FE0003FC
+0000F00000000000000000000000000000000000000000000000000000000000000000FF
+00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF
+0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF
+0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00FFFFF8FFFFF8FFFF
+F8FFFFF8>
+24 61 -3 60 27] 105 dc
+[<FFFFF007FFFCFFFFF007FFFCFFFFF007FFFCFFFFF007FFFC01FF8000FC0000FFC000F8
+0000FFE001F000007FF003E000003FF007C000001FF80FC000000FFC1F8000000FFE1F00
+000007FF3E00000003FFFC00000001FFF800000000FFF0000000007FE0000000007FF000
+0000003FF8000000001FF8000000001FFC000000003FFE000000007FFF00000000FBFF80
+000001F9FF80000003F0FFC0000003E07FE0000007C07FF000000F803FF800001F001FFC
+00003E000FFC00007C0007FE0000FC0003FF0001FC0003FF80FFFF801FFFFEFFFF801FFF
+FEFFFF801FFFFEFFFF801FFFFE>
+48 38 -2 37 52] 120 dc
+cmbx10.746 sf
+[<000000003FFE00000E000000000FFFFFC0001E000000007FFFFFF8003E00000003FFFF
+FFFE00FE0000000FFFFFFFFF81FE0000003FFFF800FFC3FE000000FFFF80000FF7FE0000
+01FFFC000003FFFE000007FFF0000001FFFE00000FFFC00000007FFE00001FFF80000000
+3FFE00003FFF000000001FFE00007FFE000000000FFE0000FFFC0000000007FE0001FFF8
+0000000007FE0003FFF00000000003FE0003FFF00000000001FE0007FFE00000000001FE
+0007FFE00000000000FE000FFFC00000000000FE000FFFC000000000007E001FFFC00000
+0000007E001FFF8000000000007E003FFF8000000000007E003FFF8000000000003E003F
+FF8000000000003E007FFF8000000000003E007FFF0000000000003E007FFF0000000000
+0000007FFF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF00
+00000000000000FFFF0000000000000000FFFF0000000000000000FFFF00000000000000
+00FFFF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF000000
+0000000000FFFF0000000000000000FFFF0000000000000000FFFF0000007FFFFFFFFE7F
+FF0000007FFFFFFFFE7FFF0000007FFFFFFFFE7FFF8000007FFFFFFFFE7FFF8000007FFF
+FFFFFE3FFF8000000000FFFE003FFF8000000000FFFE003FFF8000000000FFFE001FFF80
+00000000FFFE001FFFC000000000FFFE000FFFC000000000FFFE000FFFC000000000FFFE
+0007FFE000000000FFFE0007FFE000000000FFFE0003FFF000000000FFFE0003FFF80000
+0000FFFE0001FFF800000000FFFE0000FFFC00000000FFFE00007FFE00000000FFFE0000
+3FFF00000000FFFE00001FFF80000000FFFE00000FFFE0000001FFFE000007FFF0000003
+FFFE000001FFFC000007FFFE000000FFFF80001FFFFE0000003FFFFC00FFC7FE0000000F
+FFFFFFFF83FE00000003FFFFFFFE00FE000000007FFFFFF8003E000000000FFFFFE0000E
+00000000003FFE00000000>
+80 73 -7 71 93] 71 dc
+[<FFFFFFFFF80001FFFFFFC0FFFFFFFFF80001FFFFFFC0FFFFFFFFF80001FFFFFFC0FFFF
+FFFFF80001FFFFFFC0FFFFFFFFF80001FFFFFFC0001FFFC000000000FF8000001FFFC000
+0000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC000000000
+3E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000
+001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFF
+C0000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC00000
+00003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E
+0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E000000
+1FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0
+000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000
+003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E00
+00001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001F
+FFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC000
+0000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC000000000
+3E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000
+001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000000FFF
+C0000000007E0000000FFFC0000000007C0000000FFFE0000000007C0000000FFFE00000
+0000FC00000007FFE000000000F800000007FFE000000001F800000003FFF000000001F8
+00000001FFF000000003F000000001FFF800000007E000000000FFF800000007E0000000
+007FFC0000001FC0000000003FFE0000003F80000000001FFF800000FF00000000000FFF
+E00007FE000000000003FFFE007FFC000000000001FFFFFFFFF00000000000007FFFFFFF
+E00000000000000FFFFFFF8000000000000001FFFFFC00000000000000000FFFC0000000
+00>
+88 72 -4 70 91] 85 dc
+[<FFFFFFFFFF000000FFFFFFFFFF000000FFFFFFFFFF000000FFFFFFFFFF000000FFFFFF
+FFFF000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC0000000
+00001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFF
+C000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC0000000
+00001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFF
+C000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC0000000
+00001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFF
+C000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC0000000
+00001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFF
+C000000000001FFFC000000000001FFFC000000000001FFFC0000000F8001FFFC0000000
+F8001FFFC0000000F8001FFFC0000000F8001FFFC0000001F0001FFFC0000001F0001FFF
+C0000001F0001FFFC0000001F0001FFFC0000001F0001FFFC0000003F0001FFFC0000003
+F0001FFFC0000003F0001FFFC0000007F0001FFFC0000007F0001FFFC000000FE0001FFF
+C000001FE0001FFFC000001FE0001FFFC000003FE0001FFFC000007FE0001FFFC00000FF
+E0001FFFC00003FFE0001FFFC0000FFFE0001FFFC0007FFFE0FFFFFFFFFFFFFFC0FFFFFF
+FFFFFFFFC0FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC0>
+64 71 -4 70 71] 76 dc
+[<FFFFFFFFE000001FFFFFE0FFFFFFFFE000001FFFFFE0FFFFFFFFE000001FFFFFE0FFFF
+FFFFE000001FFFFFE0FFFFFFFFE000001FFFFFE0007FFF80000000003FE000003FFFC000
+0000000F8000003FFFC0000000001F8000001FFFE0000000001F0000001FFFE000000000
+3F0000000FFFE0000000003E0000000FFFF0000000007E00000007FFF0000000007C0000
+0007FFF8000000007C00000007FFF800000000FC00000003FFFC00000000F800000003FF
+FC00000001F800000001FFFE00000001F000000001FFFE00000003F000000000FFFE0000
+0003E000000000FFFF00000007E0000000007FFF00000007C0000000007FFF80000007C0
+000000007FFF8000000FC0000000003FFFC000000F80000000003FFFC000001F80000000
+001FFFC000001F00000000001FFFE000003F00000000000FFFE000003E00000000000FFF
+F000007E00000000000FFFF000007E000000000007FFF800007C000000000007FFF80000
+FC000000000003FFFC0000F8000000000003FFFC0001F8000000000001FFFC0001F00000
+00000001FFFE0003F0000000000000FFFE0003E0000000000000FFFF0003E00000000000
+00FFFF0007E00000000000007FFF8007C00000000000007FFF800FC00000000000003FFF
+C00F800000000000003FFFC01F800000000000001FFFC01F000000000000001FFFE03F00
+0000000000000FFFE03E000000000000000FFFF03E000000000000000FFFF07E00000000
+00000007FFF87C0000000000000007FFF8FC0000000000000003FFF8F800000000000000
+03FFFDF80000000000000001FFFDF00000000000000001FFFFF00000000000000001FFFF
+F00000000000000000FFFFE00000000000000000FFFFE000000000000000007FFFC00000
+0000000000007FFFC000000000000000003FFF8000000000000000003FFF800000000000
+0000001FFF0000000000000000001FFF0000000000000000001FFF000000000000000000
+0FFE0000000000000000000FFE00000000000000000007FC00000000000000000007FC00
+000000000000000003F800000000000000000003F800000000000000000001F000000000
+00>
+88 72 -3 70 90] 86 dc
+[<0000FFE00000000FFFFE0000003FFFFFC00000FFFFFFF00003FFFFFFFC0007FC01FFFE
+000FE0007FFF001FC0001FFF803F80000FFFC03FE00007FFE07FF80007FFE07FFC0003FF
+F0FFFC0003FFF0FFFE0001FFF8FFFE0001FFF8FFFE0001FFF8FFFE0000FFFCFFFE0000FF
+FC7FFC0000FFFC7FFC0000FFFC3FF80000FFFC1FF00000FFFC0FE00000FFFC00000001FF
+FC00000001FFF800000001FFF800000001FFF000000003FFF000000003FFE000000003FF
+E000000007FFC000000007FF800000000FFF800000001FFF000000001FFE000000003FFC
+000000007FF8000000007FE000000000FFC000000001FF8000000003FF0000000007FC00
+0000000FF8000000001FF0000000003FC0000000007F80007C0000FF00007C0000FE0000
+7C0001FC00007C0003F00000F80007E00000F8000FC00000F8001F800000F8003F000001
+F8007C000003F800FFFFFFFFF801FFFFFFFFF003FFFFFFFFF007FFFFFFFFF00FFFFFFFFF
+F01FFFFFFFFFF03FFFFFFFFFF07FFFFFFFFFF07FFFFFFFFFF0FFFFFFFFFFE0FFFFFFFFFF
+E0FFFFFFFFFFE0FFFFFFFFFFE0>
+48 68 -6 67 59] 50 dc
+cmtt10.300 sf
+[<FE0FE0FF1FE0FE0FE01C07001C07000E0E000E0E00071C00071C00071C0003B80003B8
+0001F00001F00000E00000E00000E00000E00000E00000E00000E00000E00003F80007FC
+0003F800>
+24 25 -1 24 22] 89 dc
+50 @bop1
+cmbx10.622 sf
+177 380(App)s
+3(endix)h
+34(A)h
+cmbx10.746 sf
+177 615(GNU)s
+40(General)h
+42(Public)h
+41(License)h
+177 739(V)s
+-10(ersion)h
+41(2)h
+cmti10.300 sf
+1460 1032(F)s
+-3(unnelWeb)h
+19(User's)h
+18(Manual)h
+260 1082(F)s
+-3(unnelWeb)h
+19(Hacker's)h
+17(Manual)h
+cmr10.300 sf
+177 983(This)s
+16(app)h
+1(endix)h
+17(con)h
+-1(tains)h
+16(a)h
+16(v)h
+-1(erbatim)h
+14(cop)h
+-1(y)h
+17(of)h
+15(V)h
+-3(ersion)h
+17(2)h
+16(of)h
+15(the)h
+17(GNU)h
+16(General)h
+16(Public)h
+16(License)h
+18(under)h
+177 1032(whic)s
+-1(h)h
+18(the)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+18(computer)h
+17(program)h
+16(is)h
+18(released.)h
+31(Note)h
+18(that)h
+18(the)h
+177 1082(and)s
+562(are)h
+17(released)h
+17(under)h
+18(a)h
+16(m)h
+-1(uc)h
+-1(h)h
+15(simpler)h
+15(license)h
+17(that)h
+17(do)h
+1(es)h
+17(not)h
+16(allo)h
+-1(w)h
+177 1132(mo)s
+1(di\014cations.)h
+1042 2940(49)s
+cmtt10.300 sf
+264 1340(GNU)s
+22(GENERAL)h
+20(PUBLIC)h
+20(LICENSE)h
+330 1390(Version)s
+20(2,)h
+21(June)h
+21(1991)h
+199 1490(Copyright)s
+20(\(C\))h
+21(1989,)h
+21(1991)h
+21(Free)h
+21(Software)h
+20(Foundation,)h
+19(Inc.)h
+744 1540(675)s
+21(Mass)h
+21(Ave,)h
+21(Cambridge,)h
+20(MA)h
+21(02139,)h
+21(USA)h
+199 1589(Everyone)s
+20(is)h
+21(permitted)h
+20(to)h
+22(copy)h
+21(and)h
+21(distribute)h
+20(verbatim)h
+20(copies)h
+199 1639(of)s
+21(this)h
+21(license)h
+21(document,)h
+20(but)h
+21(changing)h
+20(it)h
+21(is)h
+22(not)h
+21(allowed.)h
+264 1739(Preamble)s
+221 1838(The)s
+21(licenses)h
+20(for)h
+21(most)h
+21(software)h
+20(are)h
+22(designed)h
+20(to)h
+21(take)h
+21(away)h
+21(your)h
+177 1888(freedom)s
+21(to)h
+21(share)h
+21(and)h
+21(change)h
+20(it.)h
+43(By)h
+22(contrast,)h
+20(the)h
+21(GNU)h
+21(General)h
+20(Public)h
+177 1938(License)s
+21(is)h
+21(intended)h
+20(to)h
+21(guarantee)h
+20(your)h
+21(freedom)h
+21(to)h
+21(share)h
+21(and)h
+21(change)h
+21(free)h
+177 1988(software--to)s
+19(make)h
+21(sure)h
+21(the)h
+22(software)h
+20(is)h
+21(free)h
+21(for)h
+21(all)h
+21(its)h
+22(users.)h
+42(This)h
+177 2038(General)s
+21(Public)h
+20(License)h
+20(applies)h
+21(to)h
+21(most)h
+21(of)h
+21(the)h
+22(Free)h
+21(Software)h
+177 2087(Foundation's)s
+19(software)h
+21(and)h
+21(to)h
+21(any)h
+21(other)h
+21(program)h
+20(whose)h
+21(authors)h
+21(commit)h
+20(to)h
+177 2137(using)s
+21(it.)h
+43(\(Some)h
+21(other)h
+20(Free)h
+21(Software)h
+21(Foundation)h
+19(software)h
+20(is)h
+22(covered)h
+20(by)h
+177 2187(the)s
+21(GNU)h
+22(Library)h
+20(General)h
+20(Public)h
+21(License)h
+20(instead.\))h
+42(You)h
+21(can)h
+21(apply)h
+21(it)h
+21(to)h
+177 2237(your)s
+21(programs,)h
+20(too.)h
+221 2337(When)s
+21(we)h
+21(speak)h
+21(of)h
+21(free)h
+21(software,)h
+20(we)h
+22(are)h
+21(referring)h
+20(to)h
+21(freedom,)h
+20(not)h
+177 2386(price.)s
+43(Our)h
+21(General)h
+20(Public)h
+21(Licenses)h
+20(are)h
+21(designed)h
+20(to)h
+21(make)h
+21(sure)h
+21(that)h
+21(you)h
+177 2436(have)s
+21(the)h
+21(freedom)h
+21(to)h
+21(distribute)h
+20(copies)h
+20(of)h
+22(free)h
+21(software)h
+20(\(and)h
+21(charge)h
+20(for)h
+177 2486(this)s
+21(service)h
+20(if)h
+22(you)h
+21(wish\),)h
+21(that)h
+21(you)h
+21(receive)h
+20(source)h
+21(code)h
+21(or)h
+21(can)h
+21(get)h
+21(it)h
+177 2536(if)s
+22(you)h
+21(want)h
+21(it,)h
+21(that)h
+21(you)h
+21(can)h
+21(change)h
+21(the)h
+21(software)h
+20(or)h
+21(use)h
+22(pieces)h
+20(of)h
+22(it)h
+177 2586(in)s
+22(new)h
+21(free)h
+21(programs;)h
+20(and)h
+21(that)h
+21(you)h
+21(know)h
+21(you)h
+21(can)h
+21(do)h
+22(these)h
+20(things.)h
+221 2685(To)s
+21(protect)h
+20(your)h
+21(rights,)h
+21(we)h
+21(need)h
+21(to)h
+22(make)h
+20(restrictions)h
+20(that)h
+21(forbid)h
+177 2735(anyone)s
+21(to)h
+21(deny)h
+21(you)h
+21(these)h
+21(rights)h
+21(or)h
+21(to)h
+21(ask)h
+21(you)h
+22(to)h
+21(surrender)h
+20(the)h
+21(rights.)h
+177 2785(These)s
+21(restrictions)h
+19(translate)h
+20(to)h
+22(certain)h
+20(responsibili)h
+-1(ties)h
+19(for)h
+22(you)h
+21(if)h
+21(you)h
+177 2835(distribute)s
+20(copies)h
+20(of)h
+22(the)h
+21(software,)h
+20(or)h
+21(if)h
+22(you)h
+21(modify)h
+20(it.)h
+1772 2 177 1188 r
+50 @eop
+51 @bop0
+51 @bop1
+cmr10.300 sf
+1042 2940(50)s
+cmtt10.300 sf
+221 91(For)s
+21(example,)h
+20(if)h
+21(you)h
+22(distribute)h
+19(copies)h
+21(of)h
+21(such)h
+21(a)h
+22(program,)h
+20(whether)h
+177 141(gratis)s
+21(or)h
+21(for)h
+21(a)h
+22(fee,)h
+21(you)h
+21(must)h
+21(give)h
+21(the)h
+21(recipients)h
+20(all)h
+21(the)h
+21(rights)h
+21(that)h
+177 191(you)s
+21(have.)h
+43(You)h
+21(must)h
+21(make)h
+21(sure)h
+21(that)h
+21(they,)h
+21(too,)h
+21(receive)h
+20(or)h
+21(can)h
+22(get)h
+21(the)h
+177 241(source)s
+21(code.)h
+42(And)h
+21(you)h
+22(must)h
+21(show)h
+21(them)h
+21(these)h
+20(terms)h
+21(so)h
+21(they)h
+21(know)h
+21(their)h
+177 291(rights.)s
+221 390(We)s
+21(protect)h
+20(your)h
+21(rights)h
+21(with)h
+21(two)h
+21(steps:)h
+21(\(1\))h
+21(copyright)h
+20(the)h
+21(software,)h
+20(and)h
+177 440(\(2\))s
+21(offer)h
+21(you)h
+21(this)h
+21(license)h
+21(which)h
+20(gives)h
+21(you)h
+21(legal)h
+21(permission)h
+20(to)h
+21(copy,)h
+177 490(distribute)s
+20(and/or)h
+20(modify)h
+21(the)h
+21(software.)h
+221 589(Also,)s
+21(for)h
+21(each)h
+21(author's)h
+20(protection)h
+20(and)h
+21(ours,)h
+20(we)h
+22(want)h
+21(to)h
+21(make)h
+21(certain)h
+177 639(that)s
+21(everyone)h
+20(understands)h
+20(that)h
+21(there)h
+21(is)h
+21(no)h
+21(warranty)h
+20(for)h
+22(this)h
+21(free)h
+177 689(software.)s
+42(If)h
+21(the)h
+21(software)h
+21(is)h
+21(modified)h
+20(by)h
+21(someone)h
+21(else)h
+21(and)h
+21(passed)h
+21(on,)h
+21(we)h
+177 739(want)s
+21(its)h
+21(recipients)h
+20(to)h
+21(know)h
+21(that)h
+21(what)h
+21(they)h
+21(have)h
+21(is)h
+22(not)h
+21(the)h
+21(original,)h
+20(so)h
+177 789(that)s
+21(any)h
+21(problems)h
+20(introduced)h
+20(by)h
+22(others)h
+20(will)h
+21(not)h
+21(reflect)h
+21(on)h
+21(the)h
+21(original)h
+177 839(authors')s
+20(reputations.)h
+221 938(Finally,)s
+20(any)h
+21(free)h
+21(program)h
+20(is)h
+22(threatened)h
+19(constantly)h
+20(by)h
+22(software)h
+177 988(patents.)s
+42(We)h
+21(wish)h
+21(to)h
+22(avoid)h
+21(the)h
+21(danger)h
+20(that)h
+21(redistributors)h
+19(of)h
+22(a)h
+21(free)h
+177 1038(program)s
+21(will)h
+20(individually)h
+20(obtain)h
+20(patent)h
+21(licenses,)h
+20(in)h
+21(effect)h
+21(making)h
+20(the)h
+177 1088(program)s
+21(proprietar)h
+-1(y.)h
+42(To)h
+21(prevent)h
+20(this,)h
+21(we)h
+21(have)h
+21(made)h
+21(it)h
+22(clear)h
+21(that)h
+21(any)h
+177 1137(patent)s
+21(must)h
+21(be)h
+21(licensed)h
+20(for)h
+21(everyone's)h
+20(free)h
+21(use)h
+21(or)h
+22(not)h
+21(licensed)h
+20(at)h
+21(all.)h
+221 1237(The)s
+21(precise)h
+20(terms)h
+21(and)h
+21(conditions)h
+20(for)h
+21(copying,)h
+20(distribution)h
+20(and)h
+177 1287(modification)s
+19(follow.)h
+264 1386(GNU)s
+22(GENERAL)h
+20(PUBLIC)h
+20(LICENSE)h
+243 1436(TERMS)s
+20(AND)h
+21(CONDITIONS)h
+20(FOR)h
+21(COPYING,)h
+21(DISTRIBUTI)h
+-1(ON)h
+20(AND)h
+21(MODIFICATION)h
+221 1536(0.)s
+21(This)h
+21(License)h
+20(applies)h
+21(to)h
+21(any)h
+21(program)h
+21(or)h
+21(other)h
+21(work)h
+21(which)h
+21(contains)h
+177 1586(a)s
+22(notice)h
+20(placed)h
+21(by)h
+21(the)h
+21(copyright)h
+20(holder)h
+21(saying)h
+20(it)h
+22(may)h
+21(be)h
+21(distributed)h
+177 1636(under)s
+21(the)h
+21(terms)h
+21(of)h
+21(this)h
+21(General)h
+21(Public)h
+20(License.)h
+42(The)h
+21("Program",)h
+20(below,)h
+177 1685(refers)s
+21(to)h
+21(any)h
+21(such)h
+21(program)h
+21(or)h
+21(work,)h
+21(and)h
+21(a)h
+21("work)h
+21(based)h
+21(on)h
+21(the)h
+22(Program")h
+177 1735(means)s
+21(either)h
+20(the)h
+22(Program)h
+20(or)h
+21(any)h
+22(derivative)h
+19(work)h
+21(under)h
+21(copyright)h
+20(law:)h
+177 1785(that)s
+21(is)h
+22(to)h
+21(say,)h
+21(a)h
+21(work)h
+21(containing)h
+20(the)h
+21(Program)h
+21(or)h
+21(a)h
+22(portion)h
+20(of)h
+21(it,)h
+177 1835(either)s
+21(verbatim)h
+20(or)h
+21(with)h
+21(modifications)h
+19(and/or)h
+21(translated)h
+20(into)h
+21(another)h
+177 1885(language.)s
+42(\(Hereinafter)h
+-1(,)h
+20(translation)h
+20(is)h
+21(included)h
+20(without)h
+20(limitation)h
+20(in)h
+177 1934(the)s
+21(term)h
+21("modification")h
+-1(.\))h
+42(Each)h
+21(licensee)h
+20(is)h
+21(addressed)h
+20(as)h
+21("you".)h
+177 2034(Activities)s
+20(other)h
+21(than)h
+21(copying,)h
+20(distributio)h
+-1(n)h
+20(and)h
+21(modification)h
+20(are)h
+21(not)h
+177 2084(covered)s
+21(by)h
+21(this)h
+21(License;)h
+20(they)h
+21(are)h
+21(outside)h
+20(its)h
+22(scope.)h
+42(The)h
+21(act)h
+21(of)h
+177 2134(running)s
+21(the)h
+21(Program)h
+20(is)h
+21(not)h
+22(restricted,)h
+19(and)h
+21(the)h
+21(output)h
+21(from)h
+21(the)h
+21(Program)h
+177 2183(is)s
+22(covered)h
+20(only)h
+21(if)h
+21(its)h
+21(contents)h
+21(constitute)h
+19(a)h
+22(work)h
+21(based)h
+21(on)h
+21(the)h
+177 2233(Program)s
+21(\(independe)h
+-1(nt)h
+20(of)h
+21(having)h
+21(been)h
+21(made)h
+21(by)h
+21(running)h
+20(the)h
+22(Program\).)h
+177 2283(Whether)s
+21(that)h
+20(is)h
+22(true)h
+21(depends)h
+20(on)h
+22(what)h
+21(the)h
+21(Program)h
+20(does.)h
+221 2383(1.)s
+21(You)h
+21(may)h
+21(copy)h
+21(and)h
+22(distribute)h
+19(verbatim)h
+20(copies)h
+21(of)h
+21(the)h
+22(Program's)h
+177 2433(source)s
+21(code)h
+21(as)h
+21(you)h
+21(receive)h
+21(it,)h
+21(in)h
+21(any)h
+21(medium,)h
+21(provided)h
+20(that)h
+21(you)h
+177 2482(conspicuously)s
+19(and)h
+21(appropriately)h
+20(publish)h
+20(on)h
+21(each)h
+21(copy)h
+21(an)h
+22(appropriate)h
+177 2532(copyright)s
+20(notice)h
+21(and)h
+21(disclaimer)h
+20(of)h
+21(warranty;)h
+20(keep)h
+21(intact)h
+20(all)h
+22(the)h
+177 2582(notices)s
+21(that)h
+20(refer)h
+21(to)h
+22(this)h
+21(License)h
+20(and)h
+21(to)h
+21(the)h
+22(absence)h
+20(of)h
+21(any)h
+22(warranty;)h
+177 2632(and)s
+21(give)h
+21(any)h
+21(other)h
+21(recipients)h
+20(of)h
+21(the)h
+22(Program)h
+20(a)h
+21(copy)h
+21(of)h
+22(this)h
+21(License)h
+177 2682(along)s
+21(with)h
+21(the)h
+21(Program.)h
+177 2781(You)s
+21(may)h
+22(charge)h
+20(a)h
+22(fee)h
+21(for)h
+21(the)h
+21(physical)h
+20(act)h
+21(of)h
+22(transferring)h
+19(a)h
+22(copy,)h
+21(and)h
+177 2831(you)s
+21(may)h
+22(at)h
+21(your)h
+21(option)h
+20(offer)h
+21(warranty)h
+20(protection)h
+20(in)h
+21(exchange)h
+21(for)h
+21(a)h
+21(fee.)h
+51 @eop
+52 @bop0
+52 @bop1
+cmr10.300 sf
+1042 2940(51)s
+cmtt10.300 sf
+221 91(2.)s
+21(You)h
+21(may)h
+21(modify)h
+21(your)h
+21(copy)h
+21(or)h
+21(copies)h
+21(of)h
+21(the)h
+21(Program)h
+21(or)h
+21(any)h
+21(portion)h
+177 141(of)s
+22(it,)h
+21(thus)h
+21(forming)h
+20(a)h
+22(work)h
+21(based)h
+20(on)h
+22(the)h
+21(Program,)h
+20(and)h
+21(copy)h
+21(and)h
+177 191(distribute)s
+20(such)h
+21(modification)h
+-1(s)h
+20(or)h
+21(work)h
+21(under)h
+21(the)h
+21(terms)h
+21(of)h
+21(Section)h
+21(1)h
+177 241(above,)s
+21(provided)h
+20(that)h
+21(you)h
+21(also)h
+21(meet)h
+21(all)h
+21(of)h
+21(these)h
+21(conditions:)h
+264 340(a\))s
+22(You)h
+21(must)h
+21(cause)h
+21(the)h
+21(modified)h
+20(files)h
+21(to)h
+21(carry)h
+21(prominent)h
+20(notices)h
+264 390(stating)s
+21(that)h
+21(you)h
+21(changed)h
+20(the)h
+21(files)h
+21(and)h
+21(the)h
+21(date)h
+21(of)h
+22(any)h
+21(change.)h
+264 490(b\))s
+22(You)h
+21(must)h
+21(cause)h
+21(any)h
+21(work)h
+21(that)h
+21(you)h
+21(distribute)h
+20(or)h
+21(publish,)h
+20(that)h
+21(in)h
+264 540(whole)s
+21(or)h
+21(in)h
+22(part)h
+21(contains)h
+20(or)h
+21(is)h
+22(derived)h
+20(from)h
+21(the)h
+21(Program)h
+21(or)h
+21(any)h
+264 589(part)s
+21(thereof,)h
+20(to)h
+22(be)h
+21(licensed)h
+20(as)h
+22(a)h
+21(whole)h
+21(at)h
+21(no)h
+22(charge)h
+20(to)h
+22(all)h
+21(third)h
+264 639(parties)s
+21(under)h
+20(the)h
+22(terms)h
+20(of)h
+22(this)h
+21(License.)h
+264 739(c\))s
+22(If)h
+21(the)h
+21(modified)h
+20(program)h
+21(normally)h
+20(reads)h
+21(commands)h
+20(interactivel)h
+-1(y)h
+264 789(when)s
+21(run,)h
+21(you)h
+21(must)h
+21(cause)h
+21(it,)h
+21(when)h
+21(started)h
+21(running)h
+20(for)h
+21(such)h
+264 839(interactive)s
+20(use)h
+21(in)h
+21(the)h
+22(most)h
+21(ordinary)h
+20(way,)h
+21(to)h
+21(print)h
+21(or)h
+21(display)h
+21(an)h
+264 888(announcement)s
+20(including)h
+20(an)h
+21(appropriate)h
+19(copyright)h
+20(notice)h
+21(and)h
+21(a)h
+264 938(notice)s
+21(that)h
+21(there)h
+21(is)h
+21(no)h
+21(warranty)h
+21(\(or)h
+21(else,)h
+20(saying)h
+21(that)h
+21(you)h
+21(provide)h
+264 988(a)s
+22(warranty\))h
+20(and)h
+21(that)h
+21(users)h
+21(may)h
+21(redistribute)h
+19(the)h
+21(program)h
+21(under)h
+264 1038(these)s
+21(conditions,)h
+20(and)h
+21(telling)h
+20(the)h
+21(user)h
+21(how)h
+21(to)h
+22(view)h
+21(a)h
+21(copy)h
+21(of)h
+22(this)h
+264 1088(License.)s
+42(\(Exception:)h
+20(if)h
+21(the)h
+21(Program)h
+21(itself)h
+20(is)h
+22(interactive)h
+19(but)h
+264 1137(does)s
+21(not)h
+21(normally)h
+21(print)h
+20(such)h
+21(an)h
+22(announcemen)h
+-1(t,)h
+20(your)h
+21(work)h
+21(based)h
+21(on)h
+264 1187(the)s
+22(Program)h
+20(is)h
+21(not)h
+21(required)h
+21(to)h
+21(print)h
+21(an)h
+21(announcement.)h
+-1(\))h
+177 1287(These)s
+21(requirements)h
+19(apply)h
+21(to)h
+21(the)h
+22(modified)h
+20(work)h
+21(as)h
+21(a)h
+22(whole.)h
+42(If)h
+177 1337(identifiable)s
+19(sections)h
+21(of)h
+21(that)h
+21(work)h
+21(are)h
+21(not)h
+21(derived)h
+21(from)h
+21(the)h
+21(Program,)h
+177 1386(and)s
+21(can)h
+22(be)h
+21(reasonably)h
+20(considered)h
+19(independent)h
+20(and)h
+21(separate)h
+20(works)h
+21(in)h
+177 1436(themselves,)s
+20(then)h
+21(this)h
+21(License,)h
+20(and)h
+21(its)h
+21(terms,)h
+21(do)h
+21(not)h
+21(apply)h
+21(to)h
+21(those)h
+177 1486(sections)s
+20(when)h
+21(you)h
+21(distribute)h
+20(them)h
+21(as)h
+22(separate)h
+20(works.)h
+42(But)h
+21(when)h
+21(you)h
+177 1536(distribute)s
+20(the)h
+21(same)h
+21(sections)h
+20(as)h
+22(part)h
+21(of)h
+21(a)h
+21(whole)h
+21(which)h
+21(is)h
+21(a)h
+22(work)h
+21(based)h
+177 1586(on)s
+22(the)h
+21(Program,)h
+20(the)h
+21(distribution)h
+19(of)h
+22(the)h
+21(whole)h
+21(must)h
+21(be)h
+21(on)h
+21(the)h
+22(terms)h
+20(of)h
+177 1636(this)s
+21(License,)h
+20(whose)h
+21(permissions)h
+20(for)h
+21(other)h
+20(licensees)h
+20(extend)h
+21(to)h
+21(the)h
+177 1685(entire)s
+21(whole,)h
+20(and)h
+21(thus)h
+21(to)h
+22(each)h
+21(and)h
+21(every)h
+21(part)h
+21(regardless)h
+19(of)h
+22(who)h
+21(wrote)h
+21(it.)h
+177 1785(Thus,)s
+21(it)h
+21(is)h
+22(not)h
+21(the)h
+21(intent)h
+21(of)h
+21(this)h
+21(section)h
+20(to)h
+22(claim)h
+20(rights)h
+21(or)h
+21(contest)h
+177 1835(your)s
+21(rights)h
+21(to)h
+21(work)h
+21(written)h
+20(entirely)h
+21(by)h
+21(you;)h
+21(rather,)h
+20(the)h
+21(intent)h
+21(is)h
+21(to)h
+177 1885(exercise)s
+20(the)h
+21(right)h
+21(to)h
+22(control)h
+20(the)h
+21(distribution)h
+19(of)h
+22(derivative)h
+20(or)h
+177 1934(collective)s
+20(works)h
+21(based)h
+20(on)h
+22(the)h
+21(Program.)h
+177 2034(In)s
+22(addition,)h
+19(mere)h
+21(aggregation)h
+20(of)h
+21(another)h
+21(work)h
+21(not)h
+21(based)h
+21(on)h
+21(the)h
+21(Program)h
+177 2084(with)s
+21(the)h
+21(Program)h
+21(\(or)h
+21(with)h
+21(a)h
+21(work)h
+21(based)h
+21(on)h
+21(the)h
+22(Program\))h
+20(on)h
+21(a)h
+22(volume)h
+20(of)h
+177 2134(a)s
+22(storage)h
+20(or)h
+21(distribution)h
+20(medium)h
+20(does)h
+21(not)h
+21(bring)h
+21(the)h
+21(other)h
+21(work)h
+21(under)h
+177 2183(the)s
+21(scope)h
+21(of)h
+21(this)h
+21(License.)h
+221 2283(3.)s
+21(You)h
+21(may)h
+21(copy)h
+21(and)h
+22(distribute)h
+19(the)h
+22(Program)h
+20(\(or)h
+21(a)h
+22(work)h
+21(based)h
+20(on)h
+22(it,)h
+177 2333(under)s
+21(Section)h
+20(2\))h
+22(in)h
+21(object)h
+21(code)h
+21(or)h
+21(executable)h
+20(form)h
+21(under)h
+20(the)h
+22(terms)h
+20(of)h
+177 2383(Sections)s
+20(1)h
+22(and)h
+21(2)h
+22(above)h
+20(provided)h
+21(that)h
+21(you)h
+21(also)h
+21(do)h
+21(one)h
+21(of)h
+22(the)h
+21(following:)h
+264 2482(a\))s
+22(Accompany)h
+20(it)h
+21(with)h
+21(the)h
+21(complete)h
+20(corresponding)h
+19(machine-readabl)h
+-1(e)h
+264 2532(source)s
+21(code,)h
+21(which)h
+20(must)h
+21(be)h
+22(distributed)h
+19(under)h
+21(the)h
+21(terms)h
+21(of)h
+21(Sections)h
+264 2582(1)s
+22(and)h
+21(2)h
+22(above)h
+20(on)h
+22(a)h
+21(medium)h
+21(customarily)h
+19(used)h
+21(for)h
+22(software)h
+20(interchange)h
+-1(;)h
+20(or,)h
+264 2682(b\))s
+22(Accompany)h
+20(it)h
+21(with)h
+21(a)h
+22(written)h
+20(offer,)h
+20(valid)h
+21(for)h
+21(at)h
+22(least)h
+21(three)h
+264 2731(years,)s
+21(to)h
+21(give)h
+21(any)h
+21(third)h
+21(party,)h
+21(for)h
+21(a)h
+21(charge)h
+21(no)h
+21(more)h
+21(than)h
+21(your)h
+264 2781(cost)s
+21(of)h
+22(physically)h
+19(performing)h
+20(source)h
+21(distributio)h
+-1(n,)h
+20(a)h
+21(complete)h
+264 2831(machine-readab)s
+-1(le)h
+20(copy)h
+21(of)h
+21(the)h
+21(corresponding)h
+19(source)h
+21(code,)h
+21(to)h
+21(be)h
+52 @eop
+53 @bop0
+53 @bop1
+cmr10.300 sf
+1042 2940(52)s
+cmtt10.300 sf
+264 42(distributed)s
+20(under)h
+21(the)h
+21(terms)h
+21(of)h
+21(Sections)h
+20(1)h
+22(and)h
+21(2)h
+21(above)h
+21(on)h
+22(a)h
+21(medium)h
+264 91(customarily)s
+20(used)h
+21(for)h
+21(software)h
+20(interchange;)h
+19(or,)h
+264 191(c\))s
+22(Accompany)h
+20(it)h
+21(with)h
+21(the)h
+21(information)h
+20(you)h
+21(received)h
+20(as)h
+21(to)h
+22(the)h
+21(offer)h
+264 241(to)s
+22(distribute)h
+19(corresponding)h
+20(source)h
+20(code.)h
+43(\(This)h
+20(alternative)h
+20(is)h
+264 291(allowed)s
+21(only)h
+21(for)h
+21(noncommercia)h
+-1(l)h
+20(distribution)h
+19(and)h
+21(only)h
+21(if)h
+22(you)h
+264 340(received)s
+20(the)h
+22(program)h
+20(in)h
+21(object)h
+21(code)h
+21(or)h
+21(executable)h
+20(form)h
+21(with)h
+21(such)h
+264 390(an)s
+22(offer,)h
+20(in)h
+22(accord)h
+20(with)h
+21(Subsection)h
+20(b)h
+21(above.\))h
+177 490(The)s
+21(source)h
+21(code)h
+21(for)h
+21(a)h
+22(work)h
+21(means)h
+20(the)h
+22(preferred)h
+19(form)h
+21(of)h
+22(the)h
+21(work)h
+21(for)h
+177 540(making)s
+21(modificatio)h
+-1(ns)h
+20(to)h
+21(it.)h
+43(For)h
+21(an)h
+22(executable)h
+19(work,)h
+21(complete)h
+20(source)h
+177 589(code)s
+21(means)h
+21(all)h
+21(the)h
+21(source)h
+21(code)h
+21(for)h
+21(all)h
+21(modules)h
+20(it)h
+22(contains,)h
+20(plus)h
+21(any)h
+177 639(associated)s
+20(interface)h
+20(definition)h
+20(files,)h
+20(plus)h
+21(the)h
+21(scripts)h
+21(used)h
+21(to)h
+177 689(control)s
+21(compilatio)h
+-1(n)h
+20(and)h
+21(installation)h
+20(of)h
+21(the)h
+21(executable.)h
+41(However,)h
+21(as)h
+21(a)h
+177 739(special)s
+21(exception,)h
+19(the)h
+21(source)h
+21(code)h
+21(distributed)h
+19(need)h
+21(not)h
+22(include)h
+177 789(anything)s
+20(that)h
+21(is)h
+22(normally)h
+20(distributed)h
+19(\(in)h
+21(either)h
+21(source)h
+21(or)h
+21(binary)h
+177 839(form\))s
+21(with)h
+21(the)h
+21(major)h
+21(components)h
+20(\(compiler,)h
+19(kernel,)h
+21(and)h
+21(so)h
+21(on\))h
+21(of)h
+22(the)h
+177 888(operating)s
+20(system)h
+21(on)h
+21(which)h
+21(the)h
+21(executable)h
+20(runs,)h
+20(unless)h
+21(that)h
+21(component)h
+177 938(itself)s
+21(accompanies)h
+19(the)h
+21(executable.)h
+177 1038(If)s
+22(distributi)h
+-1(on)h
+20(of)h
+21(executable)h
+20(or)h
+21(object)h
+21(code)h
+21(is)h
+21(made)h
+21(by)h
+22(offering)h
+177 1088(access)s
+21(to)h
+21(copy)h
+21(from)h
+21(a)h
+22(designated)h
+19(place,)h
+21(then)h
+21(offering)h
+20(equivalent)h
+177 1137(access)s
+21(to)h
+21(copy)h
+21(the)h
+21(source)h
+21(code)h
+21(from)h
+21(the)h
+21(same)h
+21(place)h
+21(counts)h
+20(as)h
+177 1187(distribution)s
+19(of)h
+22(the)h
+21(source)h
+21(code,)h
+20(even)h
+21(though)h
+21(third)h
+21(parties)h
+20(are)h
+21(not)h
+177 1237(compelled)s
+20(to)h
+21(copy)h
+21(the)h
+22(source)h
+20(along)h
+21(with)h
+21(the)h
+21(object)h
+21(code.)h
+221 1337(4.)s
+21(You)h
+21(may)h
+21(not)h
+22(copy,)h
+20(modify,)h
+21(sublicense,)h
+19(or)h
+22(distribute)h
+19(the)h
+22(Program)h
+177 1386(except)s
+21(as)h
+21(expressly)h
+20(provided)h
+20(under)h
+21(this)h
+21(License.)h
+42(Any)h
+21(attempt)h
+177 1436(otherwise)s
+20(to)h
+21(copy,)h
+21(modify,)h
+21(sublicense)h
+19(or)h
+22(distribute)h
+19(the)h
+22(Program)h
+20(is)h
+177 1486(void,)s
+21(and)h
+21(will)h
+21(automatically)h
+19(terminate)h
+20(your)h
+21(rights)h
+21(under)h
+20(this)h
+21(License.)h
+177 1536(However,)s
+20(parties)h
+21(who)h
+21(have)h
+21(received)h
+20(copies,)h
+20(or)h
+22(rights,)h
+20(from)h
+21(you)h
+21(under)h
+177 1586(this)s
+21(License)h
+20(will)h
+21(not)h
+22(have)h
+21(their)h
+20(licenses)h
+20(terminated)h
+20(so)h
+22(long)h
+21(as)h
+21(such)h
+177 1636(parties)s
+21(remain)h
+20(in)h
+21(full)h
+21(compliance.)h
+221 1735(5.)s
+21(You)h
+21(are)h
+21(not)h
+22(required)h
+20(to)h
+21(accept)h
+21(this)h
+21(License,)h
+20(since)h
+21(you)h
+21(have)h
+21(not)h
+177 1785(signed)s
+21(it.)h
+43(However,)h
+20(nothing)h
+20(else)h
+21(grants)h
+21(you)h
+21(permission)h
+20(to)h
+21(modify)h
+21(or)h
+177 1835(distribute)s
+20(the)h
+21(Program)h
+20(or)h
+22(its)h
+21(derivative)h
+20(works.)h
+42(These)h
+21(actions)h
+20(are)h
+177 1885(prohibited)s
+20(by)h
+21(law)h
+21(if)h
+22(you)h
+21(do)h
+21(not)h
+22(accept)h
+20(this)h
+21(License.)h
+42(Therefore,)h
+20(by)h
+177 1934(modifying)s
+20(or)h
+21(distributing)h
+20(the)h
+21(Program)h
+20(\(or)h
+21(any)h
+22(work)h
+21(based)h
+20(on)h
+22(the)h
+177 1984(Program\),)s
+20(you)h
+21(indicate)h
+20(your)h
+21(acceptance)h
+20(of)h
+21(this)h
+21(License)h
+21(to)h
+21(do)h
+22(so,)h
+21(and)h
+177 2034(all)s
+21(its)h
+22(terms)h
+20(and)h
+21(conditions)h
+20(for)h
+21(copying,)h
+20(distributing)h
+20(or)h
+21(modifying)h
+177 2084(the)s
+21(Program)h
+21(or)h
+21(works)h
+21(based)h
+21(on)h
+21(it.)h
+221 2183(6.)s
+21(Each)h
+21(time)h
+21(you)h
+21(redistribute)h
+20(the)h
+21(Program)h
+20(\(or)h
+21(any)h
+21(work)h
+21(based)h
+21(on)h
+22(the)h
+177 2233(Program\),)s
+20(the)h
+21(recipient)h
+20(automatically)h
+19(receives)h
+20(a)h
+22(license)h
+20(from)h
+21(the)h
+177 2283(original)s
+20(licensor)h
+20(to)h
+22(copy,)h
+21(distribute)h
+19(or)h
+22(modify)h
+20(the)h
+21(Program)h
+21(subject)h
+20(to)h
+177 2333(these)s
+21(terms)h
+21(and)h
+21(conditions.)h
+41(You)h
+21(may)h
+22(not)h
+21(impose)h
+20(any)h
+21(further)h
+177 2383(restrictions)s
+19(on)h
+22(the)h
+21(recipients')h
+20(exercise)h
+20(of)h
+21(the)h
+21(rights)h
+21(granted)h
+20(herein.)h
+177 2433(You)s
+21(are)h
+22(not)h
+21(responsible)h
+19(for)h
+21(enforcing)h
+20(compliance)h
+20(by)h
+21(third)h
+21(parties)h
+21(to)h
+177 2482(this)s
+21(License.)h
+221 2582(7.)s
+21(If,)h
+21(as)h
+22(a)h
+21(consequence)h
+20(of)h
+21(a)h
+22(court)h
+21(judgment)h
+20(or)h
+21(allegation)h
+20(of)h
+21(patent)h
+177 2632(infringement)s
+19(or)h
+22(for)h
+21(any)h
+21(other)h
+21(reason)h
+21(\(not)h
+20(limited)h
+21(to)h
+21(patent)h
+21(issues\),)h
+177 2682(conditions)s
+20(are)h
+21(imposed)h
+20(on)h
+22(you)h
+21(\(whether)h
+20(by)h
+21(court)h
+21(order,)h
+21(agreement)h
+20(or)h
+177 2731(otherwise\))s
+20(that)h
+21(contradict)h
+20(the)h
+21(conditions)h
+19(of)h
+22(this)h
+21(License,)h
+20(they)h
+21(do)h
+21(not)h
+177 2781(excuse)s
+21(you)h
+21(from)h
+21(the)h
+21(conditions)h
+20(of)h
+21(this)h
+21(License.)h
+42(If)h
+21(you)h
+22(cannot)h
+177 2831(distribute)s
+20(so)h
+21(as)h
+22(to)h
+21(satisfy)h
+20(simultaneously)h
+19(your)h
+21(obligations)h
+20(under)h
+21(this)h
+53 @eop
+54 @bop0
+54 @bop1
+cmr10.300 sf
+1042 2940(53)s
+cmtt10.300 sf
+177 42(License)s
+21(and)h
+21(any)h
+21(other)h
+21(pertinent)h
+20(obligation)h
+-1(s,)h
+20(then)h
+21(as)h
+21(a)h
+22(consequence)h
+19(you)h
+177 91(may)s
+21(not)h
+22(distribute)h
+19(the)h
+21(Program)h
+21(at)h
+21(all.)h
+43(For)h
+21(example,)h
+20(if)h
+22(a)h
+21(patent)h
+177 141(license)s
+21(would)h
+20(not)h
+21(permit)h
+21(royalty-free)h
+19(redistribution)h
+19(of)h
+22(the)h
+21(Program)h
+20(by)h
+177 191(all)s
+21(those)h
+21(who)h
+21(receive)h
+21(copies)h
+20(directly)h
+20(or)h
+22(indirectly)h
+19(through)h
+21(you,)h
+21(then)h
+177 241(the)s
+21(only)h
+21(way)h
+21(you)h
+22(could)h
+20(satisfy)h
+21(both)h
+21(it)h
+21(and)h
+21(this)h
+21(License)h
+21(would)h
+20(be)h
+22(to)h
+177 291(refrain)s
+21(entirely)h
+20(from)h
+21(distributio)h
+-1(n)h
+20(of)h
+21(the)h
+21(Program.)h
+177 390(If)s
+22(any)h
+21(portion)h
+20(of)h
+21(this)h
+21(section)h
+21(is)h
+21(held)h
+21(invalid)h
+20(or)h
+22(unenforceabl)h
+-1(e)h
+20(under)h
+177 440(any)s
+21(particular)h
+20(circumstance,)h
+19(the)h
+21(balance)h
+21(of)h
+21(the)h
+21(section)h
+21(is)h
+21(intended)h
+20(to)h
+177 490(apply)s
+21(and)h
+21(the)h
+21(section)h
+21(as)h
+21(a)h
+22(whole)h
+20(is)h
+22(intended)h
+20(to)h
+21(apply)h
+21(in)h
+21(other)h
+177 540(circumstances)s
+-1(.)h
+177 639(It)s
+22(is)h
+21(not)h
+21(the)h
+21(purpose)h
+21(of)h
+21(this)h
+21(section)h
+20(to)h
+22(induce)h
+20(you)h
+21(to)h
+22(infringe)h
+20(any)h
+177 689(patents)s
+21(or)h
+21(other)h
+21(property)h
+20(right)h
+21(claims)h
+20(or)h
+21(to)h
+22(contest)h
+20(validity)h
+20(of)h
+22(any)h
+177 739(such)s
+21(claims;)h
+20(this)h
+21(section)h
+21(has)h
+21(the)h
+21(sole)h
+21(purpose)h
+20(of)h
+22(protecting)h
+20(the)h
+177 789(integrity)s
+20(of)h
+21(the)h
+22(free)h
+21(software)h
+20(distributio)h
+-1(n)h
+20(system,)h
+20(which)h
+21(is)h
+177 839(implemented)s
+20(by)h
+21(public)h
+21(license)h
+20(practices.)h
+41(Many)h
+21(people)h
+21(have)h
+21(made)h
+177 888(generous)s
+20(contributions)h
+19(to)h
+22(the)h
+21(wide)h
+21(range)h
+21(of)h
+21(software)h
+20(distributed)h
+177 938(through)s
+21(that)h
+20(system)h
+21(in)h
+21(reliance)h
+21(on)h
+21(consistent)h
+20(application)h
+19(of)h
+22(that)h
+177 988(system;)s
+21(it)h
+21(is)h
+21(up)h
+22(to)h
+21(the)h
+21(author/donor)h
+20(to)h
+21(decide)h
+20(if)h
+22(he)h
+21(or)h
+22(she)h
+21(is)h
+21(willing)h
+177 1038(to)s
+22(distribute)h
+19(software)h
+20(through)h
+21(any)h
+21(other)h
+21(system)h
+20(and)h
+21(a)h
+22(licensee)h
+20(cannot)h
+177 1088(impose)s
+21(that)h
+21(choice.)h
+177 1187(This)s
+21(section)h
+20(is)h
+22(intended)h
+20(to)h
+21(make)h
+21(thoroughly)h
+20(clear)h
+21(what)h
+21(is)h
+21(believed)h
+20(to)h
+177 1237(be)s
+22(a)h
+21(consequence)h
+20(of)h
+21(the)h
+21(rest)h
+21(of)h
+22(this)h
+21(License.)h
+221 1337(8.)s
+21(If)h
+22(the)h
+21(distributio)h
+-1(n)h
+20(and/or)h
+21(use)h
+21(of)h
+21(the)h
+21(Program)h
+21(is)h
+21(restricted)h
+20(in)h
+177 1386(certain)s
+21(countries)h
+19(either)h
+21(by)h
+21(patents)h
+21(or)h
+21(by)h
+21(copyrighted)h
+20(interfaces,)h
+20(the)h
+177 1436(original)s
+20(copyright)h
+20(holder)h
+21(who)h
+21(places)h
+21(the)h
+21(Program)h
+20(under)h
+21(this)h
+21(License)h
+177 1486(may)s
+21(add)h
+22(an)h
+21(explicit)h
+20(geographical)h
+19(distribution)h
+20(limitation)h
+19(excluding)h
+177 1536(those)s
+21(countries,)h
+20(so)h
+21(that)h
+21(distribution)h
+19(is)h
+22(permitted)h
+20(only)h
+21(in)h
+21(or)h
+21(among)h
+177 1586(countries)s
+20(not)h
+21(thus)h
+21(excluded.)h
+42(In)h
+21(such)h
+21(case,)h
+21(this)h
+21(License)h
+20(incorporates)h
+177 1636(the)s
+21(limitation)h
+20(as)h
+21(if)h
+22(written)h
+20(in)h
+22(the)h
+21(body)h
+21(of)h
+21(this)h
+21(License.)h
+221 1735(9.)s
+21(The)h
+21(Free)h
+21(Software)h
+20(Foundation)h
+20(may)h
+21(publish)h
+21(revised)h
+20(and/or)h
+21(new)h
+21(versions)h
+177 1785(of)s
+22(the)h
+21(General)h
+20(Public)h
+21(License)h
+20(from)h
+21(time)h
+21(to)h
+21(time.)h
+43(Such)h
+21(new)h
+21(versions)h
+20(will)h
+177 1835(be)s
+22(similar)h
+20(in)h
+21(spirit)h
+21(to)h
+21(the)h
+21(present)h
+21(version,)h
+20(but)h
+21(may)h
+21(differ)h
+21(in)h
+21(detail)h
+21(to)h
+177 1885(address)s
+21(new)h
+21(problems)h
+20(or)h
+21(concerns.)h
+177 1984(Each)s
+21(version)h
+20(is)h
+22(given)h
+21(a)h
+21(distinguishing)h
+19(version)h
+20(number.)h
+43(If)h
+21(the)h
+21(Program)h
+177 2034(specifies)s
+20(a)h
+22(version)h
+20(number)h
+21(of)h
+21(this)h
+21(License)h
+20(which)h
+21(applies)h
+20(to)h
+22(it)h
+21(and)h
+21("any)h
+177 2084(later)s
+21(version",)h
+20(you)h
+21(have)h
+21(the)h
+21(option)h
+21(of)h
+21(following)h
+20(the)h
+21(terms)h
+21(and)h
+21(conditions)h
+177 2134(either)s
+21(of)h
+21(that)h
+21(version)h
+20(or)h
+22(of)h
+21(any)h
+21(later)h
+21(version)h
+20(published)h
+20(by)h
+22(the)h
+21(Free)h
+177 2183(Software)s
+20(Foundation.)h
+42(If)h
+21(the)h
+21(Program)h
+21(does)h
+20(not)h
+22(specify)h
+20(a)h
+22(version)h
+20(number)h
+20(of)h
+177 2233(this)s
+21(License,)h
+20(you)h
+21(may)h
+22(choose)h
+20(any)h
+21(version)h
+21(ever)h
+21(published)h
+20(by)h
+21(the)h
+21(Free)h
+21(Software)h
+177 2283(Foundation.)s
+221 2383(10.)s
+21(If)h
+21(you)h
+21(wish)h
+21(to)h
+22(incorporate)h
+19(parts)h
+21(of)h
+21(the)h
+22(Program)h
+20(into)h
+21(other)h
+21(free)h
+177 2433(programs)s
+20(whose)h
+21(distribution)h
+19(conditions)h
+20(are)h
+21(different,)h
+20(write)h
+21(to)h
+21(the)h
+21(author)h
+177 2482(to)s
+22(ask)h
+21(for)h
+21(permission.)h
+41(For)h
+21(software)h
+21(which)h
+20(is)h
+22(copyrighted)h
+19(by)h
+22(the)h
+21(Free)h
+177 2532(Software)s
+20(Foundation,)h
+20(write)h
+21(to)h
+21(the)h
+21(Free)h
+21(Software)h
+20(Foundation;)h
+20(we)h
+21(sometimes)h
+177 2582(make)s
+21(exceptions)h
+20(for)h
+21(this.)h
+43(Our)h
+21(decision)h
+20(will)h
+21(be)h
+21(guided)h
+21(by)h
+21(the)h
+21(two)h
+22(goals)h
+177 2632(of)s
+22(preserving)h
+19(the)h
+21(free)h
+21(status)h
+21(of)h
+21(all)h
+22(derivative)h
+-1(s)h
+20(of)h
+21(our)h
+22(free)h
+21(software)h
+20(and)h
+177 2682(of)s
+22(promoting)h
+19(the)h
+22(sharing)h
+20(and)h
+21(reuse)h
+21(of)h
+21(software)h
+20(generally.)h
+264 2781(NO)s
+22(WARRANTY)h
+54 @eop
+55 @bop0
+55 @bop1
+cmr10.300 sf
+1042 2940(54)s
+cmtt10.300 sf
+221 42(11.)s
+21(BECAUSE)h
+20(THE)h
+21(PROGRAM)h
+21(IS)h
+21(LICENSED)h
+20(FREE)h
+21(OF)h
+22(CHARGE,)h
+20(THERE)h
+21(IS)h
+21(NO)h
+22(WARRANTY)h
+177 91(FOR)s
+21(THE)h
+22(PROGRAM,)h
+20(TO)h
+21(THE)h
+21(EXTENT)h
+21(PERMITTED)h
+20(BY)h
+21(APPLICABLE)h
+20(LAW.)h
+43(EXCEPT)h
+20(WHEN)h
+177 141(OTHERWISE)s
+20(STATED)h
+21(IN)h
+21(WRITING)h
+20(THE)h
+22(COPYRIGHT)h
+19(HOLDERS)h
+21(AND/OR)h
+20(OTHER)h
+21(PARTIES)h
+177 191(PROVIDE)s
+21(THE)h
+21(PROGRAM)h
+20("AS)h
+21(IS")h
+21(WITHOUT)h
+21(WARRANTY)h
+20(OF)h
+21(ANY)h
+21(KIND,)h
+21(EITHER)h
+21(EXPRESSED)h
+177 241(OR)s
+22(IMPLIED,)h
+20(INCLUDING,)h
+19(BUT)h
+22(NOT)h
+21(LIMITED)h
+20(TO,)h
+21(THE)h
+21(IMPLIED)h
+21(WARRANTIES)h
+20(OF)h
+177 291(MERCHANTABILI)s
+-1(TY)h
+20(AND)h
+21(FITNESS)h
+20(FOR)h
+22(A)h
+21(PARTICULAR)h
+20(PURPOSE.)h
+42(THE)h
+21(ENTIRE)h
+21(RISK)h
+20(AS)h
+177 340(TO)s
+22(THE)h
+21(QUALITY)h
+20(AND)h
+21(PERFORMANCE)h
+20(OF)h
+21(THE)h
+21(PROGRAM)h
+21(IS)h
+21(WITH)h
+21(YOU.)h
+43(SHOULD)h
+20(THE)h
+177 390(PROGRAM)s
+21(PROVE)h
+20(DEFECTIVE,)h
+20(YOU)h
+21(ASSUME)h
+21(THE)h
+21(COST)h
+21(OF)h
+21(ALL)h
+21(NECESSARY)h
+20(SERVICING,)h
+177 440(REPAIR)s
+21(OR)h
+21(CORRECTION.)h
+221 540(12.)s
+21(IN)h
+21(NO)h
+22(EVENT)h
+20(UNLESS)h
+21(REQUIRED)h
+20(BY)h
+22(APPLICABLE)h
+19(LAW)h
+21(OR)h
+22(AGREED)h
+20(TO)h
+22(IN)h
+21(WRITING)h
+177 589(WILL)s
+21(ANY)h
+21(COPYRIGHT)h
+20(HOLDER,)h
+21(OR)h
+21(ANY)h
+21(OTHER)h
+21(PARTY)h
+21(WHO)h
+21(MAY)h
+21(MODIFY)h
+21(AND/OR)h
+177 639(REDISTRIBUTE)s
+19(THE)h
+22(PROGRAM)h
+20(AS)h
+21(PERMITTED)h
+20(ABOVE,)h
+21(BE)h
+21(LIABLE)h
+21(TO)h
+21(YOU)h
+21(FOR)h
+22(DAMAGES,)h
+177 689(INCLUDING)s
+20(ANY)h
+21(GENERAL,)h
+20(SPECIAL,)h
+21(INCIDENTAL)h
+19(OR)h
+22(CONSEQUENTI)h
+-1(AL)h
+20(DAMAGES)h
+20(ARISING)h
+177 739(OUT)s
+21(OF)h
+22(THE)h
+21(USE)h
+21(OR)h
+21(INABILITY)h
+20(TO)h
+22(USE)h
+21(THE)h
+21(PROGRAM)h
+20(\(INCLUDING)h
+20(BUT)h
+21(NOT)h
+22(LIMITED)h
+177 789(TO)s
+22(LOSS)h
+21(OF)h
+21(DATA)h
+21(OR)h
+21(DATA)h
+21(BEING)h
+21(RENDERED)h
+20(INACCURATE)h
+20(OR)h
+21(LOSSES)h
+21(SUSTAINED)h
+20(BY)h
+177 839(YOU)s
+21(OR)h
+22(THIRD)h
+20(PARTIES)h
+21(OR)h
+21(A)h
+22(FAILURE)h
+20(OF)h
+22(THE)h
+21(PROGRAM)h
+20(TO)h
+21(OPERATE)h
+21(WITH)h
+21(ANY)h
+21(OTHER)h
+177 888(PROGRAMS\),)s
+20(EVEN)h
+21(IF)h
+21(SUCH)h
+21(HOLDER)h
+21(OR)h
+21(OTHER)h
+21(PARTY)h
+21(HAS)h
+21(BEEN)h
+21(ADVISED)h
+20(OF)h
+22(THE)h
+177 938(POSSIBILITY)s
+20(OF)h
+21(SUCH)h
+21(DAMAGES.)h
+286 1038(END)s
+21(OF)h
+22(TERMS)h
+20(AND)h
+22(CONDITIONS)h
+177 1137(Appendix:)s
+20(How)h
+21(to)h
+22(Apply)h
+20(These)h
+21(Terms)h
+21(to)h
+21(Your)h
+21(New)h
+21(Programs)h
+221 1237(If)s
+21(you)h
+21(develop)h
+21(a)h
+21(new)h
+21(program,)h
+21(and)h
+21(you)h
+21(want)h
+21(it)h
+21(to)h
+22(be)h
+21(of)h
+21(the)h
+22(greatest)h
+177 1287(possible)s
+20(use)h
+21(to)h
+22(the)h
+21(public,)h
+20(the)h
+22(best)h
+21(way)h
+21(to)h
+21(achieve)h
+20(this)h
+21(is)h
+22(to)h
+21(make)h
+21(it)h
+177 1337(free)s
+21(software)h
+20(which)h
+21(everyone)h
+20(can)h
+21(redistribute)h
+20(and)h
+21(change)h
+20(under)h
+21(these)h
+21(terms.)h
+221 1436(To)s
+21(do)h
+22(so,)h
+21(attach)h
+20(the)h
+21(following)h
+20(notices)h
+21(to)h
+21(the)h
+21(program.)h
+42(It)h
+22(is)h
+21(safest)h
+177 1486(to)s
+22(attach)h
+20(them)h
+21(to)h
+21(the)h
+22(start)h
+20(of)h
+22(each)h
+21(source)h
+20(file)h
+21(to)h
+22(most)h
+21(effectively)h
+177 1536(convey)s
+21(the)h
+21(exclusion)h
+20(of)h
+21(warranty;)h
+20(and)h
+21(each)h
+21(file)h
+21(should)h
+21(have)h
+21(at)h
+21(least)h
+177 1586(the)s
+21("copyright")h
+20(line)h
+21(and)h
+21(a)h
+22(pointer)h
+20(to)h
+21(where)h
+21(the)h
+21(full)h
+21(notice)h
+21(is)h
+21(found.)h
+264 1685(<one)s
+21(line)h
+21(to)h
+22(give)h
+21(the)h
+21(program's)h
+20(name)h
+21(and)h
+21(a)h
+21(brief)h
+21(idea)h
+21(of)h
+22(what)h
+21(it)h
+21(does.>)h
+264 1735(Copyright)s
+20(\(C\))h
+21(19yy)h
+43(<name)h
+21(of)h
+21(author>)h
+264 1835(This)s
+21(program)h
+21(is)h
+21(free)h
+21(software;)h
+20(you)h
+21(can)h
+21(redistribute)h
+20(it)h
+21(and/or)h
+21(modify)h
+264 1885(it)s
+22(under)h
+20(the)h
+22(terms)h
+20(of)h
+22(the)h
+21(GNU)h
+21(General)h
+20(Public)h
+21(License)h
+20(as)h
+22(published)h
+20(by)h
+264 1934(the)s
+22(Free)h
+20(Software)h
+21(Foundation;)h
+19(either)h
+21(version)h
+20(2)h
+22(of)h
+21(the)h
+21(License,)h
+20(or)h
+264 1984(\(at)s
+22(your)h
+20(option\))h
+21(any)h
+21(later)h
+21(version.)h
+264 2084(This)s
+21(program)h
+21(is)h
+21(distributed)h
+20(in)h
+21(the)h
+21(hope)h
+21(that)h
+21(it)h
+21(will)h
+21(be)h
+22(useful,)h
+264 2134(but)s
+22(WITHOUT)h
+20(ANY)h
+21(WARRANTY;)h
+20(without)h
+20(even)h
+21(the)h
+21(implied)h
+21(warranty)h
+20(of)h
+264 2183(MERCHANTABILIT)s
+-1(Y)h
+20(or)h
+21(FITNESS)h
+21(FOR)h
+21(A)h
+22(PARTICULAR)h
+19(PURPOSE.)h
+42(See)h
+21(the)h
+264 2233(GNU)s
+22(General)h
+20(Public)h
+20(License)h
+21(for)h
+21(more)h
+21(details.)h
+264 2333(You)s
+22(should)h
+20(have)h
+21(received)h
+20(a)h
+22(copy)h
+21(of)h
+21(the)h
+21(GNU)h
+21(General)h
+21(Public)h
+20(License)h
+264 2383(along)s
+21(with)h
+21(this)h
+21(program;)h
+20(if)h
+22(not,)h
+21(write)h
+20(to)h
+22(the)h
+21(Free)h
+21(Software)h
+264 2433(Foundation,)s
+20(Inc.,)h
+21(675)h
+21(Mass)h
+21(Ave,)h
+21(Cambridge,)h
+19(MA)h
+22(02139,)h
+20(USA.)h
+177 2532(Also)s
+21(add)h
+21(information)h
+20(on)h
+21(how)h
+21(to)h
+22(contact)h
+20(you)h
+21(by)h
+22(electronic)h
+19(and)h
+22(paper)h
+20(mail.)h
+177 2632(If)s
+22(the)h
+21(program)h
+20(is)h
+21(interactive,)h
+20(make)h
+21(it)h
+21(output)h
+21(a)h
+21(short)h
+21(notice)h
+21(like)h
+21(this)h
+177 2682(when)s
+21(it)h
+22(starts)h
+20(in)h
+21(an)h
+22(interactive)h
+19(mode:)h
+264 2781(Gnomovision)s
+20(version)h
+20(69,)h
+21(Copyright)h
+20(\(C\))h
+21(19yy)h
+21(name)h
+21(of)h
+22(author)h
+264 2831(Gnomovision)s
+20(comes)h
+21(with)h
+21(ABSOLUTELY)h
+19(NO)h
+22(WARRANTY;)h
+20(for)h
+21(details)h
+55 @eop
+56 @bop0
+cmtt10.300 sf
+[<0C1E3C7870F0E0E0E0F0F87830>
+8 13 -8 27 22] 96 dc
+56 @bop1
+cmr10.300 sf
+1042 2940(55)s
+cmtt10.300 sf
+264 42(type)s
+21(`show)h
+21(w'.)h
+264 91(This)s
+21(is)h
+22(free)h
+21(software,)h
+20(and)h
+21(you)h
+21(are)h
+21(welcome)h
+20(to)h
+22(redistribute)h
+19(it)h
+264 141(under)s
+21(certain)h
+20(conditions;)h
+20(type)h
+21(`show)h
+21(c')h
+21(for)h
+21(details.)h
+177 241(The)s
+21(hypothetical)h
+20(commands)h
+20(`show)h
+21(w')h
+21(and)h
+21(`show)h
+21(c')h
+21(should)h
+21(show)h
+21(the)h
+21(appropriate)h
+177 291(parts)s
+21(of)h
+21(the)h
+21(General)h
+21(Public)h
+20(License.)h
+42(Of)h
+22(course,)h
+20(the)h
+21(commands)h
+20(you)h
+22(use)h
+21(may)h
+177 340(be)s
+22(called)h
+20(something)h
+20(other)h
+21(than)h
+21(`show)h
+21(w')h
+21(and)h
+21(`show)h
+21(c';)h
+21(they)h
+21(could)h
+21(even)h
+21(be)h
+177 390(mouse-clicks)s
+19(or)h
+22(menu)h
+21(items--whate)h
+-1(ver)h
+20(suits)h
+20(your)h
+21(program.)h
+177 490(You)s
+21(should)h
+21(also)h
+21(get)h
+21(your)h
+21(employer)h
+20(\(if)h
+21(you)h
+21(work)h
+21(as)h
+22(a)h
+21(programmer\))h
+20(or)h
+21(your)h
+177 540(school,)s
+21(if)h
+21(any,)h
+21(to)h
+21(sign)h
+21(a)h
+22("copyright)h
+20(disclaimer)h
+-1(")h
+20(for)h
+21(the)h
+21(program,)h
+21(if)h
+177 589(necessary.)s
+42(Here)h
+21(is)h
+21(a)h
+22(sample;)h
+20(alter)h
+21(the)h
+21(names:)h
+221 689(Yoyodyne,)s
+20(Inc.,)h
+20(hereby)h
+21(disclaims)h
+20(all)h
+21(copyright)h
+20(interest)h
+20(in)h
+22(the)h
+21(program)h
+221 739(`Gnomovisio)s
+-1(n')h
+20(\(which)h
+20(makes)h
+21(passes)h
+21(at)h
+21(compilers\))h
+20(written)h
+20(by)h
+22(James)h
+20(Hacker.)h
+221 839(<signature)s
+19(of)h
+22(Ty)h
+21(Coon>,)h
+21(1)h
+21(April)h
+21(1989)h
+221 888(Ty)s
+21(Coon,)h
+21(President)h
+20(of)h
+21(Vice)h
+177 988(This)s
+21(General)h
+20(Public)h
+21(License)h
+20(does)h
+21(not)h
+22(permit)h
+20(incorporating)h
+19(your)h
+21(program)h
+20(into)h
+177 1038(proprietary)s
+20(programs.)h
+41(If)h
+22(your)h
+21(program)h
+20(is)h
+21(a)h
+22(subroutine)h
+20(library,)h
+20(you)h
+21(may)h
+177 1088(consider)s
+20(it)h
+22(more)h
+21(useful)h
+20(to)h
+22(permit)h
+20(linking)h
+20(proprietary)h
+20(applications)h
+19(with)h
+21(the)h
+177 1137(library.)s
+42(If)h
+21(this)h
+21(is)h
+22(what)h
+21(you)h
+21(want)h
+21(to)h
+21(do,)h
+21(use)h
+22(the)h
+21(GNU)h
+21(Library)h
+20(General)h
+177 1187(Public)s
+21(License)h
+20(instead)h
+20(of)h
+22(this)h
+21(License.)h
+1772 2 177 1280 r
+56 @eop
+57 @bop0
+57 @bop1
+cmr10.300 sf
+1042 2940(56)s
+57 @eop
+58 @bop0
+cmbx10.622 sf
+[<FFFFFFFFFFC00000FFFFFFFFFFFC0000FFFFFFFFFFFF0000FFFFFFFFFFFFC000007FF0
+0001FFF000007FF000007FF800007FF000003FFC00007FF000001FFE00007FF000001FFE
+00007FF000000FFF00007FF000000FFF00007FF0000007FF80007FF0000007FF80007FF0
+000007FF80007FF0000007FF80007FF0000007FF80007FF0000007FF80007FF0000007FF
+80007FF0000007FF00007FF000000FFF00007FF000000FFF00007FF000001FFE00007FF0
+00001FFC00007FF000003FF800007FF000007FF000007FF00001FFE000007FF0000FFF80
+00007FFFFFFFFE0000007FFFFFFFFE0000007FFFFFFFFFC000007FF000007FF000007FF0
+00001FFC00007FF000000FFE00007FF0000007FF00007FF0000007FF80007FF0000003FF
+C0007FF0000003FFC0007FF0000001FFE0007FF0000001FFE0007FF0000001FFF0007FF0
+000001FFF0007FF0000001FFF0007FF0000001FFF0007FF0000001FFF0007FF0000001FF
+F0007FF0000001FFF0007FF0000001FFF0007FF0000001FFE0007FF0000003FFE0007FF0
+000003FFC0007FF0000007FFC0007FF000000FFF80007FF000001FFF00007FF000003FFE
+00007FF00001FFFC00FFFFFFFFFFFFF800FFFFFFFFFFFFE000FFFFFFFFFFFF8000FFFFFF
+FFFFF80000>
+64 59 -4 58 70] 66 dc
+cmbx10.746 sf
+[<FFFFFFFFFFFC0000000000FFFFFFFFFFFFF000000000FFFFFFFFFFFFFE00000000FFFF
+FFFFFFFFFF80000000FFFFFFFFFFFFFFE0000000001FFF80001FFFF8000000001FFF8000
+01FFFC000000001FFF8000007FFF000000001FFF8000003FFF800000001FFF8000001FFF
+800000001FFF8000000FFFC00000001FFF8000000FFFE00000001FFF8000000FFFE00000
+001FFF80000007FFF00000001FFF80000007FFF00000001FFF80000007FFF80000001FFF
+80000007FFF80000001FFF80000007FFF80000001FFF80000007FFF80000001FFF800000
+07FFF80000001FFF80000007FFF80000001FFF80000007FFF80000001FFF80000007FFF8
+0000001FFF80000007FFF00000001FFF80000007FFF00000001FFF8000000FFFE0000000
+1FFF8000000FFFE00000001FFF8000000FFFC00000001FFF8000001FFF800000001FFF80
+00003FFF000000001FFF800000FFFE000000001FFF800003FFF8000000001FFF80001FFF
+F0000000001FFFFFFFFFFFC0000000001FFFFFFFFFFE00000000001FFFFFFFFFF8000000
+00001FFFFFFFFFFE00000000001FFF80007FFF80000000001FFF80001FFFC0000000001F
+FF800007FFE0000000001FFF800003FFF0000000001FFF800001FFF8000000001FFF8000
+01FFFC000000001FFF800000FFFE000000001FFF800000FFFE000000001FFF8000007FFE
+000000001FFF8000007FFF000000001FFF8000007FFF000000001FFF8000007FFF000000
+001FFF8000007FFF000000001FFF8000007FFF000000001FFF8000007FFF000000001FFF
+8000007FFF000000001FFF8000007FFF800000001FFF8000007FFF800000001FFF800000
+7FFF800000001FFF8000007FFF800000001FFF8000007FFF800000001FFF8000007FFF80
+00E0001FFF8000007FFF8001F0001FFF8000007FFFC001F0001FFF8000007FFFC001F000
+1FFF8000003FFFC001F0001FFF8000003FFFC003F0001FFF8000001FFFE003E0001FFF80
+00000FFFE007E0FFFFFFFFF00007FFF007C0FFFFFFFFF00003FFFC1F80FFFFFFFFF00001
+FFFFFF00FFFFFFFFF000007FFFFE00FFFFFFFFF000001FFFFC000000000000000000FFF0
+00>
+88 72 -4 70 89] 82 dc
+cmti10.300 sf
+[<01FFC0003C0000380000380000380000380000700000700000700000700000E00000E0
+0000E00000E00001C00001C00001C00001C0000380000380000380000380000700000700
+000700000700000F0000FFE000>
+24 28 -2 27 16] 73 dc
+[<007FF0000780000700000700000700000700000E00000E00000E00000E00001C00001C
+00001C00001C0000380000380000380000380000700000700000700000700060E000E0E0
+00C0C00081C0008380004700003C0000>
+24 29 -5 27 22] 74 dc
+cmr10.300 sf
+[<FFFFF0>
+24 1 0 11 21] 123 dc
+58 @bop1
+cmcsc10.300 sf
+723 1718(a)s
+cmbx10.622 sf
+177 378(App)s
+3(endix)h
+34(B)h
+cmbx10.746 sf
+177 610(References)s
+cmti10.300 sf
+1524 1025(Communic)s
+-2(ations)h
+17(of)h
+17(the)h
+177 1075(A)s
+-1(CM)h
+1512 1972(Communic)s
+-2(ations)h
+23(of)h
+23(the)h
+177 2022(A)s
+-1(CM)h
+1635 2096(SIAM)s
+18(Journal)h
+17(of)h
+177 2146(Computing)s
+cmbx10.300 sf
+177 851([ANSI])s
+177 1025([Ben)s
+-1(tley86])h
+177 1150([Hoare80])s
+177 1324([Horton90])s
+177 1399([Kernighan88])s
+177 1523([Kn)s
+-1(uth83])h
+177 1648([Kn)s
+-1(uth84])h
+177 1723([Lamp)s
+1(ort86])h
+177 1847([Rabino)s
+-1(witz90])h
+177 1972([Ramsey89])s
+177 2096([T)s
+-4(arjan72])h
+177 2221([USDOD83])s
+cmr10.300 sf
+342 851(Australian)s
+20(Standard)h
+21(AS)h
+20(3955-1991,)h
+19(\\Programm)h
+-1(ing)h
+18(Languages)h
+20(|)h
+20(C",)h
+20(\(ISBN:)h
+20(0-7262-)h
+177 901(6970-0\),)s
+16(12)h
+17(July)h
+17(1991.)h
+27(Iden)h
+-1(tical)h
+17(to:)h
+24(In)h
+-1(ternational)h
+17(Standard)h
+17(ISO/IEC)h
+18(9899:)h
+23(1990)h
+16(Programm)h
+-1(ing)h
+177 951(Languages)s
+14(|)h
+13(C.)h
+427 1025(Ben)s
+-1(tley)h
+16(J.,)h
+16(\\Programm)h
+-1(i)h
+-1(ng)h
+14(P)h
+-1(earls:)h
+22(Literate)h
+16(Programmi)h
+-1(ng",)h
+274 1075(,)s
+13(V)h
+-3(ol.)h
+13(29,)h
+12(No.)h
+14(5,)h
+13(pp.)h
+13(364{369,)h
+12(1986.)h
+388 1150(Hoare)s
+10(C.A.R.,)h
+9(\\The)h
+10(Emp)h
+1(eror's)h
+10(Old)h
+10(Clothes",)h
+10(T)h
+-3(uring)h
+10(Aw)h
+-1(ard)h
+10(Lecture,)h
+12(1980,)h
+10(from)h
+8(\\A)h
+-1(CM)h
+177 1200(T)s
+-3(uring)h
+15(Aw)h
+-1(ard)h
+15(Lectures:)h
+24(The)h
+16(First)h
+15(Tw)h
+-1(en)h
+-1(t)h
+-1(y)h
+16(Y)h
+-3(ears)h
+16(1966{1985",)h
+13(A)h
+-1(CM)h
+15(Press,)h
+17(New)h
+17(Y)h
+-3(ork,)h
+15(\(ISBN:)h
+15(0-)h
+177 1249(201-07794-9\),)s
+11(1987)h
+13(\(see)h
+15(p.)h
+14(155\).)h
+415 1324(Horton)s
+14(M.R.,)h
+12(\\P)h
+-1(ortable)h
+14(C)h
+14(Soft)h
+-1(w)h
+-1(are",)h
+12(Pren)h
+-1(tice)h
+16(Hall,)h
+12(\(ISBN:)h
+14(0-13-868050-)h
+-1(7\),)h
+12(1990.)h
+487 1399(Kernighan)s
+17(B.W.,)h
+17(Ritc)h
+-1(hie)h
+16(D.M.,)h
+16(\\The)h
+17(C)h
+17(Programm)h
+-1(ing)h
+14(Language",)h
+17(\(second)h
+18(edi-)h
+177 1449(tion,\\ANSI)s
+13(C"\),)h
+13(Pren)h
+-1(tice)h
+16(Hall,)h
+12(\(ISBN:)h
+14(0-13-110362-)h
+-1(8\),)h
+12(1988.)h
+401 1523(Kn)s
+-1(uth)h
+15(D.E.,)h
+14(\\The)h
+15(WEB)h
+15(System)h
+14(of)h
+15(Structured)h
+16(Do)h
+1(cumen)h
+-1(tation",)h
+13(\(W)h
+-3(eb)h
+15(User)h
+16(Man)h
+-1(ual,)h
+177 1573(V)s
+-3(ersion)h
+14(2.5,)h
+13(No)h
+-1(v)h
+-1(em)h
+-1(b)h
+1(er,)h
+12(1983\),)h
+13(Stanford)h
+13(Univ)h
+-1(ersit)h
+-1(y)h
+-3(,)h
+13(1983.)h
+399 1648(Kn)s
+-1(uth)h
+15(D.E.,)h
+12(\\The)h
+14(T)h
+767 1657(E)s
+790 1648(Xb)s
+1(o)h
+1(ok",)h
+13(Addison-W)h
+-3(esley)h
+-3(,)h
+13(\(ISBN:)h
+14(0-201-13448-)h
+-1(9\),)h
+12(1984.)h
+449 1723(Lamp)s
+1(ort)h
+16(L.,)h
+16(\\L)h
+4(T)h
+765 1736(E)s
+788 1723(X:)s
+16(A)h
+16(Do)h
+1(cumen)h
+-1(t)h
+16(Preparation)h
+17(System",)h
+16(Addison-W)h
+-3(esley)h
+-3(,)h
+16(\(ISBN:)h
+177 1773(0-201-15790-)s
+-1(X\),)h
+12(1986.)h
+504 1847(Rabino)s
+-1(witz)h
+16(H.,)h
+17(Sc)h
+-1(haap)h
+17(C.,)h
+18(\\P)h
+-1(ortable)h
+17(C",)h
+16(Pren)h
+-1(tice)h
+19(Hall,)h
+16(\(ISBN:0-13-685967-4\))h
+177 1897(1990.)s
+438 1972(Ramsey)s
+21(N.,)h
+24(\\W)h
+-3(ea)h
+-1(ving)h
+21(a)h
+22(Language-Indep)h
+1(enden)h
+-1(t)h
+23(WEB",)h
+274 2022(,)s
+13(V)h
+-3(ol.)h
+13(32,)h
+12(No.)h
+14(9,)h
+13(pp.)h
+13(1051{1055,)h
+11(1989.)h
+404 2096(T)s
+-3(arjan)h
+15(R.E.,)h
+16(\\Depth-First)h
+16(Searc)h
+-1(h)h
+18(and)h
+16(Linear)h
+16(Graph)h
+16(Algorithms",)h
+374 2146(,)s
+14(V)h
+-3(ol.)h
+12(1,)h
+13(No.)h
+14(2,)h
+13(pp.)h
+13(146{160,)h
+12(June)h
+15(1972.)h
+442 2221(\\The)s
+19(Programm)h
+-1(ing)h
+16(Language)h
+18(Ada)h
+18(Reference)h
+20(Man)h
+-1(ual",)h
+18(American)h
+18(National)h
+17(Stan-)h
+177 2271(dards)s
+15(Institute)h
+14(Inc,)h
+14(ANSI/MIL-STD-1815A-1983,)h
+11(1983.)h
+1042 2940(57)s
+58 @eop
+59 @bop0
+cmbx10.746 sf
+[<7FFFFF801FFFFF007FFFFF801FFFFF007FFFFF801FFFFF007FFFFF801FFFFF007FFFFF
+801FFFFF00007FF80001FF0000007FFC0001FC0000003FFE0003F80000001FFF0007F000
+00000FFF0007E000000007FF800FC000000003FFC01F8000000003FFE03F8000000001FF
+F07F0000000000FFF8FE00000000007FF9FC00000000003FFFF800000000003FFFF00000
+0000001FFFE000000000000FFFC0000000000007FFC0000000000003FFC0000000000001
+FFE0000000000001FFF0000000000001FFF8000000000003FFFC000000000003FFFE0000
+00000007FFFE00000000000FEFFF00000000001FCFFF80000000003F87FFC0000000007F
+03FFE000000000FE01FFE000000001FC00FFF000000001F8007FF800000003F0007FFC00
+000007F0003FFE0000000FE0001FFF0000001FC0000FFF0000003F800007FF800000FF80
+0007FFC000FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFFFF
+C0FFFFF8003FFFFFC0>
+64 46 -2 45 63] 120 dc
+cmr10.300 sf
+[<7FFFFFC0FFFFFFE0000000000000000000000000000000000000000000000000000000
+0000000000FFFFFFE07FFFFFC0>
+32 12 -2 15 32] 61 dc
+[<003F800000C0600003001800040004000800020010000100201F00802070808040E040
+4040C0384041C03840818038208380382083803820838038208380382083803820818038
+2041C0382040C0384040E0784020709880201F0F00100000000800000004000000030001
+E000C01F80003FF000>
+32 29 -2 28 32] 64 dc
+[<7FFFF07C01F07001E06003C06003C0400780400F80400F00401E00001E00003C00007C
+0000780000F00000F00001E00003E00003C0100780100780100F00101F00301E00203C00
+203C00607800E0F803E0FFFFE0>
+24 28 -2 27 25] 90 dc
+59 @bop1
+cmbx10.746 sf
+177 279(Index)s
+cmr10.300 sf
+177 487(.cld)s
+14(\014le)h
+13(18)h
+177 537(==)s
+15(14)h
+177 587(@M)s
+14(23)h
+177 637(@Z)s
+15(23)h
+177 687(abbreviations)s
+14(iden)h
+-1(ti\014er)h
+14(28)h
+177 737(ac)s
+-1(kno)h
+-1(wledgemen)h
+-1(ts)h
+13(7)h
+177 787(Ada)s
+14(18)h
+177 837(Ada)s
+14(27)h
+177 886(Ada)s
+14(7)h
+177 936(adding)s
+13(features)h
+15(36)h
+177 986(Adelaide)s
+14(Univ)h
+-1(ersit)h
+-1(y)h
+14(27)h
+177 1036(analyser)s
+14(45)h
+177 1086(Andrew)s
+15(T)h
+-3(rev)h
+-1(orro)h
+-1(w)h
+14(9)h
+177 1136(ANSI)s
+14(28)h
+177 1186(ANSI)s
+14(57)h
+177 1236(an)s
+-1(tiquated)h
+14(features)h
+15(43)h
+177 1286(ASCI)s
+1(I)h
+14(mnemoni)h
+-1(cs)h
+13(45)h
+177 1336(asking)s
+13(for)h
+14(trouble)h
+14(28)h
+177 1386(authorit)s
+-1(y)h
+13(design)h
+15(36)h
+177 1436(authorit)s
+-1(y)h
+13(securit)h
+-1(y)h
+15(36)h
+177 1486(a)s
+-1(v)h
+-2(ailabil)h
+-1(it)h
+-1(y)h
+11(program)h
+13(37)h
+177 1536(bac)s
+-1(kw)h
+-1(ards)h
+14(compatibili)h
+-1(t)h
+-1(y)h
+12(11)h
+177 1586(Barry)s
+15(Dwy)h
+-1(er)h
+14(7)h
+177 1636(Begg)s
+14(Jerem)h
+-1(y)h
+14(7)h
+177 1686(Ben)s
+-1(tley)h
+15(Jon)h
+14(11)h
+177 1736(Ben)s
+-1(tley86)h
+14(11)h
+177 1786(Ben)s
+-1(tley86)h
+14(57)h
+177 1836(blank)s
+13(inden)h
+-1(tation)h
+14(12)h
+177 1886(blank)s
+13(inden)h
+-1(tation)h
+14(12)h
+177 1935(break)s
+-1(out,)h
+14(GNU)h
+13(41)h
+177 1985(Brissenden)s
+16(Roger)h
+14(7)h
+177 2035(c)s
+-1(hanges)h
+15(dangers)h
+14(35)h
+177 2085(co)s
+1(ding)h
+14(st)h
+-1(yle)h
+14(28)h
+177 2135(comma)s
+-1(nd)h
+12(in)h
+-1(terface)h
+15(43)h
+177 2185(comma)s
+-1(nd)h
+12(in)h
+-1(terpreter)h
+16(43)h
+177 2235(comma)s
+-1(nd)h
+12(line)h
+14(in)h
+-1(terface)h
+14(design)h
+14(goals)h
+13(19)h
+177 2285(comma)s
+-1(nd)h
+12(line)h
+14(in)h
+-1(terface)h
+14(18)h
+177 2335(comma)s
+-1(nd)h
+12(setall)h
+14(43)h
+177 2385(commen)s
+-1(t)h
+12(duplication)h
+13(18)h
+177 2435(Comm)s
+-2(unicati)h
+-1(ons)h
+12(of)h
+14(the)h
+14(A)h
+-1(CM)h
+14(11)h
+177 2485(compatibili)s
+-1(t)h
+-1(y)h
+12(bac)h
+-1(kw)h
+-1(ards)h
+14(11)h
+177 2535(compiler)s
+13(ThinkC)h
+13(30)h
+177 2585(compiler)s
+13(35)h
+177 2635(conditionals)s
+13(44)h
+177 2685(con)s
+-1(tiguous)h
+14(mem)h
+-1(ory)h
+12(45)h
+177 2735(cop)s
+-1(yrigh)h
+-1(t)h
+14(la)h
+-1(w)h
+13(38)h
+177 2785(cop)s
+-1(yrigh)h
+-1(t)h
+14(notice)h
+14(1)h
+177 2835(cop)s
+-1(yrigh)h
+-1(t)h
+14(38)h
+1136 487(correctness)s
+16(47)h
+1136 537(coun)s
+-1(ting)h
+13(diagnostic)h
+13(43)h
+1136 587(cross)s
+15(references)h
+16(46)h
+1136 637(dangers)s
+14(c)h
+-1(hanges)h
+15(35)h
+1136 687(dangers)s
+14(inden)h
+-1(tation)h
+13(13)h
+1136 737(dangers)s
+14(languages)h
+14(35)h
+1136 787(Da)s
+-1(vid)h
+12(Hulse)h
+15(27)h
+1136 837(Da)s
+-1(vid)h
+12(Hulse)h
+15(7)h
+1136 886(DCL)s
+13(13)h
+1136 936(deriv)s
+-1(ed)h
+14(w)h
+-1(ork)h
+14(38)h
+1136 986(design)s
+14(authorit)h
+-1(y)h
+13(36)h
+1136 1036(design)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(11)h
+1136 1086(design)s
+14(goals)h
+13(comm)h
+-1(and)h
+12(line)h
+13(in)h
+-1(terface)h
+15(19)h
+1136 1136(design)s
+14(language)h
+13(44)h
+1136 1186(detection)s
+15(recursion)h
+15(45)h
+1136 1236(diagnostic)s
+13(coun)h
+-1(ting)h
+13(43)h
+1136 1286(diagnostic)s
+13(messages)h
+14(25)h
+1136 1336(diagnostics)s
+13(47)h
+1136 1386(do)s
+1(cumen)h
+-1(t)h
+13(structure)h
+16(macro)h
+13(structure)h
+16(23)h
+1136 1436(do)s
+1(cumen)h
+-1(t)h
+13(structure)h
+16(16)h
+1136 1486(do)s
+1(cumen)h
+-1(t)h
+13(structure)h
+16(23)h
+1136 1536(do)s
+1(cumen)h
+-1(tation)h
+12(out)h
+14(of)h
+13(date)h
+15(18)h
+1136 1586(do)s
+1(cumen)h
+-1(tation)h
+12(43)h
+1136 1636(Donald)s
+12(Kn)h
+-1(uth)h
+15(11)h
+1136 1686(Donald)s
+12(Kn)h
+-1(uth)h
+15(7)h
+1136 1736(duplication)s
+12(commen)h
+-1(t)h
+12(18)h
+1136 1786(Dwy)s
+-1(er)h
+14(Barry)h
+14(7)h
+1136 1836(e\016ciency)s
+14(47)h
+1136 1886(EOL)s
+14(represen)h
+-1(tation)h
+15(45)h
+1136 1935(example)s
+12(o\016cial)h
+13(43)h
+1136 1985(extensions)s
+15(\014lename)h
+12(20)h
+1136 2035(factor)s
+14(glue)h
+13(46)h
+1136 2085(features)s
+15(adding)h
+13(36)h
+1136 2135(features)s
+15(an)h
+-1(tiquated)h
+13(43)h
+1136 2185(features)s
+15(mo)h
+1(di\014catio)h
+-1(n)h
+12(35)h
+1136 2235(features)s
+15(remo)h
+-1(ving)h
+12(35)h
+1136 2285(\014le)s
+14(.cld)h
+13(18)h
+1136 2335(\014le)s
+14(extension)h
+14(protection)h
+15(37)h
+1136 2385(\014le)s
+14(mark)h
+-1(ers)h
+13(44)h
+1136 2435(\014le)s
+14(names)h
+13(19)h
+1136 2485(\014le)s
+14(names)h
+13(21)h
+1136 2535(\014le)s
+14(signature)h
+14(44)h
+1136 2585(\014lename)s
+12(extensions)h
+15(20)h
+1136 2635(\014lename)s
+12(inheritance)h
+15(20)h
+1136 2685(\014lenames)s
+13(length)h
+14(29)h
+1136 2735(\014lenames)s
+13(p)h
+1(ortable)h
+14(21)h
+1136 2785(formal)s
+11(parameter)h
+14(list)h
+13(44)h
+1136 2835(F)s
+-3(unnelW)h
+-3(eb)h
+13(design)h
+14(11)h
+1042 2940(58)s
+59 @eop
+60 @bop0
+60 @bop1
+cmr10.300 sf
+177 42(F)s
+-3(unnelW)h
+-3(eb)h
+14(future)h
+14(43)h
+177 91(F)s
+-3(unnelW)h
+-3(eb)h
+14(history)h
+13(27)h
+177 141(F)s
+-3(unnelW)h
+-3(eb)h
+14(impl)h
+-1(em)h
+-1(en)h
+-1(tation)h
+12(27)h
+177 191(F)s
+-3(unnelW)h
+-3(eb)h
+14(manag)h
+-1(em)h
+-1(en)h
+-1(t)h
+13(39)h
+177 241(F)s
+-3(unnelW)h
+-3(eb)h
+14(mo)h
+1(di\014catio)h
+-1(n)h
+12(35)h
+177 291(F)s
+-3(unnelW)h
+-3(eb)h
+14(motiv)h
+-3(atio)h
+-1(n)h
+12(11)h
+177 341(F)s
+-3(unnelW)h
+-3(eb)h
+14(o\016cial)h
+12(39)h
+177 391(F)s
+-3(unnelW)h
+-3(eb)h
+14(past)h
+14(use)h
+14(27)h
+177 441(F)s
+-3(unnelW)h
+-3(eb)h
+14(protection)h
+14(37)h
+177 490(F)s
+-3(unnelW)h
+-3(eb)h
+14(syn)h
+-1(tax)h
+13(14)h
+177 540(F)s
+-3(unnelW)h
+-3(eb)h
+14(V1)h
+13(11)h
+177 590(F)s
+-3(unnelW)h
+-3(eb)h
+14(v)h
+-1(ersion)h
+14(1)h
+13(27)h
+177 640(F)s
+-3(unnelW)h
+-3(eb)h
+14(v)h
+-1(ersion)h
+14(2)h
+13(27)h
+177 690(F)s
+-3(unnelW)h
+-3(eb)h
+14(v)h
+-1(ersion)h
+14(3)h
+13(27)h
+177 740(F)s
+-3(unnelW)h
+-3(eb)h
+14(writing)h
+13(itself)h
+13(28)h
+177 790(future)s
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(43)h
+177 840(genealogy)s
+13(program)h
+13(36)h
+177 889(generic)s
+15(t)h
+-1(yp)h
+1(esetter)h
+16(46)h
+177 939(glue)s
+14(factor)h
+14(46)h
+177 989(GNU)s
+14(break)h
+-1(out)h
+14(41)h
+177 1039(GNU)s
+14(license)h
+15(35)h
+177 1089(GNU)s
+14(license)h
+15(39)h
+177 1139(GNU)s
+14(License)h
+15(49)h
+177 1189(GNU)s
+14(v)h
+-1(ersion)h
+14(41)h
+177 1239(Hac)s
+-1(k)h
+-1(ett)h
+15(Simon)h
+12(7)h
+177 1288(headings)s
+14(16)h
+177 1338(heap)s
+14(memory)h
+12(29)h
+177 1388(hierarc)s
+-1(hical)h
+14(structure)h
+16(23)h
+177 1438(history)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(27)h
+177 1488(Hoare80)s
+14(36)h
+177 1538(Hoare80)s
+14(57)h
+177 1588(Horton90)s
+14(28)h
+177 1638(Horton90)s
+14(57)h
+177 1687(Hulse)s
+15(Da)h
+-1(vid)h
+12(27)h
+177 1737(Hulse)s
+15(Da)h
+-1(vid)h
+12(7)h
+177 1787(iden)s
+-1(ti\014er)h
+14(abbreviations)h
+14(28)h
+177 1837(iden)s
+-1(ti\014er)h
+14(28)h
+177 1887(implem)s
+-1(en)h
+-1(tation)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(27)h
+177 1937(include)s
+14(\014le)h
+14(suppression)h
+15(46)h
+177 1987(inden)s
+-1(tation)h
+13(blank)h
+14(12)h
+177 2037(inden)s
+-1(tation)h
+13(dangers)h
+15(13)h
+177 2086(inden)s
+-1(tation)h
+13(no)h
+14(12)h
+177 2136(inden)s
+-1(tation)h
+13(text)h
+15(12)h
+177 2186(inden)s
+-1(tation)h
+13(text)h
+15(30)h
+177 2236(inden)s
+-1(tation)h
+13(text)h
+15(45)h
+177 2286(inden)s
+-1(tation)h
+13(12)h
+177 2336(inden)s
+-1(tation)h
+13(12)h
+177 2386(inden)s
+-1(ted)h
+15(macro)h
+12(call)h
+13(12)h
+177 2436(index)s
+14(program)h
+12(43)h
+177 2486(inheritance)s
+15(\014lename)h
+12(20)h
+177 2535(in)s
+-1(terface)h
+15(comm)h
+-1(and)h
+12(line)h
+13(18)h
+177 2585(in)s
+-1(terface)h
+15(comm)h
+-1(and)h
+12(43)h
+177 2635(in)s
+-1(terpreter)h
+16(comm)h
+-1(and)h
+12(43)h
+177 2685(in)s
+-1(terpreter)h
+16(shell)h
+14(43)h
+177 2735(in)s
+-1(v)h
+-1(o)h
+1(cations)h
+13(n)h
+-1(um)h
+-1(b)h
+1(er)h
+13(22)h
+177 2785(issues)s
+15(miscellaneous)h
+13(18)h
+177 2835(Jerem)s
+-1(y)h
+14(Begg)h
+14(7)h
+1136 42(Jon)s
+14(Ben)h
+-1(tley)h
+14(11)h
+1136 91(Kernighan88)s
+13(28)h
+1136 141(Kernighan88)s
+13(57)h
+1136 191(Kn)s
+-1(uth)h
+14(Donald)h
+13(11)h
+1136 241(Kn)s
+-1(uth)h
+14(Donald)h
+13(7)h
+1136 291(Kn)s
+-1(uth83)h
+13(11)h
+1136 341(Kn)s
+-1(uth83)h
+13(57)h
+1136 391(Kn)s
+-1(uth84)h
+13(57)h
+1136 441(Kn)s
+-1(uth84)h
+13(9)h
+1136 490(Lamp)s
+1(ort86)h
+12(57)h
+1136 540(Lamp)s
+1(ort86)h
+12(9)h
+1136 590(language)s
+13(design)h
+14(44)h
+1136 640(languages)s
+13(dangers)h
+15(35)h
+1136 690(LaT)s
+-3(eX)h
+13(9)h
+1136 740(LaT)s
+-3(eX)h
+13(9)h
+1136 790(la)s
+-1(w)h
+13(cop)h
+-1(yrigh)h
+-1(t)h
+13(38)h
+1136 840(leak)s
+-2(age)h
+13(mem)h
+-1(ory)h
+12(30)h
+1136 889(length)s
+13(\014lenames)h
+14(29)h
+1136 939(license)s
+14(GNU)h
+14(35)h
+1136 989(license)s
+14(GNU)h
+14(39)h
+1136 1039(License)s
+15(GNU)h
+13(49)h
+1136 1089(license)s
+14(38)h
+1136 1139(lister)s
+14(46)h
+1136 1189(Macin)s
+-1(tosh)h
+14(29)h
+1136 1239(Macin)s
+-1(tosh)h
+14(30)h
+1136 1288(Macin)s
+-1(tosh)h
+14(9)h
+1136 1338(macro)s
+12(call)h
+13(syn)h
+-1(tax)h
+14(16)h
+1136 1388(macro)s
+12(de\014nition)h
+14(syn)h
+-1(tax)h
+14(14)h
+1136 1438(macro)s
+12(structure)h
+16(do)h
+1(cumen)h
+-1(t)h
+14(structure)h
+16(23)h
+1136 1488(macro)s
+12(structure)h
+16(23)h
+1136 1538(mak)s
+-1(e)h
+12(44)h
+1136 1588(mall)s
+-1(o)h
+1(c)h
+12(29)h
+1136 1638(managem)s
+-1(en)h
+-1(t)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(39)h
+1136 1687(man)s
+-1(ual)h
+-1(s)h
+12(mo)h
+1(difying)h
+11(38)h
+1136 1737(mapp)s
+1(er)h
+13(44)h
+1136 1787(mark)s
+-1(ers)h
+13(\014le)h
+14(44)h
+1136 1837(mem)s
+-1(ory)h
+12(con)h
+-1(tiguous)h
+14(45)h
+1136 1887(mem)s
+-1(ory)h
+12(heap)h
+14(29)h
+1136 1937(mem)s
+-1(ory)h
+12(leak)h
+-2(age)h
+13(30)h
+1136 1987(mem)s
+-1(ory)h
+12(pac)h
+-1(k)h
+-2(age)h
+14(29)h
+1136 2037(mem)s
+-1(ory)h
+12(stac)h
+-1(k)h
+14(30)h
+1136 2086(mem)s
+-1(ory)h
+12(static)h
+14(30)h
+1136 2136(mem)s
+-1(ory)h
+12(use)h
+15(of)h
+13(29)h
+1136 2186(messages)s
+14(diagnostic)h
+13(25)h
+1136 2236(miscellaneous)s
+12(issues)h
+15(18)h
+1136 2286(mnem)s
+-1(onics)h
+12(ASCI)h
+1(I)h
+14(45)h
+1136 2336(mo)s
+1(di\014catio)h
+-1(n)h
+12(features)h
+15(35)h
+1136 2386(mo)s
+1(di\014catio)h
+-1(n)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+14(35)h
+1136 2436(mo)s
+1(dif)h
+-1(ying)h
+12(man)h
+-1(ual)h
+-1(s)h
+12(38)h
+1136 2486(motiv)s
+-3(atio)h
+-1(n)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+14(11)h
+1136 2535(MSDOS)s
+14(29)h
+1136 2585(names)s
+13(\014le)h
+14(19)h
+1136 2635(names)s
+13(\014le)h
+14(21)h
+1136 2685(naming)s
+11(p)h
+1(oin)h
+-1(ters)h
+15(29)h
+1136 2735(naming)s
+11(t)h
+-1(yp)h
+1(es)h
+15(29)h
+1136 2785(no)s
+13(inden)h
+-1(tation)h
+14(12)h
+1136 2835(no)s
+13(inden)h
+-1(tation)h
+14(12)h
+1042 2940(59)s
+60 @eop
+61 @bop0
+61 @bop1
+cmr10.300 sf
+177 42(notice)s
+14(cop)h
+-1(yrigh)h
+-1(t)h
+14(1)h
+177 91(n)s
+-1(um)h
+-1(b)h
+1(er)h
+13(in)h
+-1(v)h
+-1(o)h
+1(cations)h
+13(22)h
+177 141(n)s
+-1(um)h
+-1(b)h
+1(er)h
+13(output)h
+14(\014les)h
+15(12)h
+177 191(n)s
+-1(um)h
+-1(b)h
+1(ering)h
+13(section)h
+14(23)h
+177 241(Occam's)s
+13(razor)h
+15(12)h
+177 291(o\016cial)s
+13(example)h
+12(43)h
+177 341(o\016cial)s
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(39)h
+177 391(options)s
+14(43)h
+177 441(out)s
+14(of)h
+13(date)h
+14(do)h
+1(cumen)h
+-1(tation)h
+13(18)h
+177 490(output)s
+14(\014les)h
+14(n)h
+-1(um)h
+-1(b)h
+1(er)h
+14(12)h
+177 540(OzT)s
+-3(eX)h
+15(9)h
+177 590(pac)s
+-1(k)h
+-2(age)h
+14(mem)h
+-1(ory)h
+12(29)h
+177 640(parameter)s
+14(list)h
+13(formal)h
+12(44)h
+177 690(parameterized)s
+14(macro)h
+13(call)h
+13(syn)h
+-1(tax)h
+14(16)h
+177 740(parameterized)s
+14(macro)h
+13(de\014nitions)h
+14(syn)h
+-1(tax)h
+14(15)h
+177 790(parser)s
+15(45)h
+177 840(P)s
+-1(ascal)h
+14(12)h
+177 889(past)s
+14(use)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(27)h
+177 939(Ph.D.)s
+13(27)h
+177 989(p)s
+1(oin)h
+-1(ters)h
+15(naming)h
+11(29)h
+177 1039(p)s
+1(ortabilit)h
+-1(y)h
+13(28)h
+177 1089(p)s
+1(ortable)h
+14(\014lenames)h
+13(21)h
+177 1139(pragma)s
+12(syn)h
+-1(tax)h
+14(44)h
+177 1189(pragma)s
+12(v)h
+-1(ersion)h
+14(45)h
+177 1239(preface)s
+15(5)h
+177 1288(presen)s
+-1(tation)h
+15(notes)h
+15(9)h
+177 1338(program)s
+12(a)h
+-1(v)h
+-2(ailabil)h
+-1(it)h
+-1(y)h
+12(37)h
+177 1388(program)s
+12(genealogy)h
+14(36)h
+177 1438(program)s
+12(index)h
+14(43)h
+177 1488(programm)s
+-1(ing)h
+11(p)h
+1(earls)h
+15(11)h
+177 1538(protection)s
+15(\014le)h
+13(extension)h
+15(37)h
+177 1588(protection)s
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(37)h
+177 1638(Rabino)s
+-1(witz90)h
+12(28)h
+177 1687(Rabino)s
+-1(witz90)h
+12(28)h
+177 1737(Rabino)s
+-1(witz90)h
+12(57)h
+177 1787(Ramsey89)s
+12(46)h
+177 1837(Ramsey89)s
+12(57)h
+177 1887(recursion)s
+15(detection)h
+15(45)h
+177 1937(recursion)s
+15(test)h
+15(43)h
+177 1987(reference)s
+1(s)h
+16(cross)h
+15(46)h
+177 2037(reference)s
+1(s)h
+16(57)h
+177 2086(regression)s
+15(testing)h
+15(18)h
+177 2136(remo)s
+-1(ving)h
+12(features)h
+15(35)h
+177 2186(representation)s
+15(EOL)h
+14(45)h
+177 2236(Rob)s
+1(ert)h
+14(Endre)h
+15(T)h
+-3(arjan)h
+13(45)h
+177 2286(Roger)s
+14(Brissenden)h
+16(7)h
+177 2336(Ross)s
+14(William)h
+-2(s)h
+12(1)h
+177 2386(scanner)s
+15(44)h
+177 2436(section)s
+15(n)h
+-1(um)h
+-1(b)h
+1(ering)h
+12(23)h
+177 2486(section)s
+15(syn)h
+-1(tax)h
+14(44)h
+177 2535(sections)s
+15(16)h
+177 2585(securit)s
+-1(y)h
+15(authorit)h
+-1(y)h
+13(36)h
+177 2635(setall)s
+14(comm)h
+-1(and)h
+12(43)h
+177 2685(shell)s
+14(in)h
+-1(terpreter)h
+16(43)h
+177 2735(signature)s
+14(\014le)h
+14(44)h
+177 2785(Simon)s
+12(Hac)h
+-1(k)h
+-1(ett)h
+15(7)h
+177 2835(size)s
+15(stac)h
+-1(k)h
+14(30)h
+1136 42(South)s
+11(Australian)h
+10(Go)h
+-1(v)h
+-1(ernmen)h
+-1(t)h
+10(Departmen)h
+-1(t)h
+10(of)h
+1302 91(Lands)s
+14(28)h
+1136 141(sp)s
+1(eed)h
+15(47)h
+1136 191(spider)s
+14(46)h
+1136 241(stac)s
+-1(k)h
+14(memo)h
+-1(ry)h
+12(30)h
+1136 291(stac)s
+-1(k)h
+14(size)h
+15(30)h
+1136 341(static)s
+14(memo)h
+-1(ry)h
+12(30)h
+1136 391(static)s
+14(v)h
+-2(ariables)h
+13(30)h
+1136 440(strength)s
+15(t)h
+-1(yp)h
+1(esetting)h
+15(46)h
+1136 490(structure)s
+16(do)h
+1(cumen)h
+-1(t)h
+13(16)h
+1136 540(structure)s
+16(do)h
+1(cumen)h
+-1(t)h
+13(23)h
+1136 590(structure)s
+16(hierarc)h
+-1(hical)h
+13(23)h
+1136 640(structure)s
+16(macro)h
+12(23)h
+1136 690(st)s
+-1(yle)h
+14(co)h
+1(ding)h
+13(28)h
+1136 740(suite)s
+14(test)h
+15(47)h
+1136 790(suppression)s
+15(include)h
+14(\014le)h
+14(46)h
+1136 840(syn)s
+-1(tax)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(14)h
+1136 889(syn)s
+-1(tax)h
+13(macro)h
+13(call)h
+13(16)h
+1136 939(syn)s
+-1(tax)h
+13(macro)h
+13(de\014nition)h
+14(14)h
+1136 989(syn)s
+-1(tax)h
+13(parameterized)h
+15(macro)h
+12(call)h
+13(16)h
+1136 1039(syn)s
+-1(tax)h
+13(parameterized)h
+15(macro)h
+12(de\014nitions)h
+14(15)h
+1136 1089(syn)s
+-1(tax)h
+13(pragma)h
+12(44)h
+1136 1139(syn)s
+-1(tax)h
+13(section)h
+15(44)h
+1136 1189(table)s
+13(of)h
+14(con)h
+-1(ten)h
+-1(ts)h
+15(45)h
+1136 1239(tangle)s
+13(45)h
+1136 1288(T)s
+-3(arjan)h
+13(Rob)h
+1(ert)h
+14(Endre)h
+15(45)h
+1136 1338(T)s
+-3(arjan72)h
+12(45)h
+1136 1388(T)s
+-3(arjan72)h
+12(57)h
+1136 1438(test)s
+15(recursion)h
+15(43)h
+1136 1488(test)s
+15(suite)h
+14(47)h
+1136 1538(testing)s
+14(regression)h
+15(18)h
+1136 1588(text)s
+14(inden)h
+-1(tation)h
+13(12)h
+1136 1638(text)s
+14(inden)h
+-1(tation)h
+13(12)h
+1136 1687(text)s
+14(inden)h
+-1(tation)h
+13(30)h
+1136 1737(text)s
+14(inden)h
+-1(tation)h
+13(45)h
+1136 1787(T)s
+-3(eX)h
+14(23)h
+1136 1837(T)s
+-3(eX)h
+14(9)h
+1136 1887(ThinkC)s
+13(compiler)h
+12(30)h
+1136 1937(trademark)s
+13(36)h
+1136 1987(T)s
+-3(rev)h
+-1(orro)h
+-1(w)h
+13(Andrew)h
+15(9)h
+1136 2037(trouble)s
+14(asking)h
+13(for)h
+13(28)h
+1136 2086(t)s
+-1(yp)h
+1(es)h
+14(naming)h
+12(29)h
+1136 2136(t)s
+-1(yp)h
+1(esetter)h
+16(generic)h
+15(46)h
+1136 2186(t)s
+-1(yp)h
+1(esetting)h
+14(strength)h
+16(46)h
+1136 2236(t)s
+-1(yp)h
+1(esetting)h
+14(9)h
+1136 2286(Univ)s
+-1(ersit)h
+-1(y)h
+13(Adelaide)h
+14(27)h
+1136 2336(Unix)s
+13(36)h
+1136 2386(USDOD83)s
+13(27)h
+1136 2436(USDOD83)s
+13(57)h
+1136 2485(use)s
+14(of)h
+14(mem)h
+-1(ory)h
+12(29)h
+1136 2535(v)s
+-2(ariables)h
+13(static)h
+14(30)h
+1136 2585(v)s
+-2(ax)h
+13(vms)h
+12(18)h
+1136 2635(v)s
+-1(ersion)h
+14(GNU)h
+13(41)h
+1136 2685(v)s
+-1(ersion)h
+14(pragma)h
+12(45)h
+1136 2735(video)s
+13(game)h
+13(35)h
+1136 2785(vms)s
+12(v)h
+-2(ax)h
+13(18)h
+1136 2835(w)s
+-1(ea)h
+-1(v)h
+-1(e)h
+14(45)h
+1042 2940(60)s
+61 @eop
+62 @bop0
+62 @bop1
+cmr10.300 sf
+177 42(William)s
+-2(s)h
+13(Ross)h
+13(1)h
+177 91(w)s
+-1(ork)h
+14(38)h
+177 141(writing)s
+13(itself)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(28)h
+1042 2940(61)s
+62 @eop
+@end
diff --git a/web/funnelweb/0stoppress/fw_make.mes b/web/funnelweb/0stoppress/fw_make.mes
new file mode 100644
index 0000000000..3bef9ef7c5
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_make.mes
@@ -0,0 +1,85 @@
+--<Guru>--
+D=09-Oct-1992
+A=Ross Williams
+S=A make file for FunnelWeb
+K=funnelweb make file makefile dougal scott
+--<Guru>--
+A MAKE FILE FOR FUNNELWEB
+=========================
+The distribution kit for FunnelWeb 3.0 does not contain a Makefile.
+The reasons for this omission were a combination of the following:
+
+ * I didn't use a Makefile when I build FunnelWeb:
+ - On the PC I used Borland C++ which does not require a Makefile.
+ - On the Mac I used THINK C which does not require a Makefile.
+ - On the VAX I used a .COM file (supplied).
+ - On Unix I used a compilation shellscript.
+ * Compilers are now so fast that Makefiles are almost unnecessary.
+ * Makefiles can be dangerous if they contain inconsistencies.
+ * Those installing FunnelWeb are more likely to be performing at
+ most one or two compilations, so why do they need a Makefile?
+ * Laziness.
+
+However, the feedback I received indicated that lots of people wanted
+a makefile, and in fact Dougal Scott (dwagon@nella9.cc.monash.edu.au)
+actually sent me one which he constructed using the GNU C -MM
+option. Here it is:
+
+------------------------SLICE and DICE here---------------------------------
+OBJS= analyse.o as.o clock.o command.o data.o dump.o help.o help_gnu.o list.o \
+ lister.o machin.o mapper.o memory.o misc.o option.o parser.o scanner.o \
+ section.o table.o tangle.o texhead.o weave.o writfile.o main.o
+HDRS= analyse.h as.h clock.h command.h data.h dump.h environ.h help.h \
+ help_gnu.h list.h lister.h machin.h mapper.h memory.h misc.h option.h \
+ parser.h scanner.h section.h style.h table.h tangle.h texhead.h weave.h \
+ writfile.h
+CC=gcc
+CFLAGS=-O -Wall
+
+all: fw
+
+fw: $(OBJS)
+ $(CC) -o fw $(OBJS)
+
+analyse.o : analyse.c style.h environ.h analyse.h as.h data.h clock.h list.h \
+ table.h option.h machin.h help.h section.h writfile.h lister.h misc.h
+as.o : as.c style.h environ.h as.h machin.h
+clock.o : clock.c style.h environ.h as.h clock.h machin.h
+command.o : command.c style.h environ.h analyse.h as.h command.h machin.h data.h \
+ clock.h list.h table.h option.h help.h section.h writfile.h dump.h lister.h \
+ memory.h mapper.h misc.h parser.h scanner.h tangle.h weave.h
+data.o : data.c data.h style.h environ.h clock.h list.h table.h option.h machin.h \
+ help.h section.h writfile.h
+dump.o : dump.c style.h environ.h as.h clock.h data.h list.h table.h option.h \
+ machin.h help.h section.h writfile.h dump.h misc.h
+help.o : help.c style.h environ.h as.h help.h help_gnu.h misc.h data.h clock.h \
+ list.h table.h option.h machin.h section.h writfile.h
+help_gnu.o : help_gnu.c style.h environ.h help_gnu.h help_gnu.ctx
+list.o : list.c style.h environ.h as.h machin.h memory.h list.h
+lister.o : lister.c style.h environ.h as.h data.h clock.h list.h table.h option.h \
+ machin.h help.h section.h writfile.h lister.h misc.h
+machin.o : machin.c style.h environ.h as.h machin.h
+main.o : main.c style.h environ.h as.h command.h machin.h data.h clock.h list.h \
+ table.h option.h help.h section.h writfile.h memory.h
+mapper.o : mapper.c style.h environ.h as.h machin.h mapper.h memory.h
+memory.o : memory.c style.h environ.h as.h machin.h memory.h
+misc.o : misc.c style.h environ.h as.h data.h clock.h list.h table.h option.h \
+ machin.h help.h section.h writfile.h memory.h misc.h
+option.o : option.c style.h environ.h as.h data.h clock.h list.h table.h option.h \
+ machin.h help.h section.h writfile.h misc.h
+parser.o : parser.c style.h environ.h as.h data.h clock.h list.h table.h option.h \
+ machin.h help.h section.h writfile.h lister.h mapper.h memory.h misc.h parser.h
+scanner.o : scanner.c style.h environ.h as.h clock.h data.h list.h table.h option.h \
+ machin.h help.h section.h writfile.h dump.h lister.h mapper.h memory.h misc.h \
+ scanner.h
+section.o : section.c style.h environ.h as.h section.h
+table.o : table.c style.h environ.h as.h machin.h memory.h table.h
+tangle.o : tangle.c style.h environ.h as.h data.h clock.h list.h table.h option.h \
+ machin.h help.h section.h writfile.h lister.h memory.h misc.h tangle.h
+texhead.o : texhead.c style.h environ.h texhead.h writfile.h texhead.ctx
+weave.o : weave.c style.h environ.h as.h data.h clock.h list.h table.h option.h \
+ machin.h help.h section.h writfile.h lister.h misc.h texhead.h weave.h
+writfile.o : writfile.c style.h environ.h as.h machin.h writfile.h
+------------------------SLICE and DICE here---------------------------------
+
+--<End of Document>--
diff --git a/web/funnelweb/0stoppress/fw_manual.ps b/web/funnelweb/0stoppress/fw_manual.ps
new file mode 100644
index 0000000000..d5dfd84986
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_manual.ps
@@ -0,0 +1,73567 @@
+%!
+% This is the prolog used by OzTeX 1.6 to convert a DVI file into PostScript.
+
+% Set dev to "LW" if LaserWriter, "LINO" if Linotronic, or "?" if unknown:
+
+/dev (?) def
+statusdict /product known {
+ statusdict /product get
+ (LaserWriter) anchorsearch { pop pop /dev (LW) def } { pop } ifelse
+ statusdict /product get
+ (Linotype) anchorsearch { pop pop /dev (LINO) def } { pop } ifelse
+} if
+
+/@setup { % set up OzTeX's coordinate system
+
+/res exch def % desired resolution (defines dots per inch)
+/voff exch def % vertical offset (in dots)
+/hoff exch def % horizontal offset (in dots)
+/ht exch def % paper height (in dots)
+/wd exch def % paper width (in dots)
+
+/land wd ht gt def % print in landscape orientation?
+/oshift ht res sub neg def % vertical shift (in dots) for portrait origin
+
+dev (?) eq % unknown device?
+{ land
+ { % landscape
+ 90 rotate % rotate axes 90deg anticlockwise
+ 72 res div dup neg scale % units now device dots
+ res dup translate % move to TeX origin
+ voff neg hoff translate % adjust TeX origin if necessary
+ }
+ { % portrait
+ 72 res div dup neg scale % units now device dots
+ res oshift translate % move to TeX origin
+ hoff voff translate % adjust TeX origin if necessary
+ } ifelse
+} if
+
+dev (LW) eq % LaserWriter?
+{
+ % Display model and version in OzTeX window:
+ % (\rmodel = ) print statusdict /product get print
+ % (\rversion = ) print version print (\r) print flush
+
+ land
+ { % landscape
+ 90 rotate % rotate axes 90deg anticlockwise
+ 72 res div dup neg scale % units now device dots
+ res dup translate % move to TeX origin
+ voff neg hoff translate % adjust TeX origin if necessary
+
+ % Model-specific adjustments to origin can be made here:
+ statusdict /product get (LaserWriter) eq
+ { -90 0 translate % move left a bit
+ }
+ { statusdict /product get (LaserWriter Plus) eq
+ { -32 0 translate % move left a bit
+ }
+ { statusdict /product get (LaserWriter II NTX) eq
+ { -20 0 translate % move left a bit
+ }
+ { statusdict /product get (LaserWriter IIg) eq
+ { 0 0 translate
+ }
+ { % some other model
+ 0 0 translate
+ }
+ ifelse } ifelse } ifelse } ifelse
+ }
+ { % portrait
+ 72 res div dup neg scale % units now device dots
+ res oshift translate % move to TeX origin
+ hoff voff translate % adjust TeX origin if necessary
+
+ % Model-specific adjustments to origin can be made here:
+ statusdict /product get (LaserWriter) eq
+ { 0 22 translate % move down a bit
+ }
+ { statusdict /product get (LaserWriter Plus) eq
+ { 0 0 translate
+ }
+ { statusdict /product get (LaserWriter II NTX) eq
+ { 0 14 translate % move down a bit
+ }
+ { statusdict /product get (LaserWriter IIg) eq
+ { 0 0 translate
+ }
+ { % some other model
+ 0 0 translate
+ }
+ ifelse } ifelse } ifelse } ifelse
+ } ifelse
+
+ % The matrix produced above can cause scaling problems,
+ % so round each matrix value to nearest integer and use setmatrix:
+ matrix currentmatrix
+ dup dup 0 get round cvi 0 exch put
+ dup dup 1 get round cvi 1 exch put
+ dup dup 2 get round cvi 2 exch put
+ dup dup 3 get round cvi 3 exch put
+ dup dup 4 get round cvi 4 exch put
+ dup dup 5 get round cvi 5 exch put
+ setmatrix
+
+ % Display new matrix in OzTeX window:
+ % matrix currentmatrix
+ % dup 0 get ( ) cvs print ( ) print
+ % dup 1 get ( ) cvs print ( ) print
+ % dup 2 get ( ) cvs print ( ) print
+ % dup 3 get ( ) cvs print ( ) print
+ % dup 4 get ( ) cvs print ( ) print
+ % dup 5 get ( ) cvs print (\r) print flush
+ % pop
+} if
+
+dev (LINO) eq % Linotronic?
+{ land
+ { % landscape
+ 90 rotate % rotate axes 90deg anticlockwise
+ 72 res div dup neg scale % units now device dots
+ res dup translate % move to TeX origin
+ voff neg hoff translate % adjust TeX origin if necessary
+ }
+ { % portrait
+ newpath clippath pathbbox % push LLx LLy URx URy (URy = ht in pts)
+ /paperht exch 72 div def % paper height in inches
+ pop pop pop % remove URx LLy LLx
+ 72 res div dup neg scale % units now device dots
+ res paperht res mul neg res add
+ translate % move to TeX origin
+ hoff voff translate % adjust TeX origin if necessary
+ } ifelse
+} if
+
+% Some fine-tuning of the code used to draw a rule is necessary.
+% Use page 18 in nasty.dvi to check results:
+
+dev (LW) eq % LaserWriter?
+{ version cvr 38.0 le % early model?
+ { land
+ { % landscape
+ /r % set a wd by ht rule at h,v
+ { newpath
+ moveto % move to h,v
+ /ht exch 1 sub def % reduce height by 1
+ /wd exch 1 sub def % ditto for width
+ wd 0 rlineto
+ 0 ht neg rlineto
+ wd neg 0 rlineto
+ fill
+ } bind def
+ }
+ { % portrait
+ /r % set a wd by ht rule at h,v
+ { newpath
+ 1 add moveto % move to h,v+1
+ /ht exch 1 sub def % reduce height by 1
+ /wd exch 1 sub def % ditto for width
+ wd 0 rlineto
+ 0 ht neg rlineto
+ wd neg 0 rlineto
+ fill
+ } bind def
+ } ifelse
+ } if
+ version cvr 2000.0 gt % IIg or newer model?
+ {
+ /r % set a wd by ht rule at h,v
+ { newpath
+ 1 add moveto % move to h,v+1
+ /ht exch def % set height
+ /wd exch def % set width
+ wd 0 rlineto
+ 0 ht neg rlineto
+ wd neg 0 rlineto
+ fill
+ } bind def
+ } if
+} if
+
+/mtrx 6 array def
+mtrx currentmatrix pop % save our new transformation matrix
+
+} def % end of @setup
+
+% @saveVM and @restoreVM are only used if we are conserving VM
+% by downloading font bitmaps more often:
+
+/@saveVM {/prefontVM save def} def
+/@restoreVM {prefontVM restore} def
+
+/@newfont % create new font dict
+{ /maxchcode exch def
+ /fontid exch def
+ fontid 7 dict def
+ fontid load begin
+ /FontType 3 def
+ /FontMatrix [1 0 0 -1 0 0] def % -1 because y scale is negative
+ /FontBBox [0 0 1 1] def
+ /BitMaps maxchcode 1 add array def
+ /BuildChar {CharBuilder} def
+
+ /Encoding 256 array def
+ 0 1 255 {Encoding exch /.notdef put} for
+
+ % The above 2 lines fix a definefont error that occurs on some printers
+ % (eg. the LaserWriter NTX-J). If you have an old LaserWriter and
+ % now get VM errors then you might want to revert to the old code:
+ %
+ % /Encoding maxchcode 1 add array def
+ % 0 1 maxchcode {Encoding exch /.notdef put} for
+
+ end
+ fontid fontid load definefont pop
+} def
+
+% The char data, a bitmap descriptor, is an array with 6 elements;
+% element 0 is either a hex string or an array of hex strings (the latter
+% is required for large PK chars with more than 65535 hex digits):
+
+/ch-image {ch-data 0 get dup type /stringtype ne {N get /N N 1 add def} if
+ } def % hex string
+/ch-width {ch-data 1 get} def % the number of pixels across
+/ch-height {ch-data 2 get} def % the number of pixels tall
+/ch-xoff {ch-data 3 get} def % number of pixels to left of origin
+/ch-yoff {ch-data 4 get} def % number of pixels below origin
+/ch-advw {ch-data 5 get} def % advance width
+
+% The following character builder looks up the char data in the BitMaps array
+% and paints the character:
+
+/CharBuilder % image one char
+{ /ch-code exch def % save the char code
+ /font-dict exch def % and the font dict
+ /ch-data font-dict /BitMaps get
+ ch-code get def
+ /N 0 def
+ ch-advw 0
+ ch-xoff neg ch-height ch-yoff sub 1 sub neg % -xo , -(ht-yo-1)
+ ch-width ch-xoff sub 1 sub ch-yoff % (wd-xo-1) , yo
+ setcachedevice
+ ch-width ch-height true
+ [1 0 0 -1 ch-xoff ch-yoff] % bitmap sent top to bottom
+ {ch-image}
+ imagemask
+} def
+
+/sf {setfont} def % set current font
+
+/dc % define new character
+{ /ch-code exch def
+ /ch-data exch def
+
+ % The following code should be enabled if you have an old LaserWriter.
+ % It attempts to overcome a bug that causes the printer to crash
+ % and print a test page rather then report a VMerror.
+ %
+ % vmstatus % returns: savelevel vmused vmmax
+ % 10000 sub gt % is vmused > (vmmax-10000)?
+ % { pop VMERROR } % causes error message (avoiding crash)
+ % { pop } % pop savelevel
+ % ifelse
+
+ currentfont /BitMaps get ch-code ch-data put
+ currentfont /Encoding get ch-code
+ dup ( ) cvs cvn put % generate unique name
+} bind def
+
+/@bop0 {pop} def % begin DVI page n
+
+/@bop1 % begin setting DVI page n
+{ pop % throw away page number
+ initgraphics % start with a clean slate
+ mtrx setmatrix % switch to our TeX coordinate system
+ /prepageVM save def % save state of VM at start of page
+} def
+
+/@eop % end DVI page n
+{ pop % throw away page number
+ prepageVM restore % restore VM to state at start of page
+ showpage
+} def
+
+/@end { } def % end of file
+
+% h and s are used to typeset downloaded bitmap fonts:
+
+/h {exch 0 rmoveto show} bind def % move right by dh and show (...)
+
+/s {3 1 roll moveto show} bind def % move to h,v and show (...)
+
+% H and S are used to typeset PostScript fonts.
+% We can't use relative horizontal positioning because the advance widths in
+% a PostScript font are not integers and rounding errors would accumulate:
+
+/H {exch v moveto show} bind def % move to h,v and show (...)
+
+/S % ditto, and save v position
+{ 3 1 roll
+ 1 add % v+1 to match baseline of bitmap fonts
+ dup /v exch def
+ moveto show
+} bind def
+
+% r is used to typeset a rule:
+
+/r % set a wd by ht rule at h,v
+{ newpath
+ moveto % move to h,v
+ /ht exch 1 sub def % reduce height by 1
+ /wd exch 1 sub def % ditto for width
+ wd 0 rlineto
+ 0 ht neg rlineto
+ wd neg 0 rlineto
+ fill
+} bind def
+
+% Following procedures are invoked as the result of \special{file}.
+% We change all scaling and graphics back to defaults, but shift the origin
+% to the current position on the page:
+
+/@bsp
+{ /vmag exch def % vertical scaling
+ /hmag exch def % horizontal scaling
+ moveto % move to h,v
+ gsave
+ /prespecialVM save def % save showpage, TeX procedures etc.
+ currentpoint transform
+ initgraphics itransform translate
+ hmag vmag scale
+ land { 90 rotate } if % rotate axes if landscape
+ /showpage { } def % user does not have to remove showpage
+} bind def
+
+/@esp
+{ prespecialVM restore % restore saved showpage value etc.
+ grestore
+} bind def
+
+% Following procedures are invoked as the result of \special{epsf=file}.
+% Note that @bepsf and @eepsf are currently identical to @bsp and @esp
+% but it is a good idea to allow for future changes:
+
+/@bepsf
+{ /vmag exch def % vertical scaling
+ /hmag exch def % horizontal scaling
+ moveto % move to h,v
+ gsave
+ /prespecialVM save def % save showpage, TeX procedures etc.
+ currentpoint transform
+ initgraphics itransform translate
+ hmag vmag scale
+ land { 90 rotate } if % rotate axes if landscape
+ /showpage { } def % user does not have to remove showpage
+} bind def
+
+/@eepsf
+{ prespecialVM restore % restore saved showpage value etc.
+ grestore
+} bind def
+
+% Here is the code to handle bitmaps generated by PICT/PNTG \specials:
+
+/@bitmap
+{ /vmag exch def % vertical scaling
+ /hmag exch def % horizontal scaling
+ /vres exch def % vertical resolution of bitmap
+ /hres exch def % horizontal resolution of bitmap
+ /ht exch def % height
+ /wd exch def % width
+ /hexstring ht string def
+ gsave
+ 1 add translate % set origin to h,v+1
+ res hres div wd mul hmag mul
+ res vres div ht mul vmag mul neg scale
+ wd ht true
+ [ wd 0 0 ht neg 0 ht ]
+ { currentfile hexstring readhexstring pop }
+ imagemask
+ grestore
+} def
+
+% Here are the definitions needed to handle PostScript fonts:
+
+/sp % scaled pts to device dots
+{ 16#10000 div % scaled pts to pts
+ res mul 72.27 div % pts to device dots
+} bind def
+
+/PSfont
+{ /fontname exch def % printer font name
+ /dotsize exch def % scaled dot size
+ /done false def
+
+ % check if fontname is one of the special printer font names
+ % appearing in the current config file's PS font list:
+ fontname /Slanted-Times-Roman eq
+ { /Times-Roman findfont [1 0 .167 -1 0 0] makefont
+ dotsize scalefont setfont
+ /done true def
+ } if
+
+ % other nice tricks can be included here if the appropriate PS font
+ % specification is added to the current config file:
+ % fontname /Extended-Times-Roman eq
+ % { /Times-Roman findfont [1.2 0 0 -1 0 0] makefont
+ % dotsize scalefont setfont
+ % /done true def
+ % } if
+
+ done not
+ { fontname findfont [1 0 0 -1 0 0] makefont
+ dotsize scalefont setfont
+ } if
+} bind def
+
+% count 0 gt
+% { (\r *** Bug in DVItoPS.ps: stuff left on stack *** \r) print flush
+% } if
+
+% --------------- end of OzTeX's prolog ---------------
+
+2480 3496 0 0 300 @setup
+1 @bop0
+/cmr10.746 127 @newfont
+/cmr17.300 127 @newfont
+/cmr10.432 127 @newfont
+cmr17.300 sf
+[<FFFFFF000000FFFFFFF0000007E001FC000003E0003E000003E0001F800003E00007C0
+0003E00007E00003E00003E00003E00003F00003E00001F00003E00001F80003E00001F8
+0003E00001F80003E00001F80003E00001F80003E00001F80003E00001F00003E00003F0
+0003E00003E00003E00007C00003E0000F800003E0001F000003E0003C000003E001F000
+0003FFFF00000003E003E0000003E00078000003E0003C000003E0001E000003E0000F00
+0003E0000F800003E00007800003E00007C00003E00007C00003E00007C00003E00007C0
+0003E00007C00003E00007E00003E00007E00003E00007E00003E00007E00003E00007E0
+0003E00007E00803E00007F00803E00003F00803E00003F00807F00001F010FFFF8000F8
+10FFFF80007C60000000000F80>
+48 50 -4 48 49] 82 dc
+[<001FC00000F0780001C01C00070007000F0007801E0003C01C0001C03C0001E03C0001
+E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000
+F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E0003C00F0007
+8007800F0001C01C0000F07800001FC000>
+32 31 -2 30 33] 111 dc
+[<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800007E00
+003FF0001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC000
+1CE0001CE00018F00038F00030EC0060C301C080FE00>
+24 31 -2 30 26] 115 dc
+[<FFE00007FFC0FFF00007FFC003F000007C0002F80000380002FC00001000027C000010
+00023E00001000023E00001000021F00001000021F80001000020F800010000207C00010
+000207E00010000203E00010000203F00010000201F00010000200F80010000200FC0010
+0002007C00100002007E00100002003E00100002001F00100002001F80100002000F8010
+0002000FC01000020007C01000020003E01000020003F01000020001F01000020000F810
+00020000F810000200007C10000200007E10000200003E10000200001F10000200001F10
+000200000F90000200000FD00002000007D00002000003F00002000003F00002000001F0
+0002000001F00002000000F0000200000070000700000070000F8000003000FFF8000030
+00FFF800001000>
+48 49 -4 48 50] 78 dc
+[<78FCFCFCFC78>
+8 6 -6 5 18] 46 dc
+[<FFFE003FFF8001FFC0FFFE003FFF8001FFC00FE00003F800007E0007C00001F000003C
+0007C00001F00000180003E00000F80000100003E00000F80000100003E00000F8000010
+0001F00000FC0000200001F00000FC0000200001F00000FC0000200000F800013E000040
+0000F800013E0000400000F800013E0000400000FC00033F0000C000007C00021F000080
+00007C00021F00008000007E00021F80008000003E00040F80010000003E00040F800100
+00003E00040F80010000001F000807C0020000001F000807C0020000001F000807C00200
+00000F801003E0040000000F801003E0040000000F801003E0040000000FC02001F00C00
+000007C02001F00800000007C02001F00800000007E02001F80800000003E04000F81000
+000003E04000F81000000003E04000F81000000001F080007C2000000001F080007C2000
+000001F080007C2000000000F900003E4000000000F900003E4000000000F900003E4000
+0000007E00001F80000000007E00001F80000000007E00001F80000000007E00001F8000
+0000003C00000F00000000003C00000F00000000003C00000F0000000000180000060000
+00000018000006000000000018000006000000>
+72 50 -1 48 68] 87 dc
+[<07000F801F801F800F8007000000000000000000000000000000000000000000000001
+801F80FF80FF800F80078007800780078007800780078007800780078007800780078007
+800780078007800780078007800780078007800FC0FFF8FFF8>
+16 48 -2 47 18] 105 dc
+[<01803F80FF80FF800F8007800780078007800780078007800780078007800780078007
+800780078007800780078007800780078007800780078007800780078007800780078007
+80078007800780078007800780078007800780078007800FC0FFFCFFFC>
+16 50 -2 49 18] 108 dc
+[<00FE00000303C0000C00E00010007000100038003C003C003E001C003E001E003E001E
+0008001E0000001E0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F001E
+003E001E003C001E007C001E00F8001E04F8001E04F8001E04F8003E04F8003E0478003E
+047C005E043E008F080F0307F003FC03E0>
+32 31 -3 30 33] 97 dc
+[<0180FE001FC0003F83078060F000FF8C03C1807800FF9001E2003C000FA001E4003C00
+07A000F4001E0007C000F8001E0007C000F8001E00078000F0001E00078000F0001E0007
+8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780
+00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
+F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0
+001E00078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83
+FFF0>
+56 31 -2 30 56] 109 dc
+cmr10.746 sf
+[<FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00007FF800001FFF00003FF0
+000001FF80001FF00000007F80001FF00000003F80001FF00000001F80001FF00000000F
+80001FF00000000780001FF00000000780001FF00000000380001FF000000003C0001FF0
+00000003C0001FF000000001C0001FF000000001C0001FF000000001C0001FF000000001
+C0001FF000000001C0001FF000000000E0001FF000000000E0001FF000000000E0001FF0
+0001C000E0001FF00001C00000001FF00001C00000001FF00001C00000001FF00001C000
+00001FF00001C00000001FF00001C00000001FF00003C00000001FF00003C00000001FF0
+0007C00000001FF0000FC00000001FF0003FC00000001FFFFFFFC00000001FFFFFFFC000
+00001FFFFFFFC00000001FF0003FC00000001FF0000FC00000001FF00007C00000001FF0
+0003C00000001FF00003C00000001FF00001C00000001FF00001C00000001FF00001C000
+00001FF00001C00000001FF00001C00000001FF00001C00000001FF00001C00000001FF0
+0000000000001FF00000000000001FF00000000000001FF00000000000001FF000000000
+00001FF00000000000001FF00000000000001FF00000000000001FF00000000000001FF0
+0000000000001FF00000000000001FF00000000000001FF00000000000001FF000000000
+00001FF00000000000001FF00000000000001FF00000000000003FF80000000000007FFE
+0000000000FFFFFFFF80000000FFFFFFFF80000000FFFFFFFF80000000>
+64 71 -3 70 67] 70 dc
+[<01FE00003FC000FFFE001FFFC000FFFE001FFFC000FFFE001FFFC00003FE00007FC000
+01FE00003FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000
+FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE
+00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00
+001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE0000
+1FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001F
+C00000FE00001FC00000FE00001FC00000FE00003FC00000FE00003FC00000FE00003FC0
+0000FE00007FC000007E00007FC000007E0000FFC000007F0000DFC000003F0001DFE000
+001F80039FF000000FC0071FFFC00007F01E1FFFC00001FFF81FFFC000003FE01FE000>
+56 46 -4 44 57] 117 dc
+[<01FC007F800000FFFC03FFF00000FFFC0781FC0000FFFC1E00FE000003FC38007F0000
+01FC70003F000000FCE0003F800000FCC0003F800000FDC0001FC00000FD80001FC00000
+FF80001FC00000FF00001FC00000FF00001FC00000FF00001FC00000FE00001FC00000FE
+00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00
+001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE0000
+1FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001F
+C00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC0
+0000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC000
+03FF80007FF000FFFFFE1FFFFFC0FFFFFE1FFFFFC0FFFFFE1FFFFFC0>
+56 45 -4 44 57] 110 dc
+[<00007F80000003FFF000000FC0FC00003F003F00007E001F8001FC000FC003F8000FE0
+07F00007F007F00003F00FE00003F81FE00003F81FC00001FC3FC00001FC3FC00001FC7F
+C00001FC7F800001FE7F800000FE7F800000FEFF800000FEFF800000FEFFFFFFFFFEFFFF
+FFFFFEFF80000000FF80000000FF80000000FF80000000FF80000000FF80000000FF8000
+00007F800000007F800000007FC00000003FC00000003FC000000E3FC000000E1FE00000
+1E0FE000001C0FF000003C07F000003803F800007801FC0000F000FC0001E0007F0003C0
+001F8007800007E03E000001FFF80000003FC000>
+40 47 -3 45 46] 101 dc
+[<01FE00FFFE00FFFE00FFFE0003FE0001FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0003FF80FFFFFEFFFFFEFFFF
+FE>
+24 72 -3 71 28] 108 dc
+[<FFFFFFE003FFFFFF8001FFFFF8FFFFFFE003FFFFFF8001FFFFF8FFFFFFE003FFFFFF80
+01FFFFF803FFF800000FFFE000001FFF8000FFE0000003FF80000007FE0000FFC0000001
+FF00000001FC00007FC0000001FF00000001F800007FC0000001FF80000000F000003FE0
+000000FF80000000F000003FE0000000FF80000000E000003FE0000000FF80000000E000
+001FF00000007FC0000001C000001FF00000007FC0000001C000001FF00000007FC00000
+01C000001FF8000000FFE0000003C000000FF8000000FFE00000038000000FF8000000FF
+E00000038000000FFC000001DFF000000780000007FC000001DFF000000700000007FC00
+0001DFF000000700000007FE0000038FF800000F00000003FE0000038FF800000E000000
+03FE0000038FF800000E00000003FF0000078FFC00001E00000001FF00000707FC00001C
+00000001FF00000707FC00001C00000001FF00000F07FE00001C00000000FF80000E03FE
+00003800000000FF80000E03FE00003800000000FF80001E03FF000038000000007FC000
+1C01FF000070000000007FC0001C01FF000070000000007FC0003C01FF80007000000000
+3FE0003800FF8000E0000000003FE0003800FF8000E0000000003FE0003800FF8000E000
+0000001FF00070007FC001C0000000001FF00070007FC001C0000000001FF00070007FC0
+01C0000000001FF800E0003FE003C0000000000FF800E0003FE00380000000000FF800E0
+003FE00380000000000FFC01C0001FF007800000000007FC01C0001FF007000000000007
+FC01C0001FF007000000000007FE0380000FF80F000000000003FE0380000FF80E000000
+000003FE0380000FF80E000000000003FF0780000FFC1E000000000001FF07000007FC1C
+000000000001FF07000007FC1C000000000001FF0F000007FE1C000000000000FF8E0000
+03FE38000000000000FF8E000003FE38000000000000FF9E000003FF380000000000007F
+DC000001FF700000000000007FDC000001FF700000000000007FFC000001FFF000000000
+00003FF8000000FFE00000000000003FF8000000FFE00000000000003FF8000000FFE000
+00000000001FF00000007FC00000000000001FF00000007FC00000000000001FF0000000
+7FC00000000000001FE00000003FC00000000000000FE00000003F800000000000000FE0
+0000003F800000000000000FC00000001F8000000000000007C00000001F000000000000
+0007C00000001F0000000000000007800000000F0000000000000003800000000E000000
+00>
+104 72 -2 70 106] 87 dc
+[<01FE0000000000FFFE0000000000FFFE0000000000FFFE000000000003FE0000000000
+01FE000000000000FE000000000000FE000000000000FE000000000000FE000000000000
+FE000000000000FE000000000000FE000000000000FE000000000000FE000000000000FE
+000000000000FE000000000000FE000000000000FE000000000000FE000000000000FE00
+0000000000FE000000000000FE000000000000FE000000000000FE000000000000FE0000
+00000000FE000000000000FE00FF00000000FE07FFF0000000FE1F01FC000000FE78007F
+000000FEF0001F800000FFE0000FC00000FFC00007E00000FF800007F00000FF000003F8
+0000FF000001FC0000FE000001FE0000FE000001FE0000FE000000FF0000FE000000FF00
+00FE000000FF8000FE000000FF8000FE0000007F8000FE0000007F8000FE0000007FC000
+FE0000007FC000FE0000007FC000FE0000007FC000FE0000007FC000FE0000007FC000FE
+0000007FC000FE0000007FC000FE0000007FC000FE0000007FC000FE0000007F8000FE00
+00007F8000FE000000FF8000FE000000FF0000FE000000FF0000FE000000FF0000FE0000
+01FE0000FE000001FC0000FF000003FC0000FF000003F80000FF800007F00000FFC0000F
+E00000F9E0001FC00000F8F0003F800000F078007E000000F01E03F8000000E00FFFE000
+00000001FE000000>
+56 73 -3 71 57] 98 dc
+[<FFFFFFFE0007FFFFFCFFFFFFFE0007FFFFFCFFFFFFFE0007FFFFFC007FFC0000001FFF
+00003FF800000007FC00001FF000000003F800001FF000000001F000001FF000000000E0
+00001FF000000000E000001FF000000000E000001FF000000000E000001FF000000000E0
+00001FF000000000E000001FF000000000E000001FF000000000E000001FF000000000E0
+00001FF000000000E000001FF000000000E000001FF000000000E000001FF000000000E0
+00001FF000000000E000001FF000000000E000001FF000000000E000001FF000000000E0
+00001FF000000000E000001FF000000000E000001FF000000000E000001FF000000000E0
+00001FF000000000E000001FF000000000E000001FF000000000E000001FF000000000E0
+00001FF000000000E000001FF000000000E000001FF000000000E000001FF000000000E0
+00001FF000000000E000001FF000000000E000001FF000000000E000001FF000000000E0
+00001FF000000000E000001FF000000000E000001FF000000000E000001FF000000000E0
+00001FF000000000E000001FF000000000E000001FF000000000E000001FF000000000E0
+00001FF000000000E000001FF000000000E000001FF000000000E000001FF000000000E0
+00001FF000000001E000000FF000000001C000000FF800000001C000000FF800000001C0
+000007F800000003C0000007F80000000380000003FC0000000780000003FC0000000700
+000001FE0000000F00000001FE0000001E00000000FF0000001C000000007F8000003C00
+0000003FC0000078000000001FE00001F0000000000FF00003E00000000003FC000F8000
+00000000FF007F0000000000003FFFFC0000000000000FFFF000000000000001FF800000
+00>
+72 72 -3 70 77] 85 dc
+[<001FF8060000FFFF0E0003F007FE000F8001FE001F0000FE003E00007E003C00003E00
+7C00003E007800001E00F800001E00F800000E00F800000E00FC00000E00FC00000E00FE
+00000E00FF000000007FC00000007FF80000003FFFE000003FFFFE00001FFFFF800007FF
+FFE00003FFFFF80000FFFFFC00001FFFFE000001FFFF0000000FFF00000001FF80000000
+7F80E000003FC0E000001FC0E000000FC0F000000FC0F0000007C0F0000007C0F8000007
+C0F8000007C0FC00000780FC00000F80FE00000F80FE00000F00FF00001E00FF80003C00
+F9E0007800F0F803F000E03FFFC000C007FC0000>
+40 47 -3 45 41] 115 dc
+[<01FC01F800FFFC0FFE00FFFC1E1F00FFFC383F8003FC707FC001FCE07FC000FCC07FC0
+00FDC07FC000FD807FC000FD803F8000FF800E0000FF00000000FF00000000FF00000000
+FF00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE
+00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00
+000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000
+0000FE00000000FE00000000FE00000000FE00000000FF00000003FF800000FFFFFF8000
+FFFFFF8000FFFFFF8000>
+40 45 -3 44 40] 114 dc
+[<1F003F807FC0FFE0FFE0FFE0FFF0FFF07FF03FB01F3000300030003000300070006000
+60006000E000C001C001800380030007000E000C001C0038003000>
+16 31 -9 71 29] 39 dc
+[<FFFFF800000000001FFFFFFFFFF800000000001FFFFFFFFFF800000000001FFFFF007F
+FC00000000003FFE00003FFC00000000003FFC00001DFE000000000077F800001DFE0000
+00000077F800001DFE000000000077F800001CFF0000000000E7F800001CFF0000000000
+E7F800001C7F8000000001C7F800001C7F8000000001C7F800001C7F8000000001C7F800
+001C3FC00000000387F800001C3FC00000000387F800001C1FE00000000707F800001C1F
+E00000000707F800001C1FE00000000707F800001C0FF00000000E07F800001C0FF00000
+000E07F800001C0FF00000000E07F800001C07F80000001C07F800001C07F80000001C07
+F800001C03FC0000003807F800001C03FC0000003807F800001C03FC0000003807F80000
+1C01FE0000007007F800001C01FE0000007007F800001C00FF000000E007F800001C00FF
+000000E007F800001C00FF000000E007F800001C007F800001C007F800001C007F800001
+C007F800001C007F800001C007F800001C003FC000038007F800001C003FC000038007F8
+00001C001FE000070007F800001C001FE000070007F800001C001FE000070007F800001C
+000FF0000E0007F800001C000FF0000E0007F800001C0007F8001C0007F800001C0007F8
+001C0007F800001C0007F8001C0007F800001C0003FC00380007F800001C0003FC003800
+07F800001C0001FE00700007F800001C0001FE00700007F800001C0001FE00700007F800
+001C0000FF00E00007F800001C0000FF00E00007F800001C0000FF00E00007F800001C00
+007F81C00007F800001C00007F81C00007F800001C00003FC3800007F800001C00003FC3
+800007F800001C00003FC3800007F800001C00001FE7000007F800001C00001FE7000007
+F800001C00000FFE000007F800001C00000FFE000007F800001C00000FFE000007F80000
+1C000007FC000007F800001C000007FC000007F800003E000007FC000007F800007F0000
+03F8000007F80000FF800003F800000FFC0003FFE00001F000001FFE00FFFFFF8001F000
+3FFFFFFFFFFFFF8001F0003FFFFFFFFFFFFF8000E0003FFFFFFF>
+88 71 -3 70 95] 77 dc
+[<0003FE000000001FFFC00000007E03F0000001F000FC000003C0007E00000780003F00
+0007C0003F80000FF0001FC0000FF8000FE0000FF8000FE0000FF8000FE0000FF80007F0
+000FF80007F00007F00007F00001C00007F00000000007F00000000007F00000000007F0
+0000000007F000000001FFF00000007FFFF0000003FF87F000001FF007F000007F8007F0
+0001FE0007F00003FC0007F0000FF80007F0001FF00007F0001FE00007F0003FC00007F0
+007FC00007F0007F800007F01C7F800007F01CFF000007F01CFF000007F01CFF000007F0
+1CFF00000FF01CFF00000FF01CFF00001FF01CFF80001BF01C7F80003BF01C3FC00071F8
+381FE000E1F8380FF001C0FC7003FC0780FFE000FFFE003FC0001FF8001F80>
+48 47 -4 45 52] 97 dc
+cmr10.432 sf
+[<FFFF0003FFC0FFFF0003FFC007F000007E0003E00000380003E00000100001F0000020
+0001F00000200001F00000200000F80000400000F80000400000FC0000C000007C000080
+00007C00008000003E00010000003E00010000003F00010000001F00020000001F000200
+00001F80060000000F80040000000F800400000007C00800000007C00800000007E00800
+000003E01000000003E01000000001F02000000001F02000000001F02000000000F84000
+000000F84000000000FCC0000000007C80000000007C80000000003F00000000003F0000
+0000003F00000000001E00000000001E00000000000C00000000000C00000000000C0000
+00>
+48 42 -1 40 45] 86 dc
+[<00100000700001F0000FF000FEF000F0F00000F00000F00000F00000F00000F00000F0
+0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
+0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
+0000F00001F8007FFFE07FFFE0>
+24 40 -5 39 30] 49 dc
+[<78FCFCFCFC78>
+8 6 -5 5 17] 46 dc
+[<007F000001C1C0000780F0000F0078000E0038001C001C003C001E003C001E003C001E
+0078000F0078000F0078000F0078000F00F8000F80F8000F80F8000F80F8000F80F8000F
+80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F
+80F8000F8078000F0078000F0078000F0078000F003C001E003C001E003C001E001C001C
+000E0038000F0078000780F00001C1C000007F0000>
+32 41 -2 39 30] 48 dc
+[<001F000070C000E1E001C3E003C3E00381C00780800780000780000780000780000780
+00078000078000078000078000FFFE00FFFE000780000780000780000780000780000780
+000780000780000780000780000780000780000780000780000780000780000780000780
+0007800007800007800007C000FFFE00FFFE00>
+24 42 -1 41 18] 102 dc
+[<007F000001C1C000070070000E0038001C001C003C001E003C001E0078000F0078000F
+00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F8078000F
+0078000F003C001E003C001E001E003C000E0038000700700001C1C000007F0000>
+32 26 -2 25 30] 111 dc
+[<0787C0FF98E0FF91F00FA1F007C1F007C0E007C0000780000780000780000780000780
+0007800007800007800007800007800007800007800007800007800007800007800007C0
+00FFFE00FFFE00>
+24 26 -1 25 23] 114 dc
+[<FFFFFFFF00FFFFFFFF0007E0003F0003E000070003E000038003E000018003E0000180
+03E000008003E000008003E000008003E000008003E000004003E002004003E002004003
+E002000003E002000003E002000003E006000003E00E000003FFFE000003FFFE000003E0
+0E000003E006000003E002000003E002000003E002000003E002000003E002000003E000
+000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
+0003E000000003E000000007F0000000FFFFE00000FFFFE00000>
+40 41 -2 40 39] 70 dc
+[<07800780FF80FF80FF80FF800F800F8007800780078007800780078007800780078007
+800780078007800780078007800780078007800780078007800780078007800780078007
+80078007800780078007800F8007800F800380178001C027C000E047FC003F87FC>
+32 26 -1 25 33] 117 dc
+[<0783F800FF8C1C00FF900E000FA0070007A0078007C0078007C0078007800780078007
+800780078007800780078007800780078007800780078007800780078007800780078007
+80078007800780078007800780078007800780078007800780FFFCFFFCFFFCFFFC>
+32 26 -1 25 33] 110 dc
+[<007E0003C3800700E00E00F01C00703C00783C003878003C78003CF8003CF8003CFFFF
+FCF80000F80000F80000F80000F800007800007C00003C00043C00041E00080E00100700
+2001C0C0007F00>
+24 26 -2 25 27] 101 dc
+[<0780FF80FF800F80078007800780078007800780078007800780078007800780078007
+800780078007800780078007800780078007800780078007800780078007800780078007
+800780078007800780FFFCFFFC>
+16 42 -1 41 17] 108 dc
+[<FFFE03FFF803FFC0FFFE03FFF803FFC00FE0003F80007E0007C0001F0000180003E000
+1F0000180003E0000F8000100003E0000F8000100001F0000F8000200001F0000FC00020
+0001F0000FC000200000F8000FC000400000F80013E000400000F80013E000400000FC00
+13E000C000007C0033F0008000007C0021F0008000007E0021F0008000003E0021F80100
+00003E0040F8010000003E0040F8010000001F0040F8020000001F00807C020000001F00
+807C020000000F80807C040000000F81003E040000000F81003E0400000007C1003E0800
+000007C2001F0800000007C2001F0800000003E2001F1000000003E4000F9000000003E4
+000F9000000001F4000FA000000001F80007E000000001F80007E000000000F80007C000
+000000F00003C000000000F00003C0000000007000038000000000600001800000000060
+00018000000000600001800000>
+64 42 -1 40 61] 87 dc
+[<07800000FF800000FF8000000F80000007800000078000000780000007800000078000
+00078000000780000007800000078000000780000007800000078000000783F000078C1C
+0007B0070007A0038007C003C0078001E0078001E0078000F0078000F0078000F8078000
+F8078000F8078000F8078000F8078000F8078000F8078000F0078000F0078001F0078001
+E0078001C007C003C00740078007200E0006181C000407E000>
+32 42 -1 41 33] 98 dc
+[<007F000003FFC0000701F0000C00F80010007C001C007C003E007E003E003E003E003E
+001E003E000C007E0000007C0000007C00000078000000F0000000E0000001C000000700
+0000FF00000001E0000000F0000000780000003C0000003E0000001F0000001F0000001F
+8000001F8030001F8078001F80FC001F80FC001F80FC001F00F8001F0040003F0040003E
+0030007C001800F8000F01F00003FFC000007F0000>
+32 41 -2 39 30] 51 dc
+[<FFE0000003FFC0FFE0000003FFC007E0000003F80002F0000005F00002F0000005F000
+0278000009F0000278000009F0000278000009F000023C000011F000023C000011F00002
+1E000021F000021E000021F000021E000021F000020F000041F000020F000041F0000207
+800081F0000207800081F0000207800081F0000203C00101F0000203C00101F0000203E0
+0201F0000201E00201F0000201E00201F0000200F00401F0000200F00401F0000200F004
+01F0000200780801F0000200780801F00002003C1001F00002003C1001F00002003C1001
+F00002001E2001F00002001E2001F00002000F4001F00002000F4001F00002000F4001F0
+000200078001F0000700078001F0000F80030003F800FFF803007FFFC0FFF803007FFFC0>
+56 41 -2 40 55] 77 dc
+[<01FC00000E0780001001C0003C00E0003E00F0003E0078001C00780008007800000078
+000000780000007800007FF80003E078000F8078001F0078003E0078007C007800780078
+20F8007820F8007820F8007820F800F8207C00F8203C013C401F063FC007F80F00>
+32 26 -2 25 30] 97 dc
+[<FFF00FF8FFF00FF80F8003C0078003800780010003C0020003C0020003E0020001E004
+0001E0040000F0080000F0080000F818000078100000781000003C2000003C2000003E60
+00001E4000001E4000000F8000000F800000070000000700000007000000020000000200
+000004000000040000000400000008000070080000F8100000F8100000F8200000F04000
+00608000001F000000>
+32 38 -1 25 32] 121 dc
+[<007F000001FFC00007C1E0000F0070001E0038001C003C003C001C0078001E0078001E
+00F8000F00F8000F00F8000F00F8000F00F8000F80F8000F80F8000F80F8000F8078000F
+8078001F803C001F803C001F801C002F800E004F800700CF8003810F80007E0F8000000F
+0000000F0000000F0000001E0000001E0000001E0000003C001C003C003E0078003E0070
+003C00E0001801C0001C0780000FFE000003F80000>
+32 41 -2 39 30] 57 dc
+[<00FE0007FF800E07E01803F02001F82000F840007C40007CF8007EFC007EFC003EFC00
+3EFC003E78007E00007E00007C00007C0000F80000F80001F00001E00003C00007800007
+00000E00001C0000380000700000600000C0000180020300020600040C00041800041000
+0C3FFFFC7FFFF8FFFFF8FFFFF8>
+24 40 -3 39 30] 50 dc
+1 @bop1
+cmr17.300 sf
+603 1151(Ross)s
+21(N.)h
+21(Williams)h
+cmr10.746 sf
+258 823(F)s
+-9(unnel)h
+1(W)h
+-9(eb)h
+37(User's)h
+34(Man)h
+-3(ual)h
+cmr10.432 sf
+519 1343(V1.0)s
+19(for)h
+20(F)h
+-5(unnelW)h
+-5(eb)h
+20(V3.0)h
+725 1536(Ma)s
+-2(y)h
+20(1992)h
+1 @eop
+2 @bop0
+/cmr10.300 127 @newfont
+/cmsy10.300 127 @newfont
+cmsy10.300 sf
+[<0001FC0000000FFF8000003E03E00000F000780001C0001C000380000E000700000700
+0E000003801C000001C018000000C038000000E030000000607000000070600000003060
+00000030E000000038C000000018C000000018C000000018C000000018C000000018C000
+000018C000000018E0000000386000000030600000003070000000703000000060380000
+00E018000000C01C000001C00E0000038007000007000380000E0001C0001C0000F00078
+00003E03E000000FFF80000001FC0000>
+40 39 -2 29 42] 13 dc
+cmr10.300 sf
+[<001F808000E0618001801980070007800E0003801C0003801C00018038000180780000
+807800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F00000
+00F0000000700000807800008078000080380000801C0001001C0001000E000200070004
+000180080000E03000001FC000>
+32 30 -2 28 30] 67 dc
+[<03F0000E1C00180600300300700380600180E001C0E001C0E001C0E001C0E001C0E001
+C06001807003803003001806000E1C0003F000>
+24 18 -1 17 21] 111 dc
+[<FC7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00
+E01C01C01C01C01C01801E03001D06001CF8001C00001C00001C00001C00001C00001C00
+001C0000FF8000>
+24 26 -1 17 23] 112 dc
+[<FF07E03C03801C01001C01000E02000E020007040007040007040003880003880003D8
+0001D00001D00000E00000E00000E000004000004000008000008000F08000F10000F300
+006600003C0000>
+24 26 -1 17 22] 121 dc
+[<FCE01D301E781E781C301C001C001C001C001C001C001C001C001C001C001C001C00FF
+C0>
+16 18 -1 17 16] 114 dc
+[<18003C003C0018000000000000000000000000000000FC001C001C001C001C001C001C
+001C001C001C001C001C001C001C001C001C001C00FF80>
+16 29 -1 28 12] 105 dc
+[<00038003C4C00C38C01C3880181800381C00381C00381C00381C001818001C38000C30
+0013C0001000003000001800001FF8001FFF001FFF803003806001C0C000C0C000C0C000
+C06001803003001C0E0007F800>
+24 28 -1 18 21] 103 dc
+[<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C
+001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03
+801C03801C03801C03801C0380FF9FF0>
+24 29 -1 28 23] 104 dc
+[<04000400040004000C000C001C003C00FFE01C001C001C001C001C001C001C001C001C
+001C101C101C101C101C100C100E2003C0>
+16 26 -1 25 16] 116 dc
+[<07E00C301878307870306000E000E000E000E000E000E00060007004300418080C3007
+C0>
+16 18 -2 17 18] 99 dc
+[<030007003F00C700070007000700070007000700070007000700070007000700070007
+00070007000700070007000700070007000F80FFF8>
+16 28 -4 27 21] 49 dc
+[<03C00C301818300C700C600EE006E006E007E007E007E007E0076007700F300F18170C
+2707C700060006000E300C780C78187010203030C00F80>
+16 29 -2 27 21] 57 dc
+[<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C001C0038007000
+6000C00180030006010C01180110023FFE7FFEFFFE>
+16 28 -2 27 21] 50 dc
+[<FFFF00000F01E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E
+000F001C000F003C000F0078000F01E0000FFF00000F03C0000F00E0000F00F0000F0078
+000F0078000F0078000F0078000F0078000F0078000F0078100F0078100F0038100F003C
+20FFF01C20000007C0>
+32 29 -2 27 31] 82 dc
+[<1F9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D0608F
+C0>
+16 18 -1 17 16] 115 dc
+[<FF007FC00F800E000F8004000BC0040009E0040009E0040008F0040008F80400087804
+00083C0400083C0400081E0400080F0400080F0400080784000807C4000803C4000801E4
+000801E4000800F40008007C0008007C0008003C0008003C0008001C0008000C001C000C
+00FF800400>
+32 28 -2 27 31] 78 dc
+[<60F0F060>
+8 4 -4 3 12] 46 dc
+[<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F00100F001F001007801F0020
+0780278020078027802003C027804003C043C04003C043C04003E043C04001E081E08001
+E081E08001E081E08000F100F10000F100F10000F100F100007900FA00007A007A00007A
+007A00003E007C00003C003C00003C003C00003C003C0000180018000018001800001800
+1800>
+40 29 -1 27 43] 87 dc
+[<FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
+001C001C001C001C001C001C001C001C001C001C00FF80>
+16 29 -1 28 12] 108 dc
+[<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C00601C
+00E01C40E01C40E01C40603C40304E801F8700>
+24 18 -2 17 21] 97 dc
+[<FC7E07E0001C838838001D019018001E01E01C001C01C01C001C01C01C001C01C01C00
+1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C
+01C01C001C01C01C001C01C01C00FF8FF8FF80>
+40 18 -1 17 36] 109 dc
+[<FFFF800F00E00F00780F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F00
+3C0F00780F00E00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00
+000F00000F00000F0000FFF000>
+24 28 -2 27 28] 80 dc
+[<03E00C301818300C700E6006E006FFFEE000E000E000E00060007002300218040C1803
+E0>
+16 18 -1 17 18] 101 dc
+[<FC7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03
+801C03801C03801C03801C03801C0380FF9FF0>
+24 18 -1 17 23] 110 dc
+[<003F0000070000070000070000070000070000070000070000070000070000070003E7
+000C1700180F00300700700700600700E00700E00700E00700E00700E00700E007006007
+00700700300700180F000C370007C7E0>
+24 29 -2 28 23] 100 dc
+[<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C3F
+C01C0F001C0C001C08001C10001C20001C40001CE0001DE0001E70001C78001C38001C3C
+001C1C001C0E001C0F001C0F80FF9FE0>
+24 29 -1 28 22] 107 dc
+[<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C
+001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C00
+C01C01C01C01801E030019060010F800>
+24 29 -1 28 23] 98 dc
+[<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03
+801C03801C03801C07800C07800E1B8003E3F0>
+24 18 -1 17 23] 117 dc
+[<FF07E03C03801C01001C01000E02000E020007040007040007040003880003880003D8
+0001D00001D00000E00000E00000E000004000>
+24 18 -1 17 22] 118 dc
+[<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E
+000E000E000E000E000E000E000E000E000E000E007FE0>
+16 29 0 28 13] 102 dc
+2 @bop1
+cmsy10.300 sf
+372 2675(\015)s
+cmr10.300 sf
+177 2675(Cop)s
+-1(yrigh)h
+-1(t)h
+384 2674(c)s
+428 2675(1992)s
+12(Ross)h
+14(N.)h
+14(Willia)h
+-1(m)h
+-1(s.)h
+177 2750(P)s
+-1(ermission)h
+17(is)h
+17(gran)h
+-1(ted)h
+17(to)h
+18(mak)h
+-1(e)h
+15(and)h
+18(distribute)h
+18(v)h
+-1(erbatim)h
+15(copies)h
+18(of)h
+17(this)h
+18(man)h
+-1(ual)h
+14(pro)h
+-1(vided)h
+18(that)h
+17(the)h
+177 2800(cop)s
+-1(yrigh)h
+-1(t)h
+14(notice)h
+14(and)h
+14(this)h
+14(p)h
+1(ermission)h
+12(notice)h
+15(are)h
+14(preserv)h
+-1(ed)h
+16(on)h
+14(all)h
+12(copies.)h
+1053 2940(1)s
+1772 2 177 2597 r
+1772 2 177 2835 r
+2 @eop
+3 @bop0
+3 @bop1
+cmr10.300 sf
+1053 2940(2)s
+3 @eop
+4 @bop0
+/cmbx10.746 127 @newfont
+/cmbx10.300 127 @newfont
+/cmmi10.300 127 @newfont
+cmbx10.746 sf
+[<000000003FFE00000E0000000FFFFFC0001E0000007FFFFFF8003E000003FFFFFFFE00
+FE00000FFFFFFFFF81FE00003FFFF800FFC3FE0000FFFF80000FF7FE0001FFFC000003FF
+FE0007FFF0000001FFFE000FFFC00000007FFE001FFF800000003FFE003FFF000000001F
+FE007FFE000000000FFE00FFFC0000000007FE01FFF80000000007FE03FFF00000000003
+FE03FFF00000000001FE07FFE00000000001FE07FFE00000000000FE0FFFC00000000000
+FE0FFFC000000000007E1FFFC000000000007E1FFF8000000000007E3FFF800000000000
+7E3FFF8000000000003E3FFF8000000000003E7FFF8000000000003E7FFF000000000000
+3E7FFF000000000000007FFF00000000000000FFFF00000000000000FFFF000000000000
+00FFFF00000000000000FFFF00000000000000FFFF00000000000000FFFF000000000000
+00FFFF00000000000000FFFF00000000000000FFFF00000000000000FFFF000000000000
+00FFFF00000000000000FFFF00000000000000FFFF000000000000007FFF000000000000
+007FFF000000000000007FFF000000000000007FFF8000000000003E3FFF800000000000
+3E3FFF8000000000003E3FFF8000000000003E1FFF8000000000003E1FFFC00000000000
+3E0FFFC000000000007C0FFFC000000000007C07FFE000000000007C07FFE00000000000
+F803FFF00000000000F803FFF00000000001F801FFF80000000001F000FFFC0000000003
+E0007FFE0000000007E0003FFF000000000FC0001FFF800000001F80000FFFC00000003F
+000007FFF0000000FE000001FFFC000001FC000000FFFF80000FF80000003FFFF8007FF0
+0000000FFFFFFFFFC000000003FFFFFFFF00000000007FFFFFFC00000000000FFFFFE000
+00000000003FFE000000>
+72 73 -7 71 86] 67 dc
+[<00000FFF0000000000FFFFF000000007FFFFFE0000001FFFFFFF8000003FFC03FFC000
+00FFE0007FF00001FF80001FF80003FF00000FFC0007FE000007FE000FFE000007FF000F
+FC000003FF001FFC000003FF803FFC000003FFC03FF8000001FFC03FF8000001FFC07FF8
+000001FFE07FF8000001FFE07FF8000001FFE0FFF8000001FFF0FFF8000001FFF0FFF800
+0001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF80000
+01FFF0FFF8000001FFF0FFF8000001FFF07FF8000001FFE07FF8000001FFE07FF8000001
+FFE07FF8000001FFE03FFC000003FFC03FFC000003FFC01FFC000003FF801FFE000007FF
+800FFE000007FF0007FF00000FFE0003FF80001FFC0001FFC0003FF80000FFE0007FF000
+007FFC03FFE000001FFFFFFF80000007FFFFFE00000000FFFFF0000000000FFF000000>
+56 46 -3 45 59] 111 dc
+[<007FC001FFC00000FFFFC00FFFF80000FFFFC03FFFFE0000FFFFC0FFFFFF0000FFFFC1
+FC07FF8000FFFFC3E003FFC00003FFC7C001FFC00001FFCF0001FFE00001FFDE0000FFE0
+0001FFDC0000FFE00001FFFC0000FFF00001FFF80000FFF00001FFF00000FFF00001FFF0
+0000FFF00001FFF00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0
+0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0
+0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0
+0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0
+0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0
+0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0
+0000FFF000FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFF
+E0FFFFFFC07FFFFFE0>
+64 46 -4 45 66] 110 dc
+[<0001F000000001F000000001F000000001F000000001F000000001F000000003F00000
+0003F000000003F000000007F000000007F000000007F00000000FF00000000FF0000000
+1FF00000003FF00000003FF00000007FF0000001FFF0000003FFF000000FFFFFFFC0FFFF
+FFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC000FFF0000000FFF0000000FFF0000000FFF0
+000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF000
+0000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF00000
+00FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF001F000FFF001F000
+FFF001F000FFF001F000FFF001F000FFF001F000FFF001F000FFF001F000FFF001F0007F
+F001E0007FF803E0003FF803E0003FFC07C0001FFE0F80000FFFFF800007FFFE000001FF
+FC0000001FF000>
+40 66 -2 65 46] 116 dc
+[<00001FFE00000001FFFFE0000007FFFFF800001FFFFFFE00007FFC07FF0000FFE001FF
+8001FFC0007FC003FF80003FE007FF00003FF00FFE00001FF01FFE00000FF81FFC00000F
+F83FFC00000FFC3FFC000007FC7FFC000007FC7FF8000007FC7FF8000007FE7FF8000007
+FEFFF8000007FEFFF8000007FEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFF
+FCFFF800000000FFF800000000FFF800000000FFF8000000007FF8000000007FF8000000
+007FFC000000003FFC000000003FFC000000003FFC0000001C1FFE0000003E0FFE000000
+3E07FF0000007E07FF000000FC03FF800001F801FFC00003F0007FF0001FE0003FFE00FF
+C0001FFFFFFF800007FFFFFE000000FFFFF80000000FFF8000>
+48 46 -3 45 54] 101 dc
+[<000FFF00E0007FFFF3E001FFFFFFE007FFFFFFE00FF800FFE01FC0001FE03F80000FE0
+3F000007E07F000003E07F000003E0FF000003E0FF000003E0FF800003E0FFC0000000FF
+F0000000FFFE000000FFFFF800007FFFFFC0007FFFFFF0003FFFFFFC001FFFFFFF000FFF
+FFFF8007FFFFFFC003FFFFFFE000FFFFFFF0003FFFFFF00003FFFFF800001FFFF8000000
+FFFC0000001FFC7800000FFCF8000007FCF8000003FCFC000003FCFC000003FCFE000003
+F8FE000003F8FF000003F8FF800007F0FFC0000FF0FFF0001FE0FFFC00FFC0FFFFFFFF80
+FC7FFFFE00F81FFFF800E003FF8000>
+40 46 -4 45 47] 115 dc
+cmbx10.300 sf
+[<FFFFF800FFFFFE000FC03F800FC00F800FC007C00FC007E00FC007E00FC007E00FC007
+E00FC007E00FC007C00FC007C00FC00F800FC03F000FFFFC000FC000000FC000000FC000
+000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000FFFC00
+00FFFC0000>
+32 28 -2 27 33] 80 dc
+[<FE3E00FE47001E8F801E8F801E8F801F07001F00001F00001F00001F00001F00001F00
+001F00001F00001F00001F0000FFF000FFF000>
+24 18 -1 17 20] 114 dc
+[<01FC000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F800
+007800007C00603C00601E00C00F038001FC00>
+24 18 -1 17 22] 101 dc
+[<007F0001E38003C7C00787C00F87C00F83800F80000F80000F80000F80000F8000FFF8
+00FFF8000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80
+000F80000F80000F80007FF8007FF800>
+24 29 0 28 15] 102 dc
+[<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07
+C0F807C0F807C0F807C0780BC03E13F80FE1F8>
+24 18 -1 17 23] 97 dc
+[<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F80000F800
+007800007801803C01801C03000E0E0003F800>
+24 18 -2 17 21] 99 dc
+[<03F8000FFE001E0F003C07807807807803C0F803C0F803C0F803E0F803E0F803E0F803
+E07807E03807E03C0BE00E1BE003E3E00003E00003C00003C03807C07C07807C0700780F
+00383C001FF8000FE000>
+24 27 -2 26 24] 57 dc
+[<00038000000380000007C0000007C0000007C000000FE000000FE000001FF000001BF0
+00001BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E0000C07E0001803F
+0001FFFF0003FFFF8003001F8003001F8006000FC006000FC00E000FE00C0007E0FFC07F
+FEFFC07FFE>
+32 28 -2 27 36] 65 dc
+[<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0F
+F81F0FF81F03801F07001F0C001F18001F70001FF8001FFC001FBC001F3E001F1F001F0F
+001F0F801F07C01F03E0FFC7FCFFC7FC>
+24 29 -1 28 25] 107 dc
+[<FF0FC0FF31E01F40F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00
+F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF>
+24 18 -1 17 27] 110 dc
+[<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F800F8F800
+F87800F07800F03C01E01E03C00F078001FC00>
+24 18 -1 17 24] 111 dc
+[<FF8FF8FEFF8FF8FE1F03E0301F03E0301F83E0700F83F0600F86F06007C6F0C007CEF8
+C007EC79C003EC7D8003F83D8001F83F0001F83F0001F01F0000F01E0000E00E0000E00E
+00>
+32 18 -1 17 34] 119 dc
+[<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F00FFE0FFE0>
+16 29 -1 28 14] 108 dc
+[<000FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F001F9
+F00F07F01C03F03C01F07801F07801F0F801F0F801F0F801F0F801F0F801F0F801F07801
+F07801F03C01F01C03F00F0FFE03F9FE>
+24 29 -2 28 27] 100 dc
+[<03F8F00E0F381E0F381C07303C07803C07803C07803C07801C07001E0F000E0E001BF8
+001000001800001800001FFF001FFFC00FFFE01FFFF07801F8F00078F00078F000787000
+707800F01E03C007FF00>
+24 27 -1 17 24] 103 dc
+[<FF0FC07E00FF31E18F001F40F207801F80FC07C01F80FC07C01F00F807C01F00F807C0
+1F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F
+00F807C01F00F807C0FFE7FF3FF8FFE7FF3FF8>
+40 18 -1 17 40] 109 dc
+[<0300030003000300070007000F000F003FFCFFFC1F001F001F001F001F001F001F001F
+001F001F0C1F0C1F0C1F0C0F08079803F0>
+16 26 -1 25 19] 116 dc
+[<1FD830786018E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CE018F830CF
+C0>
+16 18 -2 17 19] 115 dc
+[<00600001E0000FE000FFE000F3E00003E00003E00003E00003E00003E00003E00003E0
+0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
+0003E0007FFF807FFF80>
+24 27 -3 26 24] 49 dc
+[<1E003F003F003F003F001E00000000000000000000000000FF00FF001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F00FFE0FFE0>
+16 30 -1 29 14] 105 dc
+[<FFE003FFFFE003FF0FF000300FF800300DFC00300CFE00300C7E00300C3F00300C1F80
+300C1FC0300C0FE0300C07F0300C03F0300C01F8300C01FC300C00FE300C007F300C003F
+300C001FB00C001FF00C000FF00C0007F00C0003F00C0001F00C0000F00C0000F0FFC000
+70FFC00030>
+32 28 -2 27 37] 78 dc
+[<03F8001FFE003C1F003C0F807C07C07E07C07C07C03807C0000F80000F80001E00003C
+0003F800001E00000F800007C00007C00007E03007E07807E0FC07E0FC07E0FC07C0780F
+80781F001FFE0007F800>
+24 27 -2 26 24] 51 dc
+[<7FFFFFE07FFFFFE0781F81E0701F80E0601F8060E01F8070C01F8030C01F8030C01F80
+30C01F8030001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80
+00001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800007FFFE
+0007FFFE00>
+32 28 -2 27 33] 84 dc
+[<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
+F81F00F81F00F81F01F80F01F80786FF01F8FF>
+24 18 -1 17 27] 117 dc
+[<FFFFFFFF07E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007
+E007E007E007E007E007E007E007E007E0FFFFFFFF>
+16 28 -1 27 18] 73 dc
+[<1801801FFF001FFE001FFC001FF8001FC00018000018000018000018000019F8001E0E
+00180F801007800007C00007E00007E00007E07807E0F807E0F807E0F807C0F007C0600F
+80381F001FFE0007F000>
+24 27 -2 26 24] 53 dc
+cmr10.300 sf
+[<FFF8000F80000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
+000F00000F00000F00000F00000F00000F00000F00080F00080F00080F00180F00180F00
+100F00300F00700F01F0FFFFF0>
+24 28 -2 27 26] 76 dc
+[<0FE03038401CE00EF00EF00EF00E000C001C0030006000C00080018001000100010001
+0001000100000000000000000000000300078007800300>
+16 29 -2 28 20] 63 dc
+[<300C3FF83FF03FC020002000200020002000200023E024302818301C200E000E000F00
+0F000F600FF00FF00FF00F800E401E401C2038187007C0>
+16 29 -2 27 21] 53 dc
+[<FFFFF80F00780F00180F00080F00080F000C0F00040F00040F02040F02000F02000F02
+000F06000FFE000F06000F02000F02000F02000F02000F00000F00000F00000F00000F00
+000F00000F00000F8000FFF800>
+24 28 -2 27 27] 70 dc
+[<03E00C301008200C20066006600660067006780C3E083FB01FE007F007F818FC307E60
+1E600FC007C003C003C003C00360026004300C1C1007E0>
+16 29 -2 27 21] 56 dc
+[<07E01830201C201C781E780E781E381E001C001C00180030006007E00030001C001C00
+0E000F000F700FF80FF80FF80FF00E401C201C183007E0>
+16 29 -2 27 21] 51 dc
+[<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F00
+20000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
+00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F80
+0003FFFC00>
+32 28 -1 27 30] 84 dc
+[<000C00000C00001C00003C00003C00005C0000DC00009C00011C00031C00021C00041C
+000C1C00081C00101C00301C00201C00401C00C01C00FFFFC0001C00001C00001C00001C
+00001C00001C00001C0001FFC0>
+24 28 -1 27 21] 52 dc
+[<000600000006000000060000000F0000000F0000000F00000017800000178000001780
+000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F0000180F8
+000100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C001F
+001E001F00FF80FFF0>
+32 29 -1 28 31] 65 dc
+[<FFF3FFC00F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
+000F003C000F003C000F003C000F003C000FFFFC000F003C000F003C000F003C000F003C
+000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
+00FFF3FFC0>
+32 28 -2 27 31] 72 dc
+[<FFFFC0000F00F0000F003C000F000E000F0007000F0007000F0003800F0003C00F0001
+C00F0001C00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001
+E00F0001C00F0001C00F0003C00F0003800F0007800F0007000F000E000F001C000F0070
+00FFFFC000>
+32 28 -2 27 32] 68 dc
+[<03C00C301818300C300C700E60066006E007E007E007E007E007E007E007E007E007E0
+07E007E007E00760066006700E300C300C18180C3007E0>
+16 29 -2 27 21] 48 dc
+[<00F0030C06040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006E007E0
+07E007E007E007600760077006300E300C18180C3003E0>
+16 29 -2 27 21] 54 dc
+[<FF8000FF800F8000F8000F8000F8000BC00178000BC00178000BC001780009E0027800
+09E002780008F004780008F004780008F004780008780878000878087800087808780008
+3C107800083C107800083C107800081E207800081E207800081E207800080F407800080F
+40780008078078000807807800080780780008030078001C03007800FF8307FF80>
+40 28 -2 27 38] 77 dc
+[<07E0801C1980300580700380600180E00180E00080E00080E00080F00000F800007C00
+007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001
+C0C00180C00180E00300D00200CC0C0083F800>
+24 30 -2 28 23] 83 dc
+[<FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
+000F000F000F000F000F000F000F000F000F00FFF0>
+16 28 -1 27 15] 73 dc
+[<7FFC70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FF
+F8>
+16 18 -1 17 18] 122 dc
+[<FFFFFC0F003C0F000C0F00040F00040F00060F00020F00020F02020F02000F02000F02
+000F06000FFE000F06000F02000F02000F02000F02010F00010F00020F00020F00020F00
+060F00060F000C0F003CFFFFFC>
+24 28 -2 27 28] 69 dc
+[<7F8FF00F03800F030007020003840001C80001D80000F00000700000780000F800009C
+00010E00020E000607000403801E07C0FF0FF8>
+24 18 0 17 22] 120 dc
+[<4000007FFF807FFF007FFF004002008004008004008008000010000010000020000060
+0000400000C00000C00001C0000180000180000380000380000380000380000780000780
+00078000078000078000078000030000>
+24 29 -2 27 21] 55 dc
+[<003F800000E0E0000380380007001C000E000E001C0007003C00078038000380780003
+C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001
+E0F00001E0700001C0780003C0780003C0380003803C0007801C0007000E000E0007001C
+000380380000E0E000003F8000>
+32 30 -2 28 32] 79 dc
+[<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82000E1182000711C4
+000711C4000720C40003A0E80003A0E80003C0680001C0700001C0700001803000008020
+00>
+32 18 -1 17 30] 119 dc
+[<FFF07FC00F000E000F0004000F0004000F0004000F0004000F0004000F0004000F0004
+000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004
+000F0004000F0004000F0004000F0004000700080007800800038010000180100000C020
+000070C000001F0000>
+32 29 -2 27 31] 85 dc
+cmmi10.300 sf
+[<60F0F060>
+8 4 -4 3 12] 58 dc
+4 @bop1
+cmbx10.746 sf
+177 401(Con)s
+-3(ten)h
+-3(ts)h
+cmbx10.300 sf
+177 687(Preface)s
+1592(9)h
+177 808(Ac)s
+-1(kno)h
+-1(wledgemen)h
+-2(ts)h
+1325(11)h
+177 928(Presen)s
+-1(tati)h
+-1(on)h
+13(Notes)h
+1323(13)h
+177 1048(1)s
+38(A)h
+16(T)h
+-4(utorial)h
+14(In)h
+-1(tro)h
+1(duct)h
+-1(ion)h
+1160(15)h
+cmr10.300 sf
+239 1126(1.1)s
+42(What)h
+13(is)h
+14(Literate)h
+15(Programm)h
+-1(i)h
+-1(ng?)h
+987(15)h
+239 1204(1.2)s
+42(What)h
+13(is)h
+14(F)h
+-3(unnelW)h
+-3(eb?)h
+1190(18)h
+239 1281(1.3)s
+42(The)h
+14(Name)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+1164(19)h
+239 1359(1.4)s
+42(A)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(T)h
+-3(utorial)h
+1162(19)h
+239 1437(1.5)s
+42(A)h
+14(Hello)h
+13(W)h
+-3(orld)h
+13(Do)h
+1(cumen)h
+-1(t)h
+1108(20)h
+239 1514(1.6)s
+42(Macro)h
+14(F)h
+-3(acilities)h
+1283(22)h
+335 1592(1.6.1)s
+46(Simple)h
+12(Macros)h
+1173(22)h
+335 1670(1.6.2)s
+46(Num)h
+-1(b)h
+1(er)h
+13(of)h
+13(Times)h
+13(Called)h
+991(23)h
+335 1747(1.6.3)s
+46(Inden)h
+-1(tation)h
+1229(25)h
+335 1825(1.6.4)s
+46(Additiv)h
+-1(e)h
+13(Macros)h
+1140(26)h
+335 1903(1.6.5)s
+46(P)h
+-1(arameterized)h
+14(Macros)h
+1035(28)h
+335 1980(1.6.6)s
+46(Macro)h
+14(Expansion)h
+1122(30)h
+335 2058(1.6.7)s
+46(Include)h
+14(Files)h
+1208(30)h
+239 2136(1.7)s
+42(T)h
+-1(yp)h
+1(esetting)h
+15(F)h
+-3(acilities)h
+1181(32)h
+335 2213(1.7.1)s
+46(Ov)h
+-1(erview)h
+1270(32)h
+335 2291(1.7.2)s
+46(T)h
+-1(yp)h
+1(esetter)h
+16(Indep)h
+1(endence)h
+986(34)h
+335 2369(1.7.3)s
+46(Hierarc)h
+-1(hical)h
+14(Structure)h
+1039(34)h
+335 2446(1.7.4)s
+46(Understanding)h
+14(the)h
+15(Prin)h
+-1(ted)h
+14(Do)h
+1(cumen)h
+-1(tation)h
+658(35)h
+335 2524(1.7.5)s
+46(Literals)h
+14(and)h
+13(Emphasis)h
+1033(37)h
+335 2602(1.7.6)s
+46(Adding)h
+13(a)h
+14(Header)h
+15(P)h
+-1(age)h
+1029(37)h
+335 2679(1.7.7)s
+46(Comm)h
+-1(en)h
+-1(ts)h
+1245(37)h
+239 2757(1.8)s
+42(A)h
+14(Complete)h
+13(Example)h
+1180(38)h
+239 2835(1.9)s
+42(Summ)h
+-1(ary)h
+1396(39)h
+1053 2940(3)s
+cmmi10.300 sf
+930 1126(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 1204(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 1281(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 1359(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+833 1437(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+640 1514(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 1592(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+930 1670(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+704 1747(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 1825(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+898 1903(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 1980(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 2058(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 2136(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+672 2213(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+962 2291(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+898 2369(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1285 2446(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+898 2524(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+898 2602(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+672 2679(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 2757(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+543 2835(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+4 @eop
+5 @bop0
+cmbx10.300 sf
+[<07F8001FFE00383F80780FC0FC07C0FC07E0FC03E0FC03E07803E00007E00007C00007
+C0000F80001F00001E0000380000700000E0000180600300600600600800E01FFFC03FFF
+C07FFFC0FFFFC0FFFFC0>
+24 27 -2 26 24] 50 dc
+[<FFFFFF00FFFFFF000FC01F000FC007000FC003000FC003800FC003800FC001800FC181
+800FC181800FC180000FC180000FC380000FFF80000FFF80000FC380000FC180000FC180
+000FC180000FC180000FC000000FC000000FC000000FC000000FC000000FC00000FFFF00
+00FFFF0000>
+32 28 -2 27 30] 70 dc
+[<FFFC7FFE0FFCFFFC7FFE0FFC0FC007E000C00FC007F000C00FE003F001C007E003F001
+8007E007F8018003F007F8030003F007F8030003F80CFC070001F80CFC060001F81CFE06
+0001FC187E0E0000FC187E0C0000FC387F0C00007E303F1800007E303F1800007F601FB8
+00003F601FB000003FE01FF000003FC00FF000001FC00FE000001FC00FE000000F8007C0
+00000F8007C000000F0003C000000700038000000700038000>
+48 28 -1 27 49] 87 dc
+[<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F3F
+801FE1E01F80701F00781F003C1F003C1F003E1F003E1F003E1F003E1F003E1F003E1F00
+3C1F003C1F00781F80701EC1E01C3F00>
+24 29 -1 28 27] 98 dc
+[<FFFC3FFFFFFC3FFF0FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003
+F00FC003F00FC003F00FC003F00FFFFFF00FFFFFF00FC003F00FC003F00FC003F00FC003
+F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F0FFFC3F
+FFFFFC3FFF>
+32 28 -2 27 37] 72 dc
+[<000180000380000780000F80001F80003F80006F8000CF80008F80018F80030F80060F
+800C0F80180F80300F80600F80C00F80FFFFF8FFFFF8000F80000F80000F80000F80000F
+80000F8001FFF801FFF8>
+24 27 -1 26 24] 52 dc
+[<FFFFF800FFFFFF000FC01FC00FC007E00FC001F00FC001F80FC000F80FC000FC0FC000
+7C0FC0007C0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC000
+7E0FC0007C0FC0007C0FC0007C0FC000F80FC000F80FC001F00FC007E00FC01FC0FFFFFF
+00FFFFF800>
+32 28 -2 27 37] 68 dc
+[<003FC00001F0300003C0380007C07C000F807C000F807C000F8038000F8000000F8000
+000F8000000F800000FFFFFC00FFFFFC000F807C000F807C000F807C000F807C000F807C
+000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C
+007FE1FF807FE1FF80>
+32 29 0 28 27] 12 dc
+[<007E0003FF000781800F03C01E07C03C07C03C0380780000780000F80000F8F800FB0E
+00FA0780FC0380FC03C0F803E0F803E0F803E0F803E07803E07803E07803C03C03C03C07
+801E0F0007FE0003F800>
+24 27 -2 26 24] 54 dc
+cmr10.300 sf
+[<003F800000E0E0000380380007001C000E000E001C0007003C00078038000380780003
+C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001
+E0F00001E0700001C0780003C0780003C0380003803C0E07801C1107000E208E0007205C
+0003A0780000F0E020003FE0200000602000003060000038E000003FC000003FC000001F
+8000000F00>
+32 37 -2 28 32] 81 dc
+[<003F07E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E00000
+0E00E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E
+00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00
+E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FC
+FF80>
+40 29 0 28 35] 14 dc
+[<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00
+780F01F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F000F0F000F0F000F0F00
+1E0F001E0F003C0F0078FFFFE0>
+24 28 -2 27 29] 66 dc
+[<001F808000E0618001801980070007800E0003801C0003801C00018038000180780000
+807800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F000FF
+F0F0000F80700007807800078078000780380007801C0007801C0007800E00078007000B
+800180118000E06080001F8000>
+32 30 -2 28 33] 71 dc
+[<03C1000C3300180B00300F00700700700700E00700E00700E00700E00700E00700E007
+00600700700700300F00180F000C370007C7000007000007000007000007000007000007
+00000700003FE0>
+24 26 -2 17 22] 113 dc
+5 @bop1
+cmbx10.300 sf
+177 42(2)s
+38(F)h
+-4(unnelW)h
+-4(eb)h
+14(Hin)h
+-1(ts)h
+1296(41)h
+177 1719(3)s
+38(F)h
+-4(unnelW)h
+-4(eb)h
+14(De\014nit)h
+-1(i)h
+-1(on)h
+1202(63)h
+cmr10.300 sf
+239 116(2.1)s
+42(Macro)h
+14(Names)h
+1322(41)h
+239 190(2.2)s
+42(Quic)h
+-1(k)h
+14(Names)h
+1330(42)h
+239 265(2.3)s
+42(F)h
+-3(unnelW)h
+-3(eb)h
+13(the)h
+15(Martinet)h
+1123(42)h
+239 339(2.4)s
+42(Fiddling)h
+12(With)h
+14(End)h
+14(of)h
+13(Lines)h
+1069(43)h
+239 413(2.5)s
+42(F)h
+-3(udging)h
+13(Conditionals)h
+1182(44)h
+239 488(2.6)s
+42(Changing)h
+13(the)h
+14(Strength)h
+15(of)h
+13(Headings)h
+931(46)h
+239 562(2.7)s
+42(E\016ciency)h
+14(Notes)h
+1282(47)h
+239 636(2.8)s
+42(In)h
+-1(teractiv)h
+-1(e)h
+15(Mo)h
+1(de)h
+1263(47)h
+239 711(2.9)s
+42(Setting)h
+14(Up)h
+14(Default)h
+13(Options)h
+1070(49)h
+239 785(2.10)s
+21(F)h
+-3(unnelW)h
+-3(eb)h
+13(and)h
+14(Mak)h
+-1(e)h
+1176(49)h
+239 860(2.11)s
+21(The)h
+14(Dangers)h
+14(of)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+1074(50)h
+239 934(2.12)s
+21(Wholistic)h
+13(Debugging)h
+1192(53)h
+239 1008(2.13)s
+21(Examples)h
+13(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(Applications)h
+891(53)h
+335 1083(2.13.1)s
+25(Analyzing)h
+13(the)h
+14(Monster)h
+15(P)h
+-1(ostscript)h
+15(Header)h
+15(File)h
+602(54)h
+335 1157(2.13.2)s
+25(Making)h
+13(Ada)h
+13(ADTs)h
+14(more)h
+13(A)h
+943(55)h
+335 1231(2.13.3)s
+25(Multiple)h
+13(Language)h
+13(Systems)h
+938(55)h
+335 1306(2.13.4)s
+25(The)h
+14(Case)h
+14(of)h
+14(the)h
+14(Small)h
+12(F)h
+-3(unction)h
+860(56)h
+335 1380(2.13.5)s
+25(When)h
+14(Comm)h
+-1(en)h
+-1(ts)h
+12(are)h
+15(Bad)h
+969(57)h
+335 1455(2.13.6)s
+25(Do)h
+1(cumen)h
+-1(ts)h
+13(That)h
+14(Share)h
+14(T)h
+-3(ext)h
+921(58)h
+335 1529(2.13.7)s
+25(Generics)h
+1285(59)h
+239 1603(2.14)s
+21(Summ)h
+-1(ary)h
+1396(62)h
+239 1793(3.1)s
+42(In)h
+-1(tro)h
+1(duction)h
+1345(63)h
+239 1868(3.2)s
+42(Notation)h
+1411(63)h
+239 1942(3.3)s
+42(T)h
+-3(erminolo)h
+-1(gy)h
+1344(63)h
+239 2017(3.4)s
+42(An)h
+14(Arc)h
+-1(hitectural)h
+15(Ov)h
+-1(erview)h
+1081(64)h
+239 2091(3.5)s
+42(Diagnostics)h
+1364(65)h
+239 2165(3.6)s
+42(T)h
+-1(yp)h
+1(esetter)h
+16(Indep)h
+1(endence)h
+1119(65)h
+239 2240(3.7)s
+42(Comm)h
+-1(and)h
+12(Line)h
+13(In)h
+-1(terface)h
+1122(66)h
+335 2314(3.7.1)s
+46(In)h
+-1(v)h
+-1(oking)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+1066(66)h
+335 2388(3.7.2)s
+46(Comm)h
+-1(a)h
+-1(nd)h
+12(Line)h
+14(Argumen)h
+-1(ts)h
+947(67)h
+335 2463(3.7.3)s
+46(Options)h
+1296(68)h
+239 2537(3.8)s
+42(File)h
+13(Name)h
+13(Inheritance)h
+1168(70)h
+239 2612(3.9)s
+42(F)h
+-3(unnelW)h
+-3(eb)h
+13(Startup)h
+1217(70)h
+239 2686(3.10)s
+21(Scanner)h
+1430(71)h
+335 2760(3.10.1)s
+25(Basic)h
+14(Input)h
+14(File)h
+14(Pro)h
+1(cessing)h
+942(71)h
+335 2835(3.10.2)s
+25(Sp)h
+1(ecial)h
+14(Sequences)h
+1118(72)h
+1053 2940(4)s
+cmmi10.300 sf
+607 116(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+607 190(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 265(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+866 339(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 413(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+995 488(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+640 562(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+672 636(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+866 711(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 785(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+866 860(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 934(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1027 1008(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1318 1083(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+995 1157(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+995 1231(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1059 1306(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+962 1380(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1027 1455(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+640 1529(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+543 1603(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+575 1793(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+510 1868(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+575 1942(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+866 2017(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+575 2091(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+833 2165(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 2240(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+866 2314(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+995 2388(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+640 2463(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 2537(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+704 2612(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+510 2686(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+995 2760(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+833 2835(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+5 @eop
+6 @bop0
+cmr10.300 sf
+[<FFE00FF01F0003C00F0001800F0001000F800300078002000780020003C0040003C004
+0003C0040001E0080001E0080001F0080000F0100000F0100000F8300000782000007820
+00003C4000003C4000003C4000001E8000001E8000001F8000000F0000000F0000000600
+000006000000060000>
+32 29 -1 27 31] 86 dc
+[<00030003000700060006000E000C001C0018001800380030003000700060006000E000
+C000C001C001800380030003000700060006000E000C000C001C00180018003800300070
+0060006000E000C000C000>
+16 41 -2 30 21] 47 dc
+6 @bop1
+cmr10.300 sf
+335 42(3.10.3)s
+25(Setting)h
+14(the)h
+14(Sp)h
+1(ecial)h
+14(Character)h
+904(74)h
+335 115(3.10.4)s
+25(Inserting)h
+14(the)h
+15(Sp)h
+1(ecial)h
+14(Character)h
+14(in)h
+-1(to)h
+14(the)h
+14(T)h
+-3(ext)h
+619(74)h
+335 189(3.10.5)s
+25(Inserting)h
+14(Arbitrary)h
+14(Characters)h
+16(in)h
+-1(to)h
+13(the)h
+14(T)h
+-3(ext)h
+629(74)h
+335 262(3.10.6)s
+25(Comm)h
+-1(en)h
+-1(ts)h
+1245(75)h
+335 336(3.10.7)s
+25(Quic)h
+-1(k)h
+14(Names)h
+1197(76)h
+335 409(3.10.8)s
+25(Inserting)h
+14(End)h
+14(of)h
+14(Line)h
+14(Mark)h
+-1(ers)h
+890(76)h
+335 483(3.10.9)s
+25(Suppressing)h
+15(End)h
+14(of)h
+13(Line)h
+14(Mark)h
+-1(ers)h
+836(77)h
+335 556(3.10.10)s
+4(Include)h
+14(Files)h
+1208(77)h
+335 630(3.10.11)s
+4(Pragmas)h
+1280(78)h
+468 703(3.10.11.)s
+-1(1)h
+9(Inden)h
+-1(tation)h
+1059(78)h
+468 777(3.10.11.)s
+-1(2)h
+9(Maxim)h
+-1(um)h
+10(Input)h
+14(Line)h
+14(Length)h
+738(79)h
+468 850(3.10.11.)s
+-1(3)h
+9(Maxim)h
+-1(um)h
+10(Output)h
+15(File)h
+13(Line)h
+14(Length)h
+622(79)h
+468 924(3.10.11.)s
+-1(4)h
+9(T)h
+-1(yp)h
+1(esetter)h
+1076(80)h
+335 997(3.10.12)s
+4(F)h
+-3(reestanding)h
+14(T)h
+-1(yp)h
+1(esetter)h
+16(Directiv)h
+-1(es)h
+806(81)h
+468 1071(3.10.12.)s
+-1(1)h
+9(New)h
+14(P)h
+-1(age)h
+1089(81)h
+468 1144(3.10.12.)s
+-1(2)h
+9(T)h
+-3(able)h
+13(of)h
+13(Con)h
+-1(ten)h
+-1(ts)h
+947(81)h
+468 1218(3.10.12.)s
+-1(3)h
+9(V)h
+-3(ertical)h
+14(Skip)h
+1034(81)h
+468 1291(3.10.12.)s
+-1(4)h
+9(Title)h
+1181(82)h
+335 1365(3.10.13)s
+4(Scanner/P)h
+-1(arser)h
+16(In)h
+-1(terface)h
+989(82)h
+239 1438(3.11)s
+21(P)h
+-1(arser)h
+1458(82)h
+335 1512(3.11.1)s
+25(High)h
+13(Lev)h
+-1(el)h
+14(Structure)h
+1061(82)h
+335 1585(3.11.2)s
+25(F)h
+-3(ree)h
+14(T)h
+-3(ext)h
+1266(83)h
+335 1659(3.11.3)s
+25(T)h
+-1(yp)h
+1(esetter)h
+16(Directiv)h
+-1(es)h
+1051(83)h
+468 1732(3.11.3.)s
+-1(1)h
+30(Section)h
+1138(83)h
+468 1806(3.11.3.)s
+-1(2)h
+30(Literal)h
+13(Directiv)h
+-1(e)h
+972(84)h
+468 1879(3.11.3.)s
+-1(3)h
+30(Emphasis)h
+13(Directiv)h
+-1(e)h
+918(85)h
+335 1953(3.11.4)s
+25(Macros)h
+1309(85)h
+468 2026(3.11.4.)s
+-1(1)h
+30(Names)h
+1147(86)h
+468 2100(3.11.4.)s
+-1(2)h
+30(F)h
+-3(ormal)h
+11(P)h
+-1(arameter)h
+14(Lists)h
+839(86)h
+335 2173(3.11.5)s
+25(Expressions)h
+1228(86)h
+335 2247(3.11.6)s
+25(Macro)h
+14(Calls)h
+1220(86)h
+335 2320(3.11.7)s
+25(F)h
+-3(ormal)h
+11(P)h
+-1(arameters)h
+1093(87)h
+335 2394(3.11.8)s
+25(Macros)h
+14(are)h
+15(Static)h
+1119(87)h
+239 2467(3.12)s
+21(Analyser)h
+1413(88)h
+239 2541(3.13)s
+21(T)h
+-3(angle)h
+1450(88)h
+239 2614(3.14)s
+21(W)h
+-3(ea)h
+-1(v)h
+-1(e)h
+1455(89)h
+335 2688(3.14.1)s
+25(T)h
+-3(arget)h
+13(T)h
+-1(yp)h
+1(esetter)h
+1114(89)h
+335 2761(3.14.2)s
+25(Cross)h
+14(Reference)h
+16(Num)h
+-1(b)h
+1(ering)h
+934(89)h
+239 2835(3.15)s
+21(F)h
+-3(unnelW)h
+-3(eb)h
+13(Shell)h
+1267(90)h
+1053 2940(5)s
+cmmi10.300 sf
+1027 42(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1318 115(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1318 189(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+672 262(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 336(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1059 409(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1092 483(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 556(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+640 630(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+866 703(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1188 777(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1318 850(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+866 924(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1124 997(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+833 1071(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+995 1144(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+898 1218(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 1291(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+930 1365(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+478 1438(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+866 1512(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+672 1585(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+898 1659(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 1732(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+962 1806(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1027 1879(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+640 1953(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 2026(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1092 2100(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+704 2173(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+704 2247(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+833 2320(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 2394(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+510 2467(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+478 2541(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+478 2614(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+833 2688(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+995 2761(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+672 2835(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+6 @eop
+7 @bop0
+cmbx10.300 sf
+[<03F8000F1E001C07003C07803803807803C07803C07803C0F803E0F803E0F803E0F803
+E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E07803C07803C03803803C07
+801C07000F1E0003F800>
+24 27 -2 26 24] 48 dc
+cmr10.300 sf
+[<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E00000E0000FFFF
+C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
+C00E01C00E01C00E01C00E01C07F87F8>
+24 29 0 28 23] 12 dc
+[<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01C0000E01C0
+000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0
+000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0
+000E01C0007F87FC00>
+32 29 0 28 24] 11 dc
+7 @bop1
+cmbx10.300 sf
+177 2388(4)s
+38(F)h
+-4(unnelW)h
+-4(eb)h
+14(Installat)h
+-1(ion)h
+1147(101)h
+cmr10.300 sf
+335 42(3.15.1)s
+25(In)h
+-1(tro)h
+1(duction)h
+1212(90)h
+335 116(3.15.2)s
+25(Return)h
+14(Statuses)h
+1149(90)h
+335 190(3.15.3)s
+25(Comm)h
+-1(a)h
+-1(nd)h
+12(Line)h
+14(Length)h
+1019(91)h
+335 265(3.15.4)s
+25(String)h
+13(Substitution)h
+1091(91)h
+335 339(3.15.5)s
+25(Ho)h
+-1(w)h
+13(a)h
+14(Comm)h
+-1(and)h
+12(Line)h
+13(is)h
+14(Pro)h
+1(cesse)h
+1(d)h
+799(92)h
+335 413(3.15.6)s
+25(Options)h
+1296(92)h
+335 488(3.15.7)s
+25(Shell)h
+13(Comm)h
+-1(ands)h
+1133(93)h
+468 562(3.15.7.)s
+-1(1)h
+30(Absen)h
+-1(t)h
+1143(93)h
+468 636(3.15.7.)s
+-1(2)h
+30(Co)h
+1(dify)h
+1147(93)h
+468 711(3.15.7.)s
+-1(3)h
+30(Compare)h
+1104(93)h
+468 785(3.15.7.)s
+-1(4)h
+30(De\014ne)h
+1155(94)h
+468 860(3.15.7.)s
+-1(5)h
+30(Di\013)h
+1201(94)h
+468 934(3.15.7.)s
+-1(6)h
+30(Di\013summ)h
+-1(ary)h
+1032(95)h
+468 1008(3.15.7.)s
+-1(7)h
+30(Di\013zero)h
+1128(95)h
+468 1083(3.15.7.)s
+-1(8)h
+30(Eneo)h
+1179(95)h
+468 1157(3.15.7.)s
+-1(9)h
+30(Execute)h
+1126(96)h
+468 1231(3.15.7.)s
+-1(10)h
+9(Exists)h
+1159(96)h
+468 1306(3.15.7.)s
+-1(11)h
+9(Fixeols)h
+1141(96)h
+468 1380(3.15.7.)s
+-1(12)h
+9(Fw)h
+1212(97)h
+468 1455(3.15.7.)s
+-1(13)h
+9(Help)h
+1185(97)h
+468 1529(3.15.7.)s
+-1(14)h
+9(Here)h
+1186(98)h
+468 1603(3.15.7.)s
+-1(15)h
+9(Quit)h
+1186(98)h
+468 1678(3.15.7.)s
+-1(16)h
+9(Set)h
+1212(98)h
+468 1752(3.15.7.)s
+-1(17)h
+9(Sho)h
+-1(w)h
+1173(98)h
+468 1826(3.15.7.)s
+-1(18)h
+9(Skipto)h
+1152(98)h
+468 1901(3.15.7.)s
+-1(19)h
+9(Status)h
+1154(99)h
+468 1975(3.15.7.)s
+-1(20)h
+9(T)h
+-3(olerate)h
+1100(100)h
+468 2049(3.15.7.)s
+-1(21)h
+9(T)h
+-3(race)h
+1149(100)h
+468 2124(3.15.7.)s
+-1(22)h
+9(W)h
+-3(rite)h
+1147(100)h
+468 2198(3.15.7.)s
+-1(23)h
+9(W)h
+-3(riteu)h
+1124(100)h
+239 2273(3.16)s
+21(Concluding)h
+13(Remarks)h
+1173(100)h
+239 2463(4.1)s
+42(Obtaining)h
+13(a)h
+14(Cop)h
+-1(y)h
+13(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+962(101)h
+239 2537(4.2)s
+42(Establishing)h
+13(The)h
+15(Directory)h
+14(T)h
+-3(ree)h
+966(102)h
+335 2612(4.2.1)s
+46(Admin)h
+12(Directory)h
+1111(102)h
+335 2686(4.2.2)s
+46(Answ)h
+-1(ers)h
+15(Directory)h
+1084(102)h
+335 2760(4.2.3)s
+46(Hac)h
+-1(kman)h
+12(Directory)h
+1065(103)h
+335 2835(4.2.4)s
+46(Results)h
+14(Directory)h
+1102(103)h
+1053 2940(6)s
+cmmi10.300 sf
+736 42(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 116(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+930 190(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+833 265(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1124 339(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+640 413(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 488(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 562(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 636(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+833 711(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 785(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 860(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+898 934(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 1008(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 1083(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 1157(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 1231(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 1306(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 1380(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 1455(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 1529(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 1603(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 1678(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 1752(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 1826(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 1901(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 1975(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 2049(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 2124(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 2198(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 2273(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+962 2463(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+962 2537(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 2612(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+833 2686(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+833 2760(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 2835(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+7 @eop
+8 @bop0
+cmbx10.300 sf
+[<000FF008007FFE3801FC07F807E001F80F8000781F0000783F0000383E0000387E0000
+187C000018FC000000FC000000FC000000FC000000FC000000FC000000FC007FFFFC007F
+FF7C0001F87E0001F83E0001F83F0001F81F0001F80F8001F807E001F801FC07F8007FFE
+78000FF818>
+32 28 -3 27 38] 71 dc
+[<FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C18003E30003E30001F70001F6
+0000FE0000FC0000FC00007800007800003000003000007000706000F86000F8C000F980
+007300003E0000>
+24 26 -1 17 25] 121 dc
+[<FFFFF800FFFFFF000FC01F800FC00FC00FC007C00FC007E00FC007E00FC007E00FC007
+E00FC007E00FC007C00FC00F800FC03F000FFFFE000FC00F800FC007C00FC007E00FC003
+E00FC003F00FC003F00FC003F00FC003F00FC003F00FC007E00FC007E00FC01FC0FFFFFF
+00FFFFFC00>
+32 28 -2 27 34] 66 dc
+[<FFFFF00000FFFFFE00000FC03F00000FC00F80000FC007C0000FC007E0000FC007E000
+0FC007E0000FC007E0000FC007E0000FC007C0000FC00F80000FC03E00000FFFF000000F
+C07C00000FC03E00000FC03F00000FC01F80000FC01F80000FC01F80000FC01F80000FC0
+1F80000FC01F80000FC01F81800FC01F81800FC00FC180FFFC07C300FFFC01FE00>
+40 28 -2 27 36] 82 dc
+[<6000007FFFE07FFFE07FFFC07FFF807FFF80E00300C00600C00C00C018000030000030
+0000600000E00000E00001E00001C00003C00003C00003C00003C00007C00007C00007C0
+0007C00007C00007C000038000>
+24 28 -3 27 24] 55 dc
+[<FFC7FCFFC7FC1F81800F838007C70003EE0001FC0001F80000F800007C0000FE0001DF
+00039F00070F800607C00C03E0FF07FCFF07FC>
+24 18 -1 17 25] 120 dc
+cmr10.300 sf
+[<60F0F8680808081010204080>
+8 12 -4 28 12] 39 dc
+8 @bop1
+cmbx10.300 sf
+177 756(5)s
+38(F)h
+-4(unnelW)h
+-4(eb)h
+14(Admini)h
+-1(str)h
+-1(ati)h
+-1(on)h
+1067(109)h
+177 1694(A)s
+26(Glossary)h
+1456(115)h
+177 1810(B)s
+28(References)h
+1412(117)h
+177 1926(Index)s
+1581(117)h
+cmr10.300 sf
+335 42(4.2.5)s
+46(Scripts)h
+14(Directory)h
+1110(103)h
+335 116(4.2.6)s
+46(Sources)h
+15(Directory)h
+1098(103)h
+335 191(4.2.7)s
+46(T)h
+-3(ests)h
+14(Directory)h
+1141(104)h
+335 266(4.2.8)s
+46(Userman)h
+13(Directory)h
+1074(105)h
+239 340(4.3)s
+42(Compil)h
+-1(ing)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+1147(105)h
+239 415(4.4)s
+42(T)h
+-3(esting)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+1201(105)h
+239 490(4.5)s
+42(Installing)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+1165(106)h
+239 565(4.6)s
+42(Prin)h
+-1(ting)h
+13(Man)h
+-1(uals)h
+1236(107)h
+239 639(4.7)s
+42(Installation)h
+12(Problems?)h
+1142(107)h
+239 830(5.1)s
+42(In)h
+-1(tro)h
+1(duction)h
+1325(109)h
+239 905(5.2)s
+42(The)h
+14(User's)h
+15(Comm)h
+-1(itm)h
+-2(en)h
+-1(t)h
+13(T)h
+-3(o)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+825(109)h
+239 980(5.3)s
+42(Do)h
+1(cumen)h
+-1(tation)h
+1272(110)h
+239 1054(5.4)s
+42(Registration)h
+1329(110)h
+239 1129(5.5)s
+42(Supp)h
+1(ort)h
+1406(110)h
+239 1204(5.6)s
+42(Cop)h
+-1(yrigh)h
+-1(t)h
+1370(112)h
+239 1279(5.7)s
+42(No)h
+-1(w)h
+-1(arran)h
+-1(t)h
+-1(y)h
+1339(112)h
+239 1353(5.8)s
+42(Distribution)h
+1330(113)h
+239 1428(5.9)s
+42(Mo)h
+1(di\014cation)h
+1323(113)h
+239 1503(5.10)s
+21(V)h
+-3(ersions)h
+1402(114)h
+239 1577(5.11)s
+21(FTP)h
+14(Arc)h
+-1(hiv)h
+-1(e)h
+14(and)h
+14(Author)h
+1090(114)h
+1053 2940(7)s
+cmmi10.300 sf
+801 42(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+801 116(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 191(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+833 266(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 340(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+704 415(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+736 490(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+672 565(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+769 639(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+575 830(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+1092 905(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+640 980(:)s
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+575 1054(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+510 1129(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+543 1204(:)s
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+575 1279(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+575 1353(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+575 1428(:)s
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+510 1503(:)s
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+833 1577(:)s
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+21(:)h
+20(:)h
+20(:)h
+8 @eop
+9 @bop0
+9 @bop1
+cmr10.300 sf
+1053 2940(8)s
+9 @eop
+10 @bop0
+/cmti10.300 127 @newfont
+cmbx10.746 sf
+[<FFFFFFFFFFFF800000FFFFFFFFFFFFFC0000FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFC0
+00FFFFFFFFFFFFFFF000001FFF80000FFFFC00001FFF800001FFFE00001FFF8000007FFF
+00001FFF8000003FFF80001FFF8000001FFFC0001FFF8000000FFFC0001FFF8000000FFF
+E0001FFF8000000FFFE0001FFF80000007FFF0001FFF80000007FFF0001FFF80000007FF
+F0001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FF
+F8001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FF
+F8001FFF80000007FFF0001FFF80000007FFF0001FFF80000007FFF0001FFF8000000FFF
+E0001FFF8000000FFFE0001FFF8000000FFFC0001FFF8000001FFF80001FFF8000003FFF
+80001FFF8000007FFF00001FFF800001FFFE00001FFF80000FFFF800001FFFFFFFFFFFF0
+00001FFFFFFFFFFFC000001FFFFFFFFFFE0000001FFFFFFFFFF00000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000FFFFFFFFF800000000FFFFFFFFF8000000
+00FFFFFFFFF800000000FFFFFFFFF800000000FFFFFFFFF800000000>
+72 71 -4 70 81] 80 dc
+[<00FF803F8000FFFF80FFF000FFFF83FFFC00FFFF87FFFE00FFFF8FC3FF00FFFF8F07FF
+0003FF9E0FFF8001FFBC0FFF8001FFB80FFF8001FFF80FFF8001FFF00FFF8001FFF007FF
+0001FFF007FF0001FFE003FE0001FFE000F80001FFE000000001FFE000000001FFC00000
+0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000
+0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000
+0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000
+0001FFC000000001FFC000000001FFC000000001FFC000000001FFC0000000FFFFFFE000
+00FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000>
+48 46 -4 45 49] 114 dc
+[<000000FFC000000007FFF80000003FFFFC000000FFFFFF000001FFC1FF000007FF03FF
+80000FFC03FF80000FF807FFC0001FF807FFC0003FF007FFC0003FF007FFC0003FE003FF
+80007FE003FF80007FE001FF00007FE000FE00007FE0003800007FE0000000007FE00000
+00007FE0000000007FE0000000007FE0000000007FE0000000007FE0000000007FE00000
+00007FE0000000007FE0000000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000FFFFFFFE00
+00FFFFFFFE0000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000
+00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000
+00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000
+00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000
+00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000
+00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000
+00007FF00000003FFFFFF800003FFFFFF800003FFFFFF800003FFFFFF800003FFFFFF800
+00>
+48 72 -3 71 36] 102 dc
+[<0007FFFC000000007FFFFFC0000001FFFFFFF8000003FFFFFFFE000007FE001FFF0000
+07FF0003FFC0000FFF8001FFE0000FFF8000FFF0000FFF80007FF0000FFF80007FF8000F
+FF80007FF80007FF00003FFC0007FF00003FFC0003FE00003FFC0000F800003FFC000000
+00003FFC00000000003FFC00000000003FFC00000000003FFC00000007FFFFFC000000FF
+FFFFFC000007FFFFFFFC00003FFFE03FFC0000FFFE003FFC0003FFF0003FFC0007FFC000
+3FFC000FFF00003FFC001FFE00003FFC003FFC00003FFC007FF800003FFC007FF800003F
+FC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC
+00FFF000007FFC007FF80000FFFC007FF80001EFFC003FFC0003EFFC003FFF0007CFFF00
+0FFFC03F8FFFF807FFFFFF07FFFC01FFFFFC03FFFC007FFFF001FFFC0003FF80007FF8>
+56 46 -3 45 58] 97 dc
+[<00001FFFC0000000FFFFF8000007FFFFFE00001FFFFFFF80007FFC00FFC000FFE001FF
+C001FFC003FFE003FF8003FFE007FF0003FFE00FFE0003FFE00FFE0003FFE01FFC0001FF
+C01FFC0001FFC03FFC0000FF803FFC00003E007FF8000000007FF8000000007FF8000000
+00FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8000000
+00FFF800000000FFF800000000FFF800000000FFF8000000007FF8000000007FF8000000
+007FFC000000003FFC000000003FFC000000001FFC000000F81FFE000000F80FFE000000
+F80FFF000001F007FF800003F003FFC00007E001FFE0000FC000FFF0001F80007FFE00FF
+00001FFFFFFE000007FFFFF8000000FFFFE00000001FFE0000>
+48 46 -4 45 53] 99 dc
+cmti10.300 sf
+[<07870004D98008E0C008E0C011C0E011C0E001C0E001C0E00381C00381C00381C00381
+800703800703000707000706000E8C000E70000E00000E00001C00001C00001C00001C00
+003C0000FF8000>
+24 26 -1 17 21] 112 dc
+[<3C3C26C2468747078E068E000E000E001C001C001C001C003800380038003800700030
+00>
+16 18 -4 17 18] 114 dc
+[<03CC063C0C3C181C3838303870387038E070E070E070E070E0E2C0E2C0E261E462643C
+38>
+16 18 -5 17 21] 97 dc
+[<01F007080C08181C3838300070007000E000E000E000E000E000E008E010602030C01F
+00>
+16 18 -5 17 19] 99 dc
+[<00C001C001C001C00380038003800380FFE00700070007000E000E000E000E001C001C
+001C001C00384038403840388019000E00>
+16 26 -3 25 14] 116 dc
+[<01800380010000000000000000000000000000001C002600470047008E008E000E001C
+001C001C0038003800710071007100720072003C00>
+16 28 -4 27 13] 105 dc
+[<1F800380038007000700070007000E000E000E000E001C001C001C001C003800380038
+0038007000700070007000E400E400E400E40068003800>
+16 29 -4 28 11] 108 dc
+cmbx10.300 sf
+[<FEFEFEE0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0
+E0E0E0FEFEFE>
+8 41 -4 30 13] 91 dc
+[<FFFC07FFFFFC07FF0FC000E00FC001C00FC003800FC006000FC00C000FC038000FC070
+000FC0E0000FC1C0000FC3C0000FC7E0000FCFE0000FFBF0000FF3F8000FE1F8000FC0FC
+000FC0FE000FC07E000FC03F000FC01F800FC01FC00FC00FC00FC007E00FC007F0FFFC3F
+FFFFFC3FFF>
+32 28 -2 27 37] 75 dc
+[<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0F
+C01F31E01F40F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
+F81F00F81F00F81F00F8FFE7FFFFE7FF>
+24 29 -1 28 27] 104 dc
+[<03F8000FFF001C07803003803001C07001C07801C07E01C07F83807FC3003FF6001FFC
+000FFE0007FF801DFF80387FC0781FE0F007E0F003E0F001E0F001E0F001E07801C07803
+803E07801FFE0003F800>
+24 27 -2 26 24] 56 dc
+[<FEFEFE0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E
+0E0E0EFEFEFE>
+8 41 -1 30 13] 93 dc
+[<78FCFCFCFC78>
+8 6 -3 5 13] 46 dc
+[<78FCFCFEFE7A0202040408083040>
+8 14 -3 5 13] 44 dc
+[<FFC00003FFFFE00007FF0FE00007F00DF0000DF00DF0000DF00DF0000DF00CF80019F0
+0CF80019F00C7C0031F00C7C0031F00C3E0061F00C3E0061F00C1F00C1F00C1F00C1F00C
+1F00C1F00C0F8181F00C0F8181F00C07C301F00C07C301F00C03E601F00C03E601F00C01
+FC01F00C01FC01F00C01FC01F00C00F801F00C00F801F0FFC0701FFFFFC0701FFF>
+40 28 -2 27 45] 77 dc
+cmr10.300 sf
+[<60F0F0701010101020204080>
+8 12 -4 3 12] 44 dc
+[<FFF03FE00F000F000F000C000F0008000F0010000F0020000F0040000F0080000F0100
+000F0200000F0400000F0E00000F1F00000F2F00000F2780000F4780000F83C0000F01E0
+000F01E0000F00F0000F00F8000F0078000F003C000F003C000F001E000F001F000F001F
+80FFF07FF0>
+32 28 -2 27 32] 75 dc
+[<FFE0FFE0>
+16 2 0 9 14] 45 dc
+[<7FF0FFC00FC03E000780180003C0180003E0100001E0200001F0600000F04000007880
+00007D8000003D0000001E0000001F0000000F0000000F8000000F80000013C0000023E0
+000021E0000041F00000C0F8000080780001007C0003003C0002001E0006001F001F003F
+80FFC0FFF0>
+32 28 -1 27 31] 88 dc
+[<FFFFFFFFFF80>
+48 1 0 11 42] 124 dc
+[<60F0F0F0F0F0F0F060606060606060606060606060000000000060F0F060>
+8 30 -4 29 12] 33 dc
+[<00C001E001E000C000000000000000000000000000000FE000E000E000E000E000E000
+E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0C0F1C061
+803E00>
+16 37 3 28 13] 106 dc
+[<004000800100020006000C000C0018001800300030007000600060006000E000E000E0
+00E000E000E000E000E000E000E000E000E000600060006000700030003000180018000C
+000C0006000200010000800040>
+16 42 -3 30 16] 40 dc
+[<800040002000100018000C000C000600060003000300038001800180018001C001C001
+C001C001C001C001C001C001C001C001C001C0018001800180038003000300060006000C
+000C0018001000200040008000>
+16 42 -2 30 16] 41 dc
+[<007FC001C1C00303C00703C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFF
+C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
+C00E01C00E01C00E01C00E01C07FCFF8>
+24 29 0 28 23] 13 dc
+10 @bop1
+cmbx10.746 sf
+177 399(Preface)s
+cmti10.300 sf
+177 1287(pr)s
+-2(actic)h
+-2(al)h
+cmbx10.300 sf
+1446 639([Kn)s
+-1(uth83])h
+177 2059(Ross)s
+15(N.)h
+17(Willi)h
+-1(ams)h
+177 2109(Adelaide,)s
+14(Australi)h
+-1(a)h
+177 2159(Ma)s
+-1(y)h
+16(1992)h
+cmr10.300 sf
+177 639(When,)s
+17(in)h
+16(1986,)h
+16(I)h
+16(\014rst)h
+18(read)h
+17(Donald)h
+15(Kn)h
+-1(uth's)h
+17(tec)h
+-1(hnical)h
+17(rep)h
+1(ort)h
+18(on)h
+16(W)h
+-3(eb)h
+210(,)h
+15(and)h
+16(tried)h
+17(W)h
+-3(eb)h
+177 689(out,)s
+16(I)h
+15(w)h
+-1(as)h
+16(sim)h
+-1(ultaneously)h
+13(excited)h
+17(b)h
+-1(y)h
+15(Kn)h
+-1(uth's)h
+16(idea)h
+15(of)h
+15(literate)h
+16(programm)h
+-1(ing,)h
+13(and)h
+16(disapp)h
+1(oin)h
+-1(ted)h
+15(b)h
+-1(y)h
+177 739(his)s
+14(impl)h
+-1(emen)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(it.)h
+18(I)h
+13(w)h
+-1(as)h
+14(excited)h
+14(b)h
+1(ecause)h
+16(I)h
+13(could)h
+14(sense)h
+15(the)h
+14(p)h
+1(oten)h
+-1(tial)h
+14(for)h
+13(the)h
+14(literate)h
+14(st)h
+-1(yle)h
+14(to)h
+177 789(transform)s
+14(the)h
+15(state)h
+15(of)h
+14(mind)h
+13(of)h
+14(the)h
+15(programm)h
+-1(er,)h
+13(but)h
+15(w)h
+-1(as)h
+14(disapp)h
+1(oin)h
+-1(ted)h
+14(b)h
+-1(y)h
+15(W)h
+-3(eb's)h
+14(rigidit)h
+-1(y)h
+13(and)h
+14(lac)h
+-1(k)h
+177 839(of)s
+15(practicalit)h
+-1(y)h
+-3(,)h
+14(whic)h
+-1(h)h
+15(seemed)h
+16(to)h
+15(b)h
+1(etra)h
+-1(y)h
+15(this)h
+16(p)h
+1(oten)h
+-1(tial.)h
+21(The)h
+16(W)h
+-3(eb)h
+15(I)h
+15(used)h
+16(w)h
+-1(as)h
+15(P)h
+-1(ascal-sp)h
+1(eci\014c,)h
+17(T)h
+1881 848(E)s
+1904 839(X-)s
+177 888(sp)s
+1(eci\014c,)h
+13(and)h
+11(applied)h
+10(to)h
+1(o)h
+11(man)h
+-1(y)h
+9(constrain)h
+-1(ts)h
+11(to)h
+11(the)h
+12(programm)h
+-1(i)h
+-1(ng)h
+9(pro)h
+1(cess.)h
+19(In)h
+11(particular,)h
+11(it)h
+11(insisted)h
+11(on)h
+177 938(taking)s
+13(con)h
+-1(trol)h
+13(of)h
+13(the)h
+14(program)h
+12(text,)h
+13(mangli)h
+-1(ng)h
+12(the)h
+14(co)h
+1(de)h
+14(in)h
+13(the)h
+14(P)h
+-1(ascal)h
+13(output)h
+14(\014les,)h
+13(and)h
+14(imp)h
+1(osing)h
+11(its)h
+177 988(o)s
+-1(wn)h
+13(rather)h
+13(rigid)h
+12(ideas)h
+13(ab)h
+1(out)h
+13(inden)h
+-1(ting)h
+12(in)h
+12(the)h
+14(T)h
+1026 997(E)s
+1049 988(X)s
+13(output.)h
+18(All)h
+12(this,)h
+12(com)h
+-1(bined)h
+12(with)h
+12(the)h
+14(complexit)h
+-1(y)h
+177 1038(of)s
+13(the)h
+15(to)h
+1(ol,)h
+13(led)h
+14(me)h
+12(to)h
+14(come)h
+13(to)h
+14(p)h
+1(erceiv)h
+-1(e)h
+15(W)h
+-3(eb)h
+14(as)h
+14(problem)h
+12(rather)h
+15(than)h
+14(solution.)h
+177 1112(Despite)s
+15(all)h
+14(this,)h
+14(I)h
+15(w)h
+-1(as)h
+14(w)h
+-1(ell)h
+14(and)h
+14(truly)h
+15(ho)h
+1(ok)h
+-1(ed)h
+14(on)h
+15(the)h
+15(idea)h
+14(of)h
+14(literate)h
+15(programm)h
+-1(ing)h
+-1(.)h
+18(The)h
+15(inevitable)h
+177 1162(result)s
+15(w)h
+-1(as)h
+14(that)h
+14(I)h
+13(designed)h
+15(and)h
+14(impl)h
+-1(em)h
+-1(en)h
+-1(ted)h
+13(m)h
+-1(y)h
+12(o)h
+-1(wn)h
+14(v)h
+-1(ersion)h
+14(of)h
+13(W)h
+-3(eb)h
+14(|)h
+13(F)h
+-3(unnelW)h
+-3(eb!)h
+177 1237(F)s
+-3(unnelW)h
+-3(eb)h
+10(is)h
+11(not)h
+10(the)h
+12(most)h
+9(sophisticated)h
+12(literate)h
+10(programm)h
+-1(ing)h
+8(to)h
+1(ol)h
+10(a)h
+-1(v)h
+-2(ailable,)h
+9(but)h
+11(it)h
+10(is)h
+11(an)h
+10(extremely)h
+342 1287(to)s
+1(ol,)h
+12(striving)h
+12(for)h
+12(simplicit)h
+-1(y)h
+11(and)h
+12(p)h
+1(ortabilit)h
+-1(y)h
+12(in)h
+12(all)h
+11(areas.)h
+18(Not)h
+13(only)h
+12(is)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(language-)h
+177 1337(indep)s
+1(enden)h
+-1(t,)h
+23(and)h
+20(to)h
+20(some)h
+19(exten)h
+-1(t)h
+21(t)h
+-1(yp)h
+1(esetter)h
+23(indep)h
+1(enden)h
+-1(t,)h
+22(but)h
+21(its)h
+20(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+18(also)h
+20(stresses)h
+177 1386(p)s
+1(ortabilit)h
+-1(y)h
+-3(,)h
+14(b)h
+1(eing)h
+15(written)h
+16(in)h
+15(C,)h
+15(and)h
+16(curren)h
+-1(tly)h
+16(op)h
+1(erating)h
+16(on)h
+15(four)h
+15(ma)h
+2(jor)h
+14(platforms)h
+14(\(Sun,)h
+15(V)h
+-3(ax,)h
+15(PC,)h
+177 1436(Mac\).)s
+18(F)h
+-3(unnelW)h
+-3(eb)h
+13(allo)h
+-1(ws)h
+12(the)h
+15(programm)h
+-1(er)h
+12(total)h
+12(con)h
+-1(trol)h
+14(o)h
+-1(v)h
+-1(er)h
+13(the)h
+14(output)h
+14(\014le,)h
+13(making)h
+11(it)h
+13(suitable)h
+13(for)h
+177 1486(use)s
+18(with)h
+16(all)h
+16(sorts)h
+17(of)h
+16(format-sensitiv)h
+-1(e)h
+16(languages.)h
+26(It)h
+17(also)h
+16(allo)h
+-1(ws)h
+15(con)h
+-1(trol)h
+17(o)h
+-1(v)h
+-1(er)h
+16(its)h
+17(o)h
+-1(wn)h
+16(source)h
+18(co)h
+1(de,)h
+177 1536(whic)s
+-1(h)h
+11(has)h
+11(b)h
+1(een)h
+12(released)h
+12(under)h
+12(a)h
+10(GNU)h
+11(license.)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+10(is)h
+11(quite)h
+11(solid,)h
+10(ha)h
+-1(ving)h
+10(to)h
+11(pass)h
+11(a)h
+11(regression)h
+177 1586(testing)s
+17(suite)h
+18(of)h
+16(o)h
+-1(v)h
+-1(er)h
+17(200)h
+16(tests)h
+18(b)h
+1(efore)h
+17(b)h
+1(eing)h
+17(released.)h
+28(Finally)h
+-3(,)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+16(is)h
+17(w)h
+-1(ell)h
+16(do)h
+1(cumen)h
+-1(ted)h
+17(b)h
+-1(y)h
+177 1636(this)s
+14(man)h
+-1(ual)h
+12(whic)h
+-1(h)h
+13(pro)h
+-1(vides)h
+14(a)h
+14(tutorial,)h
+13(adv)h
+-2(anced)h
+14(hin)h
+-1(ts,)h
+13(and)h
+14(a)h
+13(language)h
+13(de\014nition.)h
+177 1710(I)s
+11(w)h
+-1(ould)h
+9(lik)h
+-1(e)h
+10(to)h
+10(dedicate)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+10(and)h
+10(this)h
+10(man)h
+-1(ual)h
+8(to)h
+11(Donald)h
+9(Kn)h
+-1(uth)h
+11(and)h
+10(his)h
+11(literate)h
+10(programm)h
+-1(ing)h
+177 1760(to)s
+1(ol)h
+10(W)h
+-3(eb.)h
+17(Although)h
+10(this)h
+10(man)h
+-1(ual)h
+9(is)h
+10(somewhat)h
+10(critical)h
+10(of)h
+10(some)h
+10(asp)h
+1(ects)h
+12(of)h
+10(W)h
+-3(eb,)h
+11(this)h
+10(criticism)h
+10(is)h
+10(really)h
+177 1810(a)s
+13(pro)h
+1(duct)h
+14(of)h
+12(di\013ering)h
+13(design)h
+13(goals.)h
+17(Kn)h
+-1(uth)h
+14(designed)h
+13(a)h
+13(paradigm)h
+11(\(literate)h
+13(programm)h
+-1(ing\))h
+11(and)h
+13(a)h
+12(to)h
+1(ol)h
+177 1860(\(W)s
+-3(eb\))h
+20(aimed)h
+19(at)h
+20(the)h
+21(highest)h
+20(pitc)h
+-1(h)h
+21(of)h
+19(program)h
+19(presen)h
+-1(tation)h
+21(and)h
+20(t)h
+-1(yp)h
+1(esetting.)h
+38(F)h
+-3(unnelW)h
+-3(eb)h
+20(aim)h
+-1(s)h
+177 1910(lo)s
+-1(w)h
+-1(er,)h
+13(relaxing)h
+12(constrain)h
+-1(ts,)h
+13(and)h
+13(making)h
+11(comprom)h
+-1(ises)h
+12(in)h
+12(order)h
+14(to)h
+13(ac)h
+-1(hiev)h
+-1(e)h
+13(simplicit)h
+-1(y)h
+-3(,)h
+10(\015exibilit)h
+-1(y)h
+-3(,)h
+11(and)h
+177 1959(p)s
+1(ortabilit)h
+-1(y)h
+-3(.)h
+16(The)h
+12(result)h
+12(is)h
+11(a)h
+11(practical)h
+12(to)h
+1(ol)h
+11(whic)h
+-1(h)h
+11(I)h
+11(hop)h
+1(e)h
+12(will)h
+10(attract)h
+12(more)h
+11(p)h
+1(eople)h
+12(to)h
+11(the)h
+12(literate)h
+12(st)h
+-1(yle.)h
+1053 2940(9)s
+10 @eop
+11 @bop0
+11 @bop1
+cmr10.300 sf
+1042 2940(10)s
+11 @eop
+12 @bop0
+/cmtt10.300 127 @newfont
+cmbx10.746 sf
+[<0000000003E000000000000000000007F000000000000000000007F000000000000000
+00000FF80000000000000000000FF80000000000000000000FF80000000000000000001F
+FC0000000000000000001FFC0000000000000000003FFE0000000000000000003FFE0000
+000000000000007FFF0000000000000000007FFF0000000000000000007FFF0000000000
+00000000FFFF800000000000000000FFFF800000000000000001FFFFC000000000000000
+01FFFFC00000000000000001FFFFC00000000000000003FFFFE00000000000000003EFFF
+E00000000000000007EFFFF00000000000000007CFFFF00000000000000007C7FFF00000
+00000000000FC7FFF8000000000000000F83FFF8000000000000001F83FFFC0000000000
+00001F03FFFC000000000000001F01FFFC000000000000003F01FFFE000000000000003E
+00FFFE000000000000007E00FFFF000000000000007C007FFF00000000000000FC007FFF
+80000000000000F8007FFF80000000000000F8003FFF80000000000001F8003FFFC00000
+00000001F0001FFFC0000000000003F0001FFFE0000000000003E0001FFFE00000000000
+03E0000FFFE0000000000007E0000FFFF0000000000007C00007FFF000000000000FC000
+07FFF800000000000F800007FFF800000000000F800003FFF800000000001F800003FFFC
+00000000001F000001FFFC00000000003FFFFFFFFFFE00000000003FFFFFFFFFFE000000
+00007FFFFFFFFFFF00000000007FFFFFFFFFFF00000000007FFFFFFFFFFF0000000000FC
+0000007FFF8000000000F80000003FFF8000000001F80000003FFFC000000001F0000000
+3FFFC000000001F00000001FFFC000000003F00000001FFFE000000003E00000000FFFE0
+00000007E00000000FFFF000000007C00000000FFFF000000007C000000007FFF0000000
+0FC000000007FFF80000000F8000000003FFF80000001F8000000003FFFC0000001F0000
+000003FFFC0000007FC000000001FFFC0000FFFFFFC00007FFFFFFFF80FFFFFFC00007FF
+FFFFFF80FFFFFFC00007FFFFFFFF80FFFFFFC00007FFFFFFFF80FFFFFFC00007FFFFFFFF
+80>
+88 72 -4 71 90] 65 dc
+[<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000
+FFFFC00000000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001
+FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF
+C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0
+0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000
+00000001FFC0007FFFF801FFC0007FFFF801FFC0007FFFF801FFC0007FFFF801FFC0007F
+FFF801FFC0000FFE0001FFC00007F00001FFC0000FE00001FFC0003FC00001FFC0007F80
+0001FFC000FE000001FFC001FC000001FFC007F8000001FFC00FF0000001FFC01FC00000
+01FFC03F80000001FFC0FF00000001FFC1FE00000001FFC3FF00000001FFCFFF80000001
+FFDFFFC0000001FFFFFFC0000001FFFFFFE0000001FFFFFFF0000001FFFCFFF8000001FF
+F87FFC000001FFE03FFC000001FFC01FFE000001FFC01FFF000001FFC00FFF800001FFC0
+07FFC00001FFC003FFC00001FFC001FFE00001FFC001FFF00001FFC000FFF80001FFC000
+7FFC0001FFC0003FFC0001FFC0001FFE0001FFC0000FFF0001FFC0000FFF8001FFC0000F
+FFC0FFFFFF807FFFFFFFFFFF807FFFFFFFFFFF807FFFFFFFFFFF807FFFFFFFFFFF807FFF
+FF>
+56 72 -4 71 63] 107 dc
+[<FFFFFF07FFFFE007FFFEFFFFFF07FFFFE007FFFEFFFFFF07FFFFE007FFFEFFFFFF07FF
+FFE007FFFEFFFFFF07FFFFE007FFFE03FFC0001FFC00003FC003FFE0000FFC00001F8001
+FFE0000FFC00001F0001FFE0000FFE00001F0001FFF00007FE00003F0000FFF0000FFF00
+003E0000FFF8000FFF00007E00007FF8000FFF00007C00007FF8001FFF80007C00003FFC
+001FFF8000F800003FFC003FFFC000F800003FFE003EFFC001F800001FFE003EFFC001F0
+00001FFE007EFFE003F000000FFF007C7FE003E000000FFF00FC7FF003E000000FFF80F8
+3FF007E0000007FF80F83FF007C0000007FF81F83FF80FC0000003FFC1F01FF80F800000
+03FFC3F01FFC0F80000003FFE3E00FFC1F80000001FFE3E00FFC1F00000001FFE7E00FFE
+3F00000000FFF7C007FE3E00000000FFFFC007FF3E00000000FFFF8003FF7E000000007F
+FF8003FF7C000000007FFF8003FFFC000000003FFF0001FFF8000000003FFF0001FFF800
+0000003FFE0000FFF8000000001FFE0000FFF0000000001FFE0000FFF0000000000FFC00
+007FE0000000000FFC00007FE0000000000FF800003FE00000000007F800003FC0000000
+0007F800003FC00000000003F000001F800000000001E000000F000000>
+80 46 -3 45 86] 119 dc
+[<007FC000FFFFC000FFFFC000FFFFC000FFFFC000FFFFC00003FFC00001FFC00001FFC0
+0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
+0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
+0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
+0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
+0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
+0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
+0001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF
+80>
+32 72 -4 71 32] 108 dc
+[<00000000007FC00000000000FFFFC00000000000FFFFC00000000000FFFFC000000000
+00FFFFC00000000000FFFFC0000000000003FFC0000000000001FFC0000000000001FFC0
+000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000000000
+0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0
+000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000000000
+0001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000000FFC01FFC0
+000000FFFF81FFC0000007FFFFE1FFC000001FFFFFF9FFC000007FFC03FFFFC00000FFF0
+007FFFC00001FFC0001FFFC00003FF80000FFFC00007FF000007FFC0000FFE000003FFC0
+000FFE000003FFC0001FFC000003FFC0001FFC000003FFC0003FFC000003FFC0003FFC00
+0003FFC0007FF8000003FFC0007FF8000003FFC0007FF8000003FFC000FFF8000003FFC0
+00FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF800
+0003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC0
+007FF8000003FFC0007FF8000003FFC0007FF8000003FFC0003FF8000003FFC0003FFC00
+0003FFC0003FFC000003FFC0001FFC000003FFC0001FFC000003FFC0000FFE000007FFC0
+0007FF00000FFFC00003FF00001FFFC00001FFC0003FFFC00000FFE000FFFFE000007FF8
+07FBFFFF80001FFFFFF3FFFF800007FFFFC3FFFF800001FFFF03FFFF8000001FF803FFFF
+80>
+64 72 -4 71 66] 100 dc
+[<00000000001F8000007FF000FFE00007FFFF03FFF0001FFFFFC7FFF0007FFFFFFFC7F8
+00FFE03FFE0FF801FF800FFC0FF803FF0007FE0FF807FE0003FF07F007FE0003FF07F00F
+FC0001FF81C00FFC0001FF80000FFC0001FF80001FFC0001FFC0001FFC0001FFC0001FFC
+0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0000FFC0001FF80000FFC00
+01FF80000FFC0001FF800007FE0003FF000007FE0003FF000003FF0007FE000001FF800F
+FC000000FFE03FF8000001FFFFFFF0000001DFFFFFC0000003C7FFFF00000003C07FF000
+000007C0000000000007C0000000000007C0000000000007C0000000000007E000000000
+0007F0000000000007F8000000000007FFFFFFF0000007FFFFFFFF000003FFFFFFFFE000
+03FFFFFFFFF80001FFFFFFFFFE0001FFFFFFFFFF0000FFFFFFFFFF80007FFFFFFFFF8003
+FFFFFFFFFFC00FFFFFFFFFFFC01FF800001FFFE03FE0000001FFE07FC00000007FF07FC0
+0000003FF0FF800000001FF0FF800000001FF0FF800000001FF0FF800000001FF0FF8000
+00001FF07FC00000003FE07FC00000003FE03FE00000007FC03FF0000000FFC01FFC0000
+03FF800FFF00000FFF0003FFF000FFFC0000FFFFFFFFF000003FFFFFFFC0000007FFFFFE
+000000003FFFC00000>
+56 68 -3 46 59] 103 dc
+[<007FC001FFC00000FFE00000FFFFC00FFFF80007FFFC0000FFFFC03FFFFE001FFFFF00
+00FFFFC0FFFFFF007FFFFF8000FFFFC1FC07FF80FE03FFC000FFFFC3E003FFC1F001FFE0
+0003FFC7C001FFC3E000FFE00001FFCF0001FFE78000FFF00001FFDE0000FFEF00007FF0
+0001FFDC0000FFEE00007FF00001FFFC0000FFFE00007FF80001FFF80000FFFC00007FF8
+0001FFF00000FFF800007FF80001FFF00000FFF800007FF80001FFF00000FFF800007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8
+0001FFE00000FFF000007FF80001FFE00000FFF000007FF800FFFFFFC07FFFFFE03FFFFF
+F0FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFF
+F0FFFFFFC07FFFFFE03FFFFFF0>
+96 46 -4 45 101] 109 dc
+cmbx10.300 sf
+[<FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C18003E30003E30001F60001F6
+0001FE0000FC0000FC00007800007800003000>
+24 18 -1 17 25] 118 dc
+[<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE0007FFE
+003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0E000
+E0F001C0FC03C0EFFF0083FC00>
+24 28 -3 27 27] 83 dc
+[<07FFF007FFF0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F
+80001F80001F80001F80001F80001F80001F80001F80001F80301F80781F80FC1F80FC1F
+80FC1F00783E00387C000FF000>
+24 28 -1 27 25] 74 dc
+cmtt10.300 sf
+[<003F00007F00003F0000070000070000070000070003C7000FF7003FFF003C1F00780F
+00F00700F00700E00700E00700E00700E00700F00700F00F00781F007C3F003FFFE01FF7
+F007C7E0>
+24 25 -1 24 22] 100 dc
+[<1FE0007FF8007FFC00783C00301E00000E00000E0003FE001FFE007E0E00F00E00E00E
+00E00E00F01E00F83E007FFFE03FE7E00F83E0>
+24 18 -2 17 22] 97 dc
+[<7F1FC0FF1FE07F1FC01C07001E0F000E0E000E0E000E0E00071C00071C00071C00071C
+0003B80003B80003B80001F00001F00000E000>
+24 18 -1 17 22] 118 dc
+[<03E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03
+F0>
+16 18 -3 17 22] 101 dc
+[<00F80003FE000FFF001F0F803E3F803C7F8078FFC071E7C0F1C3C0E3C3C0E381C0E381
+C0E381C0E381C0E381C0E3C3C0F1C38071E78078FF003C7E003E3C001F03C00FFFC003FF
+0000FC00>
+24 25 -2 24 22] 64 dc
+[<03F80FFE1FFE3C1E780C7000F000E000E000E000E000F000700778073E0F1FFE0FFC03
+F0>
+16 18 -3 17 22] 99 dc
+[<0FEC3FFC7FFCF03CE01CE01CF0007F801FF007FC003EE00EE00EF00EF81EFFFCFFF8C7
+E0>
+16 18 -3 17 22] 115 dc
+[<70F8F8F870>
+8 5 -8 4 22] 46 dc
+[<FFC000FFC000FFC00001C00001C00001C00001C00001C00001C00001C00001C00001C0
+0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF
+80FFFF80>
+24 25 -2 24 22] 108 dc
+[<018003C003C0018000000000000000007FC07FC07FC001C001C001C001C001C001C001
+C001C001C001C001C001C07FFFFFFF7FFF>
+16 26 -3 25 22] 105 dc
+[<7E1F80FE3F807E1F800E03800E03800E03800E03800E03800E03800E03800E03800E03
+800E03800E07800F0F800FFFF007FFF803E3F0>
+24 18 0 17 22] 117 dc
+[<F9C380FFEFC0FFFFE03E7CE03C78E03870E03870E03870E03870E03870E03870E03870
+E03870E03870E03870E0FE7CF8FE7CF8FE3C78>
+24 18 0 17 22] 109 dc
+[<03E0000FF8001FFC003C1E00780F00700700E00380E00380E00380E00380E00380F007
+80700700780F003C1E001FFC000FF80003E000>
+24 18 -2 17 22] 111 dc
+[<7E3C00FEFF007FFF800F87800F03800F03800E03800E03800E03800E03800E03800E03
+800E03800E03800E03807FC7F0FFE7F87FC7F0>
+24 18 0 17 22] 110 dc
+[<0300000700000700000700000700007FFF00FFFF00FFFF000700000700000700000700
+0007000007000007000007010007038007038007078007878003FF0003FE0000F800>
+24 23 -1 22 22] 116 dc
+[<FF0FC0FF3FE0FF7FE007F04007E00007C0000780000780000700000700000700000700
+00070000070000070000FFFC00FFFC00FFFC00>
+24 18 -1 17 22] 114 dc
+[<003000780078003000000000000000001FF81FF81FF800380038003800380038003800
+380038003800380038003800380038003800380038003800386070F0F0FFE07FC03F80>
+16 35 -2 25 22] 106 dc
+[<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C00071C00039C00039C
+0003980001B80001B80000F00000F00000F00000E00000E00000E00001C00079C0007BC0
+007F80003F00003C0000>
+24 27 -1 17 22] 121 dc
+[<FF1FE0FFBFE0FF1FE038038038038038038038038038E38019F30019F30019B3001DB7
+001DB7001DB7001DB7000F1E000F1E000F1E00>
+24 18 -1 17 22] 119 dc
+[<7E0000FE00007E00000E00000E00000E00000E00000E3E000EFF800FFFC00F83E00F01
+E00E00F00E00F00E00700E00700E00700E00700E00F00F00E00F01E00F83C00FFFC00EFF
+00063C00>
+24 25 0 24 22] 98 dc
+[<7E0000FE00007E00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E
+000E3C000E78000EF0000FF0000FF8000FBC000F1E000E0E000E07000E07807F87F0FFCF
+F07F87F0>
+24 25 0 24 22] 107 dc
+[<7E0000FE00007E00000E00000E00000E00000E00000E3C000EFF000FFF800F87800F03
+800F03800E03800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7
+F87FC7F0>
+24 25 0 24 22] 104 dc
+12 @bop1
+cmbx10.746 sf
+177 399(Ac)s
+-3(kno)h
+-3(wledgemen)h
+-3(ts)h
+cmbx10.300 sf
+488 645(Da)s
+-1(vid)h
+18(Hulse)h
+430 1018(Simon)s
+14(Hac)h
+-1(k)h
+-1(ett)h
+438 1193(Jerem)s
+-1(y)h
+17(Begg)h
+450 1317(Barry)s
+57(Dwy)h
+-1(er)h
+772(Roger)h
+57(Brissend)h
+-1(en)h
+177 1591(Ross)s
+15(N.)h
+17(Willi)h
+-1(ams)h
+177 1641(Adelaide,)s
+14(Australi)h
+-1(a)h
+177 1691(Ma)s
+-1(y)h
+16(1992)h
+cmtt10.300 sf
+781 645(dave@cs.adela)s
+-1(ide.e)h
+-1(du.au)h
+768 1018(simon@internod)s
+-1(e.com)h
+-1(.au)h
+744 1193(jeremy@vsm.c)s
+-1(om.au)h
+832 1317(dwyer@cs.ad)s
+-1(elaid)h
+-1(e.edu)h
+-1(.au)h
+193 1367(rjb@koala.harv)s
+-1(ard.e)h
+-1(du)h
+cmr10.300 sf
+177 645(Man)s
+-1(y)h
+16(thanks)h
+17(to)h
+294(\()h
+503(\))h
+15(for)h
+17(translating)h
+16(the)h
+17(original)h
+15(v)h
+-1(ersion)h
+177 695(of)s
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(\(F)h
+-3(unnelW)h
+-3(eb)h
+16(V1\))h
+15(from)h
+14(Ada)h
+16(in)h
+-1(to)h
+15(C)h
+15(and)h
+16(getting)h
+15(it)h
+16(to)h
+15(w)h
+-1(ork)h
+15(on)h
+16(Unix)h
+15(and)h
+16(a)h
+15(PC.)h
+15(The)h
+177 744(C)s
+17(co)h
+1(de)h
+18(written)h
+17(b)h
+-1(y)h
+17(Da)h
+-1(vid)h
+15(\(F)h
+-3(unnelW)h
+-3(eb)h
+17(V2\))h
+16(formed)h
+16(the)h
+17(basis)h
+17(of)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(V3,)h
+17(but)h
+17(w)h
+-1(as)h
+17(en)h
+-1(tirely)h
+177 794(rewritten)s
+18(during)h
+17(the)h
+18(in)h
+-1(tensiv)h
+-1(e)h
+17(re\014nemen)h
+-1(t)h
+18(and)h
+16(feature-injection)h
+18(p)h
+1(erio)h
+1(d)h
+17(leading)h
+16(up)h
+17(to)h
+17(this)h
+18(release)h
+177 844(\(F)s
+-3(unnelW)h
+-3(eb)h
+12(V3)h
+12(is)h
+11(ab)h
+1(out)h
+12(three)h
+13(times)h
+11(the)h
+13(size)h
+13(of)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+11(V2\).)h
+18(Nev)h
+-1(ertheless,)h
+14(without)h
+12(this)h
+12(imp)h
+1(or-)h
+177 894(tan)s
+-1(t)h
+13(\014rst)h
+15(translation)h
+12(step,)h
+14(I)h
+14(w)h
+-1(ould)h
+12(probably)h
+13(not)h
+13(ha)h
+-1(v)h
+-1(e)h
+13(found)h
+13(the)h
+14(motiv)h
+-2(atio)h
+-1(n)h
+12(to)h
+13(dev)h
+-1(elop)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+177 944(to)s
+14(its)h
+14(presen)h
+-1(t)h
+15(state.)h
+177 1018(Thanks)s
+14(go)h
+12(to)h
+335(\()h
+482(\))h
+11(of)h
+13(In)h
+-1(terno)h
+1(de)h
+14(Systems)h
+13(Pt)h
+-1(y)h
+14(Ltd)h
+13(for)h
+13(the)h
+177 1068(use)s
+18(of)h
+16(his)h
+17(Sun,)h
+18(Mac,)h
+18(and)h
+16(PC,)h
+17(for)h
+17(assistance)h
+18(in)h
+17(p)h
+1(orting)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+17(to)h
+17(the)h
+17(Sun)h
+18(and)h
+16(PC,)h
+17(and)h
+17(for)h
+177 1118(helpful)s
+13(discussions.)h
+177 1193(Thanks)s
+16(go)h
+16(to)h
+305(\()h
+372(\))h
+14(of)h
+16(VSM)h
+16(Soft)h
+-1(w)h
+-1(are)h
+15(Services)h
+18(for)h
+15(the)h
+17(use)h
+17(of)h
+15(his)h
+177 1243(V)s
+-5(AX,)h
+14(and)h
+14(for)h
+14(assistance)h
+15(with)h
+13(the)h
+15(VMS-sp)h
+1(eci\014c)h
+15(co)h
+1(de.)h
+177 1317(Thanks)s
+50(to)h
+417(\()h
+525(\))h
+48(and)h
+177 1367(\()s
+460(\))h
+16(for)h
+18(trying)h
+18(out)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+18(V)h
+-3(ersion)h
+18(1)h
+18(in)h
+18(1987)h
+17(and)h
+18(pro)h
+-1(viding)h
+17(v)h
+-2(aluable)h
+177 1417(feedbac)s
+-1(k.)h
+177 1492(Thanks)s
+14(to)h
+14(Donald)h
+13(Kn)h
+-1(uth)h
+14(for)h
+13(establishing)h
+14(the)h
+14(idea)h
+14(of)h
+13(literate)h
+14(programm)h
+-1(ing)h
+12(in)h
+13(the)h
+15(\014rst)h
+14(place.)h
+1042 2940(11)s
+12 @eop
+13 @bop0
+13 @bop1
+cmr10.300 sf
+1042 2940(12)s
+13 @eop
+14 @bop0
+/cmcsc10.300 127 @newfont
+cmmi10.300 sf
+[<0000038000000F0000003C000000F0000003C000000F0000003C000000F0000003C000
+000F0000003C000000F0000000F00000003C0000000F00000003C0000000F00000003C00
+00000F00000003C0000000F00000003C0000000F0000000380>
+32 24 -3 21 32] 60 dc
+[<E0000000780000001E0000000780000001E0000000780000001E0000000780000001E0
+000000780000001E00000007800000078000001E00000078000001E00000078000001E00
+000078000001E00000078000001E00000078000000E0000000>
+32 24 -3 21 32] 62 dc
+cmcsc10.300 sf
+[<00200000700000700000700000B80000B80000B800011C00011C00011C00020E00020E
+0004070004070007FF000803800803800803801801C03803C0FE0FF8>
+24 21 -1 20 25] 97 dc
+cmti10.300 sf
+[<0001FC000703000C03001C07001C0300180000380000380000380000380000700007FF
+FC00701C00701C00701C00E03800E03800E03800E03800E07001C07001C07001C07001C0
+E201C0E201C0E20380E4038064038038038000030000070000060000C60000E40000CC00
+00700000>
+24 37 1 28 23] 12 dc
+[<01F006080C080C1C18181C001F001FC00FF007F0007800386030E030C030806060C01F
+00>
+16 18 -3 17 17] 115 dc
+[<1E0300270700470700470700870E00870E000E0E000E0E001C1C001C1C001C1C001C1C
+003838803838801838801839001C5900078E00>
+24 18 -4 17 22] 117 dc
+[<0FC00001C00001C0000380000380000380000380000700000700000700000700000E78
+000E8C000F0E000E0E001C0E001C0E001C0E001C0E00381C00381C00381C003838007038
+80703880707080707100E03200601C00>
+24 29 -3 28 21] 104 dc
+[<01E007180C0C180C380C300E700E700EE01CE01CE01CE018E038E030E06060C031801E
+00>
+16 18 -5 17 21] 111 dc
+[<1E03270747074707870E870E0E0E0E0E1C1C1C1C1C1C1C1C38383838183818381C7007
+F00070007000E0E0C0E1C0818047003C00>
+16 26 -4 17 20] 121 dc
+[<01E007100C1018083810701070607F80E000E000E000E000E000E0086010602030C01F
+00>
+16 18 -5 17 19] 101 dc
+cmbx10.746 sf
+[<00FC0001FF0003FF8007FFC00FFFC01FFFE01FFFE01FFFE01FFFE01FFFE01FFFE00FFF
+C007FFC003FF8001FF0000FC000000000000000000000000000000000000000000000000
+00000000000000000000007FC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC003FFC001FFC001FF
+C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
+C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
+C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFF>
+24 73 -4 72 32] 105 dc
+[<FFFFFFC0000000FFFFFFF0FFFFFFE0000000FFFFFFF0FFFFFFF0000000FFFFFFF0FFFF
+FFF8000000FFFFFFF0FFFFFFFC000000FFFFFFF0001FFFFC000000007FE000001FFFFE00
+0000001F8000001FFFFF000000001F8000001FFFFF800000001F8000001FFFFFC0000000
+1F8000001FBFFFE00000001F8000001F9FFFE00000001F8000001F9FFFF00000001F8000
+001F8FFFF80000001F8000001F87FFFC0000001F8000001F83FFFE0000001F8000001F81
+FFFF0000001F8000001F80FFFF0000001F8000001F80FFFF8000001F8000001F807FFFC0
+00001F8000001F803FFFE000001F8000001F801FFFF000001F8000001F800FFFF800001F
+8000001F8007FFF800001F8000001F8007FFFC00001F8000001F8003FFFE00001F800000
+1F8001FFFF00001F8000001F8000FFFF80001F8000001F80007FFFC0001F8000001F8000
+3FFFC0001F8000001F80003FFFE0001F8000001F80001FFFF0001F8000001F80000FFFF8
+001F8000001F800007FFFC001F8000001F800003FFFE001F8000001F800001FFFF001F80
+00001F800001FFFF001F8000001F800000FFFF801F8000001F8000007FFFC01F8000001F
+8000003FFFE01F8000001F8000001FFFF01F8000001F8000000FFFF81F8000001F800000
+0FFFF81F8000001F80000007FFFC1F8000001F80000003FFFE1F8000001F80000001FFFF
+1F8000001F80000000FFFF9F8000001F800000007FFFDF8000001F800000007FFFDF8000
+001F800000003FFFFF8000001F800000001FFFFF8000001F800000000FFFFF8000001F80
+00000007FFFF8000001F8000000003FFFF8000001F8000000003FFFF8000001F80000000
+01FFFF8000001F8000000000FFFF8000001F80000000007FFF8000001F80000000003FFF
+8000001F80000000001FFF8000001F80000000001FFF8000001F80000000000FFF800000
+1F800000000007FF8000001F800000000003FF8000001F800000000001FF8000007FE000
+00000000FF8000FFFFFFF000000000FF8000FFFFFFF0000000007F8000FFFFFFF0000000
+003F8000FFFFFFF0000000001F8000FFFFFFF0000000000F0000>
+88 71 -4 70 93] 78 dc
+cmtt10.300 sf
+[<01800380038007800F807F80FF80738003800380038003800380038003800380038003
+8003800380038003807FF87FFC7FF8>
+16 25 -4 24 22] 49 dc
+[<3FFE003FFE003FFE003800003800003800003800003800003800003800003BF0003FFC
+003FFE003C0F00300700000780000380600380F00380F00780F00F00F81F007FFE001FF8
+0007E000>
+24 25 -2 24 22] 53 dc
+[<03E0000FF8001FFC001E3C00380E00780F00700700700700E00380E00380E00380E003
+80E00380E00380E00380E00380F00780700700700700780F003C1E001E3C001FFC000FF8
+0003E000>
+24 25 -2 24 22] 48 dc
+[<03E3C00FFFE01FFFE01E3CC03C1E00380E00380E00380E003C1E001E3C001FFC001FF8
+003BE0003800003800001FFC001FFF003FFFC07803C0F001E0E000E0E000E0E000E0F001
+E07C07C03FFF800FFE0003F800>
+24 28 -1 17 22] 103 dc
+[<7E3E00FEFF807FFFC00F83E00F01E00E00F00E00F00E00700E00700E00700E00700E00
+F00F00E00F01E00F83C00FFFC00EFF000E3C000E00000E00000E00000E00000E00000E00
+007FC000FFE0007FC000>
+24 27 0 17 22] 112 dc
+cmbx10.300 sf
+[<78FCFCFCFC7800000000000078FCFCFCFC78>
+8 18 -3 17 13] 58 dc
+[<FF3F80FFE1E01F80F01F00781F007C1F003C1F003E1F003E1F003E1F003E1F003E1F00
+3E1F003C1F007C1F00781F80F01FC1E01F3F001F00001F00001F00001F00001F00001F00
+00FFE000FFE000>
+24 26 -1 17 27] 112 dc
+[<FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0
+000FC0000FC0000FC0000FC0000FC0000FC0030FC0030FC0030FC0070FC0070FC0060FC0
+0E0FC01E0FC07EFFFFFEFFFFFE>
+24 28 -2 27 29] 76 dc
+14 @bop1
+cmmi10.300 sf
+190 689(<)s
+189(><)h
+76(>)h
+cmcsc10.300 sf
+1644 933(a)s
+1431 1058(a)s
+1695 1107(a)s
+754 1332(a)s
+cmti10.300 sf
+222 689(\014rstauthor)s
+64(ye)h
+-2(ar)h
+cmbx10.746 sf
+177 399(Presen)s
+-3(tation)h
+42(Notes)h
+cmtt10.300 sf
+316 938(akt150@cscgpo.)s
+-1(anu.e)h
+-1(du.au)h
+1538 1063(verbatim)s
+cmbx10.300 sf
+177 639(References:)s
+177 689([)s
+393(])h
+177 764(Sp)s
+1(ecial)h
+11(terms:)h
+177 888(T)s
+-1(yp)h
+1(esetting)h
+-1(:)h
+1740 938([Kn)s
+-1(uth84])h
+177 988([Lamp)s
+1(ort86])h
+177 1063(Graphics:)s
+177 1237(Kno)s
+-1(wn)h
+13(t)h
+-1(yp)h
+1(esetti)h
+-1(ng)h
+11(probl)h
+-1(ems:)h
+cmr10.300 sf
+456 639(All)s
+24(reference)h
+1(s)h
+28(are)h
+25(set)h
+27(in)h
+25(b)h
+1(old)h
+24(and)h
+26(are)h
+25(cited)h
+26(in)h
+25(square)h
+26(brac)h
+-1(k)h
+-1(ets)h
+27(in)h
+25(the)h
+26(form)h
+596 689(.)s
+19(All)h
+13(references)h
+16(cited)h
+14(in)h
+13(the)h
+13(text)h
+14(app)h
+1(ear)h
+14(in)h
+13(the)h
+14(reference)h
+15(list)h
+13(and)h
+13(the)h
+14(index.)h
+487 764(New)s
+12(or)h
+11(imp)h
+1(ortan)h
+-1(t)h
+10(terminolog)h
+-1(y)h
+10(has)h
+11(b)h
+1(een)h
+13(set)h
+12(in)h
+11(b)h
+1(old)h
+11(face)h
+12(and)h
+11(app)h
+1(ears)h
+12(in)h
+11(the)h
+12(index.)h
+177 814(A)s
+14(glossary)h
+14(app)h
+1(ears)h
+14(as)h
+14(an)h
+14(app)h
+1(endix.)h
+510 888(This)s
+41(do)h
+1(cumen)h
+-1(t)h
+40(w)h
+-1(as)h
+40(prepared)h
+42(b)h
+-1(y)h
+40(the)h
+41(author)h
+40(using)h
+41(Andrew)h
+41(T)h
+-3(rev)h
+-1(or-)h
+177 938(ro)s
+-1(w's)h
+29(\()h
+525(\))h
+28(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+28(\(OzT)h
+-3(eX\))h
+30(of)h
+29(the)h
+30(T)h
+1558 947(E)s
+1581 938(X/L)s
+4(T)h
+1686 951(E)s
+1709 938(X)s
+447 988(t)s
+-1(yp)h
+1(esetting)h
+15(system)h
+13(running)h
+14(on)h
+14(a)h
+13(Macin)h
+-1(tosh-SE.)h
+394 1063(All)s
+11(diagram)h
+-1(s)h
+10(ha)h
+-1(v)h
+-1(e)h
+11(b)h
+1(een)h
+13(constructed)h
+13(out)h
+11(of)h
+11(text)h
+12(using)h
+11(the)h
+12(L)h
+4(T)h
+1473 1076(E)s
+1496 1063(X)s
+197(en)h
+-1(vironmen)h
+-1(t)h
+177 1112(so)s
+17(as)h
+16(to)h
+17(allo)h
+-1(w)h
+15(this)h
+16(do)h
+1(cumen)h
+-1(t)h
+16(to)h
+17(b)h
+1(e)h
+17(disseminated)h
+15(electronically)h
+17(and)h
+16(prin)h
+-1(ted)h
+17(using)h
+16(L)h
+4(T)h
+1737 1125(E)s
+1761 1112(X)s
+16(without)h
+177 1162(access)s
+16(to)h
+14(the)h
+14(author's)h
+14(dra)h
+-1(wing)h
+13(to)h
+1(ols.)h
+805 1237(While)s
+11(ev)h
+-1(ery)h
+12(attempt)h
+11(has)h
+12(b)h
+1(een)h
+12(made)h
+10(to)h
+12(giv)h
+-1(e)h
+11(a)h
+11(go)h
+1(o)h
+1(d)h
+11(presen)h
+-1(tation)h
+177 1287(within)s
+12(the)h
+13(time)h
+11(a)h
+-1(v)h
+-2(ailabl)h
+-1(e,)h
+11(some)h
+12(shortcuts)h
+14(ha)h
+-1(v)h
+-1(e)h
+12(had)h
+12(to)h
+12(b)h
+1(e)h
+13(tak)h
+-1(en.)h
+18(In)h
+13(particular,)h
+12(the)h
+13(author)h
+12(has)h
+13(b)h
+1(een)h
+177 1337(unable)s
+14(to)h
+14(w)h
+-1(ork)h
+13(out)h
+14(ho)h
+-1(w)h
+14(to)h
+13(get)h
+14(L)h
+4(T)h
+796 1350(E)s
+820 1337(X)s
+14(to)h
+14(suppress)h
+15(blank)h
+14(pages)h
+14(at)h
+13(the)h
+15(start)h
+14(of)h
+14(c)h
+-1(hapters.)h
+1042 2940(13)s
+14 @eop
+15 @bop0
+15 @bop1
+cmr10.300 sf
+1042 2940(14)s
+15 @eop
+16 @bop0
+/cmbx10.622 127 @newfont
+/cmbx10.432 127 @newfont
+cmbx10.622 sf
+[<0000001FFF000070000001FFFFE000F000000FFFFFFC01F000007FFFFFFF03F00001FF
+FE007F87F00007FFE0000FEFF0000FFF000003FFF0003FFE000001FFF0007FF8000000FF
+F000FFF00000007FF001FFE00000003FF003FFC00000001FF003FF800000001FF007FF80
+0000000FF00FFF0000000007F00FFF0000000007F01FFE0000000007F01FFE0000000003
+F03FFC0000000003F03FFC0000000003F07FFC0000000001F07FFC0000000001F07FFC00
+00000001F07FF8000000000000FFF8000000000000FFF8000000000000FFF80000000000
+00FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800
+0000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF80000000000
+00FFF80000000000007FF80000000000007FFC0000000000007FFC0000000000F07FFC00
+00000000F03FFC0000000000F03FFC0000000000F01FFE0000000000F01FFE0000000001
+F00FFF0000000001E00FFF0000000003E007FF8000000003E003FF8000000007C003FFC0
+00000007C001FFE00000000F8000FFF00000001F00007FF80000003E00003FFE0000007C
+00000FFF000001F8000007FFE00007F0000001FFFE003FC00000007FFFFFFF800000000F
+FFFFFC0000000001FFFFF000000000001FFF000000>
+64 61 -5 59 71] 67 dc
+[<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF000000
+0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
+0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
+0003FF0000000003FF0000000003FF0000000003FF0000000003FF007FC00003FF01FFF8
+0003FF07FFFE0003FF1F03FF0003FF3C01FF0003FF7801FF8003FF7000FF8003FFE000FF
+C003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFF
+FF>
+48 60 -4 59 55] 104 dc
+[<001FFF00000001FFFFF0000007FFFFFC00000FF807FF00001FF801FF80001FFC00FFC0
+001FFC007FE0001FFC007FE0001FFC007FF0001FFC003FF0000FF8003FF00007F0003FF0
+0001C0003FF0000000003FF0000000003FF0000000003FF0000000FFFFF000000FFFFFF0
+00007FF83FF00003FF803FF00007FE003FF0001FFC003FF0003FF8003FF0007FF0003FF0
+007FE0003FF000FFE0003FF000FFC0003FF000FFC0003FF000FFC0003FF000FFC0007FF0
+00FFC0007FF000FFE000FFF0007FF001DFF0003FF803DFF8001FFC0F8FFFF00FFFFE0FFF
+F001FFFC07FFF0003FE000FFF0>
+48 38 -3 37 48] 97 dc
+[<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE03FF00FFFFF001FFC003FFE0007F
+E003FF80007FF003FF80003FF803FF00001FF803FF00001FFC03FF00000FFC03FF00000F
+FE03FF00000FFE03FF00000FFE03FF000007FF03FF000007FF03FF000007FF03FF000007
+FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007
+FF03FF00000FFE03FF00000FFE03FF00000FFE03FF00001FFC03FF00001FFC03FF00001F
+F803FF80003FF003FFC0007FF003FFE000FFE003FFF001FF8003FFFC07FF0003FF3FFFFC
+0003FF0FFFF00003FF01FF000003FF0000000003FF0000000003FF0000000003FF000000
+0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
+0003FF0000000003FF0000000003FF00000000FFFFFC000000FFFFFC000000FFFFFC0000
+00FFFFFC000000>
+48 55 -3 37 55] 112 dc
+[<0007800000078000000780000007800000078000000F8000000F8000000F8000000F80
+00001F8000001F8000003F8000003F8000007F800000FF800001FF800007FF80001FFFFF
+F0FFFFFFF0FFFFFFF0FFFFFFF001FF800001FF800001FF800001FF800001FF800001FF80
+0001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF80
+0001FF800001FF800001FF800001FF800001FF803C01FF803C01FF803C01FF803C01FF80
+3C01FF803C01FF803C01FF803C00FF807800FFC078007FC0F8007FE1F0001FFFE00007FF
+C00001FF00>
+32 55 -2 54 38] 116 dc
+[<0001FFC000000FFFF800003FFFFE0000FF80FF0001FE003F8007FC001FC00FF8000FE0
+0FF8000FF01FF00007F03FF00007F83FF00007F87FE00007F87FE00003FC7FE00003FC7F
+E00003FCFFE00003FCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFE0000000FFE0000000FFE0
+000000FFE00000007FE00000007FE00000007FE00000003FE00000003FF000003C1FF000
+003C1FF000003C0FF800007807FC0000F803FE0001F001FF0007E000FFC03FC0003FFFFF
+000007FFFC000000FFE000>
+40 38 -3 37 45] 101 dc
+[<00FE03F000FFFE0FFE00FFFE3FFF80FFFE3C7FC0FFFE707FC007FEF0FFE003FEE0FFE0
+03FEC0FFE003FFC0FFE003FF80FFE003FF807FC003FF803F8003FF800E0003FF00000003
+FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF
+00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00
+000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE00
+00FFFFFE0000FFFFFE0000>
+40 38 -3 37 41] 114 dc
+[<00001E000000003E00000000FE00000003FE0000003FFE0000FFFFFE0000FFFFFE0000
+FFFFFE0000FFCFFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000
+0FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000F
+FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE
+0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00
+00000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000
+000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000
+0FFE0000000FFE00007FFFFFFFC07FFFFFFFC07FFFFFFFC07FFFFFFFC0>
+40 56 -7 55 49] 49 dc
+cmbx10.746 sf
+[<3FFFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFF003FFFFFFFFF
+FFFFFFFF003FFFFFFFFFFFFFFFFF003FFF0003FFF8003FFF007FF80003FFF80007FF807F
+E00003FFF80001FF807FC00003FFF80000FF807F800003FFF800007F807F000003FFF800
+003F807F000003FFF800003F807E000003FFF800001F807E000003FFF800001F807E0000
+03FFF800000F807C000003FFF800000F807C000003FFF800000F807C000003FFF800000F
+807C000003FFF800000F80FC000003FFF800000FC0F8000003FFF8000007C0F8000003FF
+F8000007C0F8000003FFF8000007C0F8000003FFF8000007C0F8000003FFF8000007C000
+000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF800
+00000000000003FFF80000000000000003FFF80000000000000003FFF800000000000000
+03FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF8000000
+0000000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FF
+F80000000000000003FFF80000000000000003FFF80000000000000003FFF80000000000
+000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF800
+00000000000003FFF80000000000000003FFF80000000000000003FFF800000000000000
+03FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF8000000
+0000000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FF
+F80000000000000003FFF80000000000000003FFF80000000000000003FFF80000000000
+000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF800
+0000000003FFFFFFFFFFF800000003FFFFFFFFFFF800000003FFFFFFFFFFF800000003FF
+FFFFFFFFF800000003FFFFFFFFFFF80000>
+80 70 -4 69 83] 84 dc
+[<007FE000003FF000FFFFE0007FFFF000FFFFE0007FFFF000FFFFE0007FFFF000FFFFE0
+007FFFF000FFFFE0007FFFF00003FFE00001FFF00001FFE00000FFF00001FFE00000FFF0
+0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0
+0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0
+0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0
+0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0
+0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0
+0000FFF00001FFE00000FFF00001FFE00001FFF00001FFE00001FFF00001FFE00001FFF0
+0001FFE00003FFF00000FFE00007FFF00000FFE0000F7FF000007FE0001F7FF000007FF0
+003E7FF800003FFC00FC7FFFE0001FFFFFF87FFFE00007FFFFE07FFFE00001FFFF807FFF
+E000003FFE007FFFE0>
+64 46 -4 45 66] 117 dc
+[<FFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE000FFFE000000FFFE000
+000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE00000
+0FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000F
+FFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFF
+E000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE0
+00000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000
+000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE00000
+0FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000F
+FFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFF
+E000000FFFE000FFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE>
+40 71 -3 70 45] 73 dc
+cmbx10.432 sf
+[<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+007FFFFE7FFFFE7FFFFE>
+24 39 -5 38 34] 49 dc
+[<1C007F00FF80FF80FF80FF80FF807F001C00>
+16 9 -5 8 19] 46 dc
+[<FFFFE07FFFF007FFF0FFFFE07FFFF007FFF0FFFFE07FFFF007FFF003FC0001FE00001C
+0003FC0001FE00001C0001FE0001FF0000380001FE0000FF0000380001FF0000FF000078
+0000FF0000FF8000700000FF0000FF8000700000FF8000FF8000F000007F8001FFC000E0
+00007F8001FFC000E000003FC003FFE001C000003FC0039FE001C000003FE0039FE003C0
+00001FE0070FF0038000001FE0070FF0038000001FF00F0FF0078000000FF00E07F80700
+00000FF00E07F80700000007F81E07FC0E00000007F81C03FC0E00000007FC1C03FC1E00
+000003FC3801FE1C00000003FC3801FE1C00000001FE7801FF3800000001FE7000FF3800
+000001FE7000FF3800000000FFF000FFF000000000FFE0007FF000000000FFE0007FF000
+0000007FC0003FE0000000007FC0003FE0000000003FC0003FC0000000003F80001FC000
+0000003F80001FC0000000001F80001F80000000001F00000F80000000001F00000F8000
+0000000E000007000000>
+72 41 -1 40 71] 87 dc
+[<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE00000000FE0000000
+0FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
+E00000000FE07F00000FE1FFC0000FE787E0000FEE07F0000FFC03F8000FF803F8000FF0
+03F8000FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
+F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
+000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80>
+40 42 -3 41 38] 104 dc
+[<01FF800007FFF0000F81FC001FC0FE001FC07F001FC07F001FC03F800F803F8000003F
+8000003F8000003F80000FFF8000FFFF8007FC3F801FE03F803F803F807F803F807F003F
+80FE003F80FE003F80FE003F80FE007F80FF007F807F00FFC03F83DFFC0FFF0FFC01FC03
+FC>
+32 27 -2 26 33] 97 dc
+[<00700000700000700000700000F00000F00000F00001F00003F00003F00007F0001FFF
+F0FFFFF0FFFFF007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
+0007F00007F00007F00007F03807F03807F03807F03807F03807F03807F03803F87001F8
+F000FFE0001F80>
+24 38 -1 37 27] 116 dc
+[<07001FC01FE03FE03FE03FE01FE01FC007000000000000000000000000000000FFE0FF
+E0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
+E00FE00FE00FE00FE0FFFEFFFEFFFE>
+16 43 -3 42 20] 105 dc
+[<03FE300FFFF03E03F07800F07000F0F00070F00070F80070FC0000FFE000FFFE007FFF
+C03FFFE01FFFF007FFF800FFFC0003FC0000FCE0007CE0003CF0003CF0003CF80078FC00
+78FF01F0F7FFC0C1FF00>
+24 27 -2 26 27] 115 dc
+[<FFFFFC0000FFFFFC0000FFFFFC000003FC00000003FC00000003FC00000003FC000000
+03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003
+FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
+00000003FC00000003FC00000003FC0001C003FC0001C003FC0001C003FC0001C003FC00
+03C003FC00038003FC00038003FC00078003FC00078003FC000F8003FC000F8003FC001F
+8003FC007F8003FC01FF00FFFFFFFF00FFFFFFFF00FFFFFFFF00>
+40 41 -3 40 41] 76 dc
+[<003FE00001FFF80003F07E000FE03F001FC01F803F800FC03F800FC07F000FC07F0007
+E0FF0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF000000FF0000
+007F0000007F8000003F8000E03F8001E01FC001C00FE003C003F81F8000FFFE00001FF0
+00>
+32 27 -2 26 32] 101 dc
+[<FFC1F0FFC7FCFFCE3E0FDC7F0FD87F0FF87F0FF07F0FF03E0FF0000FE0000FE0000FE0
+000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0
+00FFFF00FFFF00FFFF00>
+24 27 -2 26 28] 114 dc
+[<FFFFFFF800FFFFFFFF00FFFFFFFFC003FC003FE003FC000FF003FC0007F803FC0007FC
+03FC0003FC03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03
+FC0003FE03FC0003FC03FC0007FC03FC0007F803FC000FF003FC003FE003FFFFFF8003FF
+FFFE0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00
+000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
+0003FC00000003FC000000FFFFF00000FFFFF00000FFFFF00000>
+40 41 -3 40 47] 80 dc
+[<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F0007F07F0007
+F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007
+F87F0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001FFFC00003FE0
+00>
+32 27 -2 26 34] 111 dc
+[<00FF81F003FFE7FC0FC1FE7C1F80FC7C3F80FE7C3F007E107F007F007F007F007F007F
+007F007F007F007F007F007F003F007E003F80FE001F80FC000FC1F8001FFFE00018FF80
+00380000003C0000003C0000003E0000003FFFF8003FFFFF001FFFFFC00FFFFFE007FFFF
+F01FFFFFF07E0007F87C0001F8F80001F8F80000F8F80000F8F80000F8FC0001F87E0003
+F03F0007E00FC01F8003FFFE00007FF000>
+32 40 -2 26 34] 103 dc
+[<FFC07F800FF000FFC1FFE03FFC00FFC783F0F07E000FCE03F9C07F000FDC01FB803F00
+0FF801FF003F800FF001FE003F800FF001FE003F800FF001FE003F800FE001FC003F800F
+E001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE0
+01FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001
+FC003F800FE001FC003F800FE001FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE1FFF
+C3FFF8FFFE1FFFC3FFF8>
+56 27 -3 26 60] 109 dc
+[<FFC07F0000FFC1FFC000FFC787E0000FCE07F0000FDC03F8000FF803F8000FF003F800
+0FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
+E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
+03F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80>
+40 27 -3 26 38] 110 dc
+[<01FF000FFFE03E03F87803FC7801FCFE01FEFE01FEFE01FEFE01FE7C01FE3803FC0003
+FC0007F0000FE0000F80001F00001E00003C00003C000078000078000070000070000070
+0000700000700000700000000000000000000000000000000000000000700001FC0003FE
+0003FE0003FE0003FE0003FE0001FC00007000>
+24 42 -4 41 32] 63 dc
+cmbx10.300 sf
+[<FFE0FFE0FFE0FFE0>
+16 4 -1 10 16] 45 dc
+cmr10.300 sf
+[<08081010202040404040808080808080B0B0F8F878783030>
+16 12 -6 28 21] 92 dc
+[<6060F0F0F8F8686808080808080810101010202040408080>
+16 12 -1 28 21] 34 dc
+[<003F07FC0001C0DC1C000381F03C000701F03C000E01E01C000E00E01C000E00E01C00
+0E00E01C000E00E01C000E00E01C000E00E01C00FFFFFFFC000E00E01C000E00E01C000E
+00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00
+E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FC
+FF80>
+40 29 0 28 35] 15 dc
+[<60F0F0600000000000000000000060F0F060>
+8 18 -4 17 12] 58 dc
+16 @bop1
+cmbx10.622 sf
+177 378(Chapter)s
+34(1)h
+cmbx10.746 sf
+177 610(A)s
+40(T)h
+-10(utorial)h
+41(In)h
+-3(tro)h
+3(duction)h
+cmbx10.432 sf
+177 876(1.1)s
+70(What)h
+23(is)h
+22(Literate)h
+22(Programm)h
+-2(i)h
+-1(ng?)h
+cmbx10.300 sf
+227 1116(literate)s
+11(programming)h
+1470 1963(Figure)s
+14(1)h
+295 2536(Re-orderin)s
+-1(g)h
+14(of)h
+16(co)h
+1(de:)h
+775 2635([BSI82])s
+cmr10.300 sf
+177 992(A)s
+20(traditional)h
+18(computer)h
+19(program)h
+18(consists)h
+20(of)h
+19(a)h
+19(text)h
+20(\014le)h
+19(con)h
+-1(taining)h
+19(program)h
+18(co)h
+1(de.)h
+35(Scattered)h
+21(in)h
+177 1041(amongst)s
+12(the)h
+15(program)h
+12(co)h
+1(de)h
+15(are)h
+14(commen)h
+-1(ts)h
+12(whic)h
+-1(h)h
+14(describ)h
+1(e)h
+16(the)h
+14(v)h
+-2(arious)h
+13(parts)h
+15(of)h
+13(the)h
+15(co)h
+1(de.)h
+177 1116(In)s
+468(the)h
+13(emphasis)h
+11(is)h
+12(rev)h
+-1(ersed.)h
+20(Instead)h
+13(of)h
+11(writing)h
+11(co)h
+1(de)h
+13(con)h
+-1(taining)h
+11(do)h
+1(cumen-)h
+177 1166(tation,)s
+11(the)h
+13(literate)h
+12(programm)h
+-1(er)h
+11(writes)h
+12(do)h
+1(cumen)h
+-1(tation)h
+11(con)h
+-1(taining)h
+11(co)h
+1(de.)h
+18(No)h
+11(longer)h
+12(do)h
+1(es)h
+13(the)h
+12(English)h
+177 1216(commen)s
+-1(tary)h
+9(injected)h
+12(in)h
+-1(to)h
+11(a)h
+11(program)h
+10(ha)h
+-1(v)h
+-1(e)h
+11(to)h
+11(b)h
+1(e)h
+12(hidden)h
+11(in)h
+11(comm)h
+-1(en)h
+-1(t)h
+10(delimiters)h
+10(at)h
+12(the)h
+11(top)h
+12(of)h
+10(the)h
+12(\014le,)h
+177 1266(or)s
+15(under)h
+15(pro)h
+1(cedure)h
+16(headings,)h
+14(or)h
+15(at)h
+14(the)h
+15(end)h
+15(of)h
+14(lines.)h
+19(Instead,)h
+15(it)h
+14(is)h
+14(wrenc)h
+-1(hed)h
+16(in)h
+-1(to)h
+14(the)h
+15(da)h
+-1(yligh)h
+-1(t)h
+13(and)h
+177 1315(made)s
+16(the)h
+17(main)h
+15(fo)h
+1(cus.)h
+26(The)h
+17(\\program")h
+15(then)h
+17(b)h
+1(ecomes)h
+17(primarily)h
+14(a)h
+17(do)h
+1(cumen)h
+-1(t)h
+16(directed)h
+18(at)h
+17(h)h
+-1(umans,)h
+177 1365(with)s
+12(the)h
+13(co)h
+1(de)h
+14(b)h
+1(eing)h
+12(herded)h
+14(b)h
+1(et)h
+-1(w)h
+-1(een)h
+14(\\co)h
+1(de)h
+13(delimi)h
+-1(ters")h
+12(from)h
+11(where)h
+13(it)h
+12(can)h
+13(b)h
+1(e)h
+13(extracted)h
+14(and)h
+12(sh)h
+-1(u\017ed)h
+177 1415(out)s
+14(sidew)h
+-1(a)h
+-1(ys)h
+14(to)h
+14(the)h
+14(language)h
+13(system)h
+14(b)h
+-1(y)h
+13(literate)h
+15(programm)h
+-1(i)h
+-1(ng)h
+12(to)h
+1(ols.)h
+177 1490(The)s
+15(e\013ect)h
+17(of)h
+14(this)h
+15(simple)h
+13(shift)h
+14(of)h
+15(emphasis)h
+13(can)h
+15(b)h
+1(e)h
+16(so)h
+15(profound)h
+14(as)h
+15(to)h
+14(c)h
+-1(hange)h
+15(one's)h
+15(whole)h
+15(approac)h
+-1(h)h
+177 1540(to)s
+14(programm)h
+-1(ing.)h
+17(Under)h
+15(the)h
+15(literate)h
+15(programm)h
+-1(ing)h
+12(paradigm)h
+-1(,)h
+12(the)h
+15(cen)h
+-1(tral)h
+15(activit)h
+-1(y)h
+14(of)h
+13(programm)h
+-1(ing)h
+177 1589(b)s
+1(ecomes)h
+15(that)h
+15(of)h
+14(con)h
+-1(v)h
+-1(eying)h
+14(meaning)h
+13(to)h
+15(other)h
+15(in)h
+-1(telligen)h
+-1(t)h
+14(b)h
+1(eings)h
+15(rather)h
+15(than)h
+15(merely)h
+14(con)h
+-1(vincing)h
+14(the)h
+177 1639(computer)s
+16(to)h
+16(b)h
+1(eha)h
+-1(v)h
+-1(e)h
+16(in)h
+16(a)h
+16(particular)h
+16(w)h
+-1(a)h
+-1(y)h
+-3(.)h
+23(It)h
+16(is)h
+16(the)h
+17(di\013erence)h
+18(b)h
+1(et)h
+-1(w)h
+-1(een)h
+17(p)h
+1(erforming)h
+15(and)h
+16(exp)h
+1(osing)h
+16(a)h
+177 1689(magic)s
+12(tric)h
+-1(k.)h
+177 1764(In)s
+18(order)h
+18(to)h
+18(program)h
+16(in)h
+18(a)h
+17(literate)h
+18(st)h
+-1(yle,)h
+19(particular)h
+17(to)h
+1(ols)h
+18(are)h
+18(required.)h
+30(The)h
+19(traditional)h
+16(approac)h
+-1(h)h
+177 1814(\(used)s
+15(in)h
+14(the)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(system\))h
+14(is)h
+14(to)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(some)h
+13(sort)h
+15(of)h
+13(text-\014le-in/text-\014le-out)h
+14(utilit)h
+-1(y)h
+13(that)h
+14(reads)h
+177 1863(a)s
+20(literate)h
+19(program)h
+18(\(con)h
+-1(taining)h
+19(a)h
+20(program)h
+18(comm)h
+-1(en)h
+-1(tary)h
+18(p)h
+1(epp)h
+1(ered)h
+22(with)h
+19(scraps)h
+21(of)h
+19(program)h
+18(text\))h
+177 1913(and)s
+16(writes)h
+16(out)h
+16(a)h
+16(\014le)h
+16(con)h
+-1(taining)h
+14(all)h
+15(the)h
+16(program)h
+15(co)h
+1(de)h
+16(and)h
+16(a)h
+15(\014le)h
+16(con)h
+-1(taining)h
+15(t)h
+-1(yp)h
+1(esetter)h
+18(comma)h
+-1(nds)h
+177 1963(representing)s
+15(the)h
+14(en)h
+-1(tire)h
+15(input)h
+13(do)h
+1(cumen)h
+-1(t,)h
+13(do)h
+1(cumen)h
+-1(tation,)h
+13(co)h
+1(de,)h
+14(and)h
+14(all)h
+12(\()h
+175(\).)h
+177 2038(Giv)s
+-1(en)h
+15(the)h
+16(coming)h
+14(age)h
+15(of)h
+15(h)h
+-1(yp)h
+1(ertext)h
+17(systems,)h
+15(this)h
+16(is)h
+15(probably)h
+15(not)h
+16(the)h
+16(b)h
+1(est)h
+16(approac)h
+-1(h.)h
+23(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+16(it)h
+177 2087(do)s
+1(es)h
+12(mesh)h
+11(b)h
+1(eautifully)h
+10(with)h
+11(curren)h
+-1(t)h
+13(text)h
+12(\014les)h
+12(and)h
+11(comma)h
+-1(nd)h
+10(line)h
+11(in)h
+-1(terfaces,)h
+12(the)h
+12(exp)h
+1(ectation)h
+12(of)h
+11(linear)h
+177 2137(presen)s
+-1(tations)h
+15(in)h
+14(the)h
+14(do)h
+1(cumen)h
+-1(ts)h
+14(w)h
+-1(e)h
+14(read,)h
+14(and)h
+14(the)h
+15(particular)h
+13(requiremen)h
+-1(ts)h
+15(of)h
+13(curren)h
+-1(t)h
+15(programm)h
+-1(ing)h
+177 2187(languages)s
+14(and)h
+13(t)h
+-1(yp)h
+1(esetting)h
+15(systems.)h
+18(It)h
+14(is)h
+14(certainly)h
+14(not)h
+14(a)h
+13(bad)h
+14(approac)h
+-1(h.)h
+177 2262(With)s
+16(this)h
+17(structure)h
+18(in)h
+16(place,)h
+17(the)h
+17(literate)h
+17(programm)h
+-1(ing)h
+14(system)h
+16(can)h
+17(pro)h
+-1(vide)h
+16(far)h
+16(more)h
+16(than)h
+16(just)h
+17(a)h
+177 2312(rev)s
+-1(ersal)h
+18(of)h
+16(the)h
+18(priorit)h
+-1(y)h
+16(of)h
+17(comm)h
+-1(en)h
+-1(ts)h
+16(and)h
+17(co)h
+1(de.)h
+28(In)h
+17(its)h
+17(full)h
+15(blo)h
+-1(wn)h
+17(form,)h
+15(a)h
+17(go)h
+1(o)h
+1(d)h
+16(literate)h
+18(program-)h
+177 2361(ming)s
+14(facilit)h
+-1(y)h
+14(can)h
+15(pro)h
+-1(vide)h
+16(total)h
+15(supp)h
+1(ort)h
+16(for)h
+15(the)h
+16(essen)h
+-1(tial)h
+16(thrust)h
+17(of)h
+15(literate)h
+16(programm)h
+-1(i)h
+-1(ng,)h
+13(whic)h
+-1(h)h
+16(is)h
+177 2411(that)s
+15(computer)h
+15(programs)h
+14(should)h
+15(b)h
+1(e)h
+16(written)h
+16(more)h
+14(for)h
+15(the)h
+16(h)h
+-1(uman)h
+14(reader)h
+16(than)h
+15(for)h
+15(the)h
+16(compiler.)h
+21(In)h
+177 2461(particular,)s
+13(a)h
+14(literate)h
+14(programm)h
+-1(ing)h
+11(system)h
+14(can)h
+14(pro)h
+-1(vide:)h
+743 2536(Programm)s
+-1(i)h
+-1(ng)h
+12(languages)h
+14(often)h
+14(force)h
+15(the)h
+15(programm)h
+-1(er)h
+13(to)h
+14(giv)h
+-1(e)h
+295 2586(the)s
+14(v)h
+-2(arious)h
+12(parts)h
+13(of)h
+12(a)h
+13(computer)h
+12(program)h
+11(in)h
+12(a)h
+13(particular)h
+12(order.)h
+19(F)h
+-3(or)h
+12(example,)h
+11(the)h
+14(P)h
+-1(as-)h
+295 2635(cal)s
+13(programm)h
+-1(ing)h
+11(language)h
+165(imp)h
+1(oses)h
+12(the)h
+14(ordering:)h
+17(constan)h
+-1(ts,)h
+14(t)h
+-1(yp)h
+1(es,)h
+14(v)h
+-2(ariables,)h
+295 2685(pro)s
+1(cedures)h
+1(,)h
+15(co)h
+1(de.)h
+20(P)h
+-1(ascal)h
+14(also)h
+14(requires)h
+15(that)h
+15(pro)h
+1(cedures)h
+16(app)h
+1(ear)h
+15(in)h
+14(an)h
+14(order)h
+15(consisten)h
+-1(t)h
+295 2735(with)s
+15(the)h
+15(partial)h
+14(ordering)h
+15(imp)h
+1(osed)h
+13(b)h
+-1(y)h
+15(the)h
+15(static)h
+15(call)h
+14(graph)h
+15(\(but)h
+15(forw)h
+-1(ard)h
+15(declarations)h
+295 2785(allo)s
+-1(w)h
+13(this)h
+15(to)h
+15(b)h
+1(e)h
+15(b)h
+-1(ypassed\).)h
+21(In)h
+15(con)h
+-1(trast,)h
+15(the)h
+16(literate)h
+15(st)h
+-1(yle)h
+14(requires)h
+16(that)h
+15(the)h
+15(program-)h
+295 2835(mer)s
+11(b)h
+1(e)h
+13(free)h
+12(to)h
+12(presen)h
+-1(t)h
+13(the)h
+12(computer)h
+12(program)h
+10(in)h
+11(an)h
+-1(y)h
+12(order)h
+12(whatso)h
+1(ev)h
+-1(er.)h
+19(The)h
+12(facilit)h
+-1(y)h
+10(to)h
+1042 2940(15)s
+16 @eop
+17 @bop0
+/cmr8.300 127 @newfont
+cmr8.300 sf
+[<FFC0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00
+001C00001C00001C00201C00201C00201C00601C00601C00401C00C01C03C0FFFFC0>
+24 23 -1 22 22] 76 dc
+[<183C3C1800000000007C1C1C1C1C1C1C1C1C1C1C1C1CFF>
+8 23 0 22 10] 105 dc
+[<080008000800180018003800FF80380038003800380038003800380038403840384038
+401C800F00>
+16 20 -1 19 14] 116 dc
+[<0FC0186030307038E018FFF8E000E000E000600070083010183007C0>
+16 14 -1 13 16] 101 dc
+[<FCF01D381E381C101C001C001C001C001C001C001C001C001C00FF80>
+16 14 0 13 14] 114 dc
+[<1FC0386038301038003803F81E3830387038E039E039E07970FF1F1E>
+16 14 -1 13 18] 97 dc
+[<FCF8001F0E001C03001C03801C01801C01C01C01C01C01C01C01C01C01801C03801C07
+001F0E001CF8001C00001C00001C00001C00001C0000FF8000>
+24 20 0 13 20] 112 dc
+[<07C018303018600C600CE00EE00EE00EE00EE00E701C3018183007C0>
+16 14 -1 13 18] 111 dc
+[<0F9E18E33060707070707070306018C02F80200060003FE03FF83FFC600EC006C006C0
+06600C38380FE0>
+16 21 -1 13 18] 103 dc
+[<FC7C1F001D8E63801E0781C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701
+C01C0701C01C0701C01C0701C01C0701C0FF9FE7F8>
+32 14 0 13 30] 109 dc
+[<FC7C001D8E001E07001C07001C07001C07001C07001C07001C07001C07001C07001C07
+001C0700FF9FE0>
+24 14 0 13 20] 110 dc
+[<FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
+001C001C001C001C00FF80>
+16 23 0 22 10] 108 dc
+[<1F4060C0C040C040E000FF007F801FC001E080608060C060E0C09F00>
+16 14 -1 13 14] 115 dc
+[<07F01838303870106000E000E000E000E000600070083008183007C0>
+16 14 -1 13 16] 99 dc
+[<FC3F001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0F
+000E170003E7E0>
+24 14 0 13 20] 117 dc
+[<007E00000E00000E00000E00000E00000E00000E00000E00000E0007CE001C3E00300E
+00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E00182E0007CFC0>
+24 23 -1 22 20] 100 dc
+[<FC00001C00001C00001C00001C00001C00001C00001C00001C00001CF8001F06001C03
+001C03801C01801C01C01C01C01C01C01C01C01C01801C03801C03001B0E0010F800>
+24 23 0 22 20] 98 dc
+[<FFF0C0E080E081C08380878007000E001E081C08381870107030FFF0>
+16 14 -1 13 16] 122 dc
+[<03E006700E701C201C001C001C001C001C00FF801C001C001C001C001C001C001C001C
+001C001C001C001C00FF80>
+16 23 0 22 11] 102 dc
+[<FCFE7C3838383838101C3C201C3C201C4C200E4E400E4E400E86400787800787800703
+80030300030300>
+24 14 -1 13 25] 119 dc
+[<FE1F3C0E3C0C1C081C080E100E100720072003C003C003C00180018001000100E200E2
+00A4007800>
+16 20 -1 13 19] 121 dc
+[<60F0F060>
+8 4 -3 3 10] 46 dc
+[<FF83FE1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701FFF
+F01C00701C00701C00701C00701C00701C00701C00701C00701C00701C0070FF83FE>
+24 23 -1 22 26] 72 dc
+[<FE1F3C0E3C0C1C081C080E100E100720072003C003C003C001800180>
+16 14 -1 13 19] 118 dc
+[<60F0F070101020204040>
+8 10 -3 3 10] 44 dc
+[<00FC000782000E07001C07001C02001C00001C00001C00001C0000FFFF001C07001C07
+001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF1FE0>
+24 23 0 22 20] 12 dc
+[<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C7C001D8E001E07
+001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF9FE0>
+24 23 0 22 20] 104 dc
+cmtt10.300 sf
+[<01C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF8001C0
+0001C00001C00001C00001C00001C00001C00001C000>
+24 19 -2 21 22] 43 dc
+[<FFFF80FFFF80FFFF80>
+24 3 -2 13 22] 45 dc
+[<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0>
+8 32 -9 28 22] 124 dc
+[<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001FFC
+001FFC001FFC001C1C001C1C001C00001C00001C00001C00001C00001C0000FF8000FFC0
+00FF8000>
+24 25 -1 24 22] 70 dc
+[<001F00007F8000FF8001E78001C30001C00001C0007FFF00FFFF00FFFF0001C00001C0
+0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0003FFE007FFF
+003FFE00>
+24 25 -1 24 22] 102 dc
+[<7FFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0E0E000E00000E00000E00000E00000E0
+0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00007FC000FFE
+0007FC00>
+24 25 -1 24 22] 84 dc
+[<00E001E007C007000F001E003C0038007800700070007000F000E000E000E000E000E0
+00E000E000F000700070007000780038003C001E000F00070007C001E000E0>
+16 33 -6 28 22] 40 dc
+[<E000F0007C001C001E000F000780038003C001C001C001C001E000E000E000E000E000
+E000E000E001E001C001C001C003C0038007800F001E001C007C00F000E000>
+16 33 -4 28 22] 41 dc
+[<FFC000FFC000FFC0001C00001C00001C00001C00001C00001C00001C00001C00001C00
+001C00001C00001C00001C00001C00001C00401C00E01C00E01C00E01C00E0FFFFE0FFFF
+E0FFFFE0>
+24 25 -1 24 22] 76 dc
+[<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F
+801FFF001FFE001FF8001C00001C00001C00001C00001C00001C00001C00007F0000FF80
+007F0000>
+24 25 -1 24 22] 80 dc
+[<7FF800FFFE007FFF001C0F001C07801C03C01C01C01C01C01C01E01C00E01C00E01C00
+E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C03C01C07801C0F807FFF00FFFE
+007FF800>
+24 25 0 24 22] 68 dc
+[<01F18007FF800FFF801F0F803C0780780780780380700380F00000E00000E00000E000
+00E00000E00000E00000E00000F000007003807803807803803C07801F0F000FFE0007FC
+0001F000>
+24 25 -2 24 22] 67 dc
+[<7F1FC07F3FC07F1FC00F1C00073C0003B80003F00001F00000E00001E00001F00003B8
+00073C00071C000E0E007F1FC0FF3FE07F1FC0>
+24 18 -1 17 22] 120 dc
+17 @bop1
+cmbx10.300 sf
+465 2117(Figure)s
+15(1)h
+cmr10.300 sf
+641 2117(:)s
+17(T)h
+-3(raditional)h
+12(arc)h
+-1(hitecture)h
+16(of)h
+13(literate)h
+14(programm)h
+-1(ing)h
+11(to)h
+1(ols.)h
+1042 2940(16)s
+cmr8.300 sf
+343 1876(Literate)s
+14(programm)h
+-1(ing)h
+13(to)h
+1(ols)h
+15(could)h
+15(b)h
+1(e)h
+15(organized)h
+13(in)h
+16(a)h
+16(n)h
+-1(um)h
+-1(b)h
+1(er)h
+14(of)h
+15(w)h
+-1(a)h
+-1(ys.)h
+28(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+17(to)h
+15(\014t)h
+16(in)h
+15(with)h
+281 1926(curren)s
+-1(t)h
+9(\014le)h
+10(and)h
+11(comma)h
+-1(nd)h
+9(line)h
+10(based)h
+10(en)h
+-1(viron)h
+-1(men)h
+-2(ts,)h
+9(most)h
+10(to)h
+1(ols)h
+10(conform)h
+9(to)h
+10(the)h
+11(traditio)h
+-1(nal)h
+9(arc)h
+-1(hitec)h
+-1(tur)h
+-1(e)h
+281 1976(sho)s
+-1(wn)h
+8(here)h
+8(in)h
+9(whic)h
+-1(h)h
+9(the)h
+8(user)h
+8(feeds)h
+8(in)h
+9(a)h
+8(\014le)h
+9(con)h
+-1(taini)h
+-1(ng)h
+7(a)h
+9(literate)h
+7(program)h
+-1(,)h
+8(and)h
+8(the)h
+8(literate)h
+7(programm)h
+-1(in)h
+-1(g)h
+281 2026(utilit)s
+-1(y)h
+10(generate)h
+-1(s)h
+10(program)h
+9(\014les)h
+11(and)h
+10(a)h
+12(do)h
+1(cume)h
+-1(n)h
+-1(ta)h
+-1(tion)h
+9(\014le.)h
+cmtt10.300 sf
+526 789(+-----------)s
+-1(-----)h
+-1(-----)h
+-1(----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-+)h
+526 838(|)s
+21(File)h
+21(containing)h
+20(the)h
+21(program)h
+21(description)h
+19(|)h
+526 888(|)s
+21(peppered)h
+21(with)h
+21(scraps)h
+20(of)h
+21(program)h
+21(code.)h
+64(|)h
+526 938(|)s
+21(This)h
+21(is)h
+22(what)h
+21(the)h
+21(programmer)h
+20(works)h
+20(on.)h
+65(|)h
+526 988(|)s
+218(\(e.g.)h
+20(sloth.web\))h
+325(|)h
+526 1038(+-----------)s
+-1(-----)h
+-1(-----)h
+-1(----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-+)h
+962 1087(|)s
+962 1137(v)s
+657 1187(o----------)s
+-1(-----)h
+-1(----)h
+-1(-----)h
+-1(---o)h
+657 1237(|)s
+21(Literate)h
+20(Programming)h
+20(Tool)h
+21(|)h
+657 1287(o----------)s
+-1(-----)h
+-1(----)h
+-1(-----)h
+-1(---o)h
+962 1336(|)s
+526 1386(+-----------)s
+-1(-----)h
+-1(---+-)h
+-1(----)h
+-1(-----)h
+-1(-----)h
+-1(----+)h
+526 1436(|)s
+850(|)h
+526 1486(v)s
+850(v)h
+330 1536(+----------)s
+-1(-----)h
+-1(---+)h
+237(+-------------)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(----)h
+-1(--+)h
+330 1586(|)s
+65(Traditional)h
+85(|)h
+239(|)h
+22(Documentatio)h
+-1(n)h
+20(file)h
+21(suitable)h
+20(for)h
+43(|)h
+330 1635(|)s
+21(Computer)h
+20(Program)h
+21(|)h
+239(|)h
+22(input)h
+21(into)h
+21(a)h
+21(typesetting)h
+20(program)h
+20(|)h
+330 1685(|)s
+43(\(e.g.)h
+21(sloth.c\))h
+42(|)h
+239(|)h
+174(\(e.g.)h
+21(sloth.tex\))h
+216(|)h
+330 1735(+----------)s
+-1(-----)h
+-1(---+)h
+237(+-------------)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(----)h
+-1(--+)h
+17 @eop
+18 @bop0
+cmsy10.300 sf
+[<020000000004000000000400000000080000000010000000002000000000FFFFFFFFF0
+FFFFFFFFF0200000000010000000000800000000040000000004000000000200000000>
+40 14 -3 16 42] 32 dc
+cmtt10.300 sf
+[<000180000780001F80003E0000F80001F00007C0000F80003E0000FC0000F00000FC00
+003E00000F800007C00001F00000F800003E00001F80000780000180>
+24 21 -2 22 22] 60 dc
+[<70F8F8F870000000000000000070F8F8F870>
+8 18 -8 17 22] 58 dc
+[<7FFF00FFFF80FFFF80000000000000000000000000000000FFFF80FFFF807FFF00>
+24 11 -2 17 22] 61 dc
+[<387C7C7C380000000000000000387C7C7C3C1C3C38F8F060>
+8 24 -7 17 22] 59 dc
+cmti10.300 sf
+[<3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701
+C01C0701C01C0701C01C070380380E0388380E0388380E0708380E0710701C0320300C01
+C0>
+32 18 -4 17 34] 109 dc
+[<1E01832703874703874703838707018707010E07010E07011C0E021C0E021C0E021C0E
+04180C04181C04181C081C1C100C263007C3C0>
+24 18 -4 17 28] 119 dc
+[<3C3C002646004687004707008E07008E07000E07000E07001C0E001C0E001C0E001C1C
+00381C40381C40383840383880701900300E00>
+24 18 -4 17 23] 110 dc
+[<0003C0000670000C70001C60001C00001C0000380000380000380000380000380003FF
+8000700000700000700000700000700000E00000E00000E00000E00000E00001C00001C0
+0001C00001C00001C000038000038000038000030000030000070000C60000E60000CC00
+00780000>
+24 37 1 28 13] 102 dc
+[<001F80000380000380000700000700000700000700000E00000E00000E00000E0003DC
+00063C000C3C00181C00383800303800703800703800E07000E07000E07000E07000E0E2
+00C0E200C0E20061E4006264003C3800>
+24 29 -5 28 21] 100 dc
+[<00F3018F030F06070E0E0C0E1C0E1C0E381C381C381C381C383830383038187818F00F
+700070007000E000E0C0C0E1C0C3007E00>
+16 26 -3 17 19] 103 dc
+cmbx10.300 sf
+[<001FE02000FFF8E003F80FE007C003E00F8001E01F0000E03E0000E03E0000607E0000
+607C000060FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0000
+007C0000607E0000603E0000603E0000C01F0000C00F80018007C0030003F80E0000FFFC
+00001FE000>
+32 28 -3 27 34] 67 dc
+cmr10.300 sf
+[<0006000000060000000600000006000000060000000600000006000000060000000600
+0000060000000600000006000000060000FFFFFFE0FFFFFFE00006000000060000000600
+000006000000060000000600000006000000060000000600000006000000060000000600
+0000060000>
+32 28 -2 23 32] 43 dc
+[<60F0F0600000000000000000000060F0F0701010101020204080>
+8 26 -4 17 12] 59 dc
+18 @bop1
+cmmi10.300 sf
+488 1098(<)s
+cmsy10.300 sf
+531 1147( )s
+cmtt10.300 sf
+264 745(while)s
+21(sloth<walrus)h
+19(loop)h
+330 795(sloth:=slot)s
+-1(h+1;)h
+264 845(end)s
+22(loop)h
+cmti10.300 sf
+1612 42(macr)s
+-2(os)h
+404 1098(sloth)s
+32(walrus)h
+447 1147(sloth)s
+42(sloth)h
+222 2029(its)s
+18(c)h
+-2(ap)h
+-2(acity)h
+18(to)h
+18(tr)h
+-2(ansform)h
+17(the)h
+18(state)h
+18(of)h
+18(mind)h
+18(of)h
+18(the)h
+18(pr)h
+-2(o)h
+-2(gr)h
+-2(ammer)h
+cmbx10.300 sf
+295 170(T)s
+-1(yp)h
+1(eset)h
+14(co)h
+1(de)h
+14(and)h
+14(do)h
+1(cumen)h
+-1(tati)h
+-1(on)h
+-1(:)h
+281 1098(while)s
+258(lo)h
+1(op)h
+281 1197(end)s
+13(lo)h
+1(op)h
+295 1702(Cross)s
+17(referencin)h
+-1(g:)h
+1539 2129([Roso)s
+-1(vsky90])h
+275 2785([Kn)s
+-1(uth83])h
+86([Kn)h
+-1(uth84])h
+681([Smith9)h
+-1(1])h
+cmr10.300 sf
+295 42(do)s
+15(this)h
+15(is)h
+15(implem)h
+-1(en)h
+-1(ted)h
+14(in)h
+15(literate)h
+15(programm)h
+-1(ing)h
+13(to)h
+1(ols)h
+14(b)h
+-1(y)h
+15(pro)h
+-1(viding)h
+14(text)h
+159(that)h
+295 91(can)s
+14(b)h
+1(e)h
+15(de\014ned)h
+15(and)h
+14(used)h
+14(in)h
+14(an)h
+-1(y)h
+13(order.)h
+1018 170(T)s
+-3(raditionall)h
+-1(y)h
+11(program)h
+11(listings)h
+12(are)h
+13(dull)h
+12(a\013airs)h
+295 220(consisting)s
+14(of)h
+14(pages)h
+15(of)h
+13(fan-form)h
+12(pap)h
+1(er)h
+15(imprin)h
+-1(ted)h
+12(with)h
+14(meandering)h
+13(coastlines)h
+15(of)h
+14(struc-)h
+295 270(tured)s
+18(text)h
+17(in)h
+17(a)h
+16(b)h
+1(oring)h
+16(fon)h
+-1(t.)h
+26(In)h
+17(con)h
+-1(trast,)h
+18(literate)h
+17(programm)h
+-1(i)h
+-1(ng)h
+15(systems)h
+17(are)h
+17(capable)h
+295 320(of)s
+14(pro)h
+1(ducing)h
+14(do)h
+1(cumen)h
+-1(tation)h
+12(that)h
+14(is)h
+14(sup)h
+1(erior)h
+15(in)h
+13(t)h
+-1(w)h
+-1(o)h
+14(w)h
+-1(a)h
+-1(ys.)h
+18(First,)h
+13(b)h
+1(ecause)h
+16(most)h
+13(of)h
+13(the)h
+295 369(do)s
+1(cumen)h
+-1(tation)h
+15(text)h
+16(is)h
+16(fed)h
+16(straigh)h
+-1(t)h
+15(to)h
+16(the)h
+16(t)h
+-1(yp)h
+1(esette)h
+1(r,)h
+18(the)h
+16(programm)h
+-1(er)h
+15(can)h
+16(mak)h
+-1(e)h
+14(use)h
+295 419(of)s
+18(all)h
+17(the)h
+19(p)h
+1(o)h
+-1(w)h
+-1(er)h
+18(of)h
+18(the)h
+18(underlying)h
+18(t)h
+-1(yp)h
+1(esetter)h
+1(,)h
+20(resulting)h
+19(in)h
+17(do)h
+1(cumen)h
+-1(tation)h
+17(that)h
+19(has)h
+295 469(the)s
+14(same)h
+12(presen)h
+-1(tation)h
+13(as)h
+13(an)h
+13(ordinary)h
+12(t)h
+-1(yp)h
+1(eset)h
+14(do)h
+1(cumen)h
+-1(t.)h
+17(Second,)h
+14(b)h
+1(ecause)h
+14(the)h
+13(literate)h
+295 519(programm)s
+-1(ing)h
+13(utilit)h
+-1(y)h
+15(sees)h
+17(all)h
+15(the)h
+16(co)h
+1(de,)h
+17(it)h
+16(can)h
+16(use)h
+16(its)h
+16(kno)h
+-1(wledge)h
+16(of)h
+15(the)h
+16(programm)h
+-1(ing)h
+295 569(language)s
+12(and)h
+12(the)h
+13(features)h
+14(of)h
+11(the)h
+13(t)h
+-1(yp)h
+1(esetting)h
+14(language)h
+11(to)h
+13(t)h
+-1(yp)h
+1(eset)h
+14(the)h
+13(program)h
+10(co)h
+1(de)h
+14(as)h
+295 618(if)s
+13(it)h
+14(w)h
+-1(ere)h
+15(app)h
+1(earing)h
+13(in)h
+14(a)h
+13(tec)h
+-1(hnical)h
+14(journal.)h
+18(It)h
+14(is)h
+13(the)h
+15(di\013erence)h
+16(b)h
+1(et)h
+-1(w)h
+-1(een:)h
+295 971(and)s
+657 1147(+1;)s
+295 1324(Unfortunately)s
+-3(,)h
+18(while)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(pro)h
+-1(vides)h
+18(full)h
+17(t)h
+-1(yp)h
+1(esetting)h
+19(of)h
+17(the)h
+19(do)h
+1(cumen)h
+-1(tation,)h
+17(it)h
+295 1374(t)s
+-1(yp)h
+1(esets)h
+20(all)h
+17(of)h
+18(its)h
+18(co)h
+1(de)h
+19(in)h
+17(the)h
+19(st)h
+-1(yle)h
+18(of)h
+18(the)h
+19(\014rst)h
+18(of)h
+18(these)h
+19(t)h
+-1(w)h
+-1(o)h
+18(examples.)h
+30(T)h
+-3(o)h
+17(t)h
+-1(yp)h
+1(eset)h
+295 1423(in)s
+15(the)h
+15(st)h
+-1(yle)h
+15(of)h
+14(the)h
+15(second)h
+16(requires)h
+16(kno)h
+-1(wledge)h
+14(of)h
+15(the)h
+15(programm)h
+-1(i)h
+-1(ng)h
+13(language,)h
+14(and)h
+14(the)h
+295 1473(curren)s
+-1(t)h
+13(v)h
+-1(ersion)h
+10(of)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+10(is)h
+10(programm)h
+-1(ing)h
+8(language)h
+10(indep)h
+1(enden)h
+-1(t.)h
+19(A)h
+-1(t)h
+10(a)h
+11(later)h
+11(stage,)h
+295 1523(it)s
+12(is)h
+12(p)h
+1(ossible)h
+13(that)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(will)h
+11(b)h
+1(e)h
+13(mo)h
+1(di\014ed)h
+11(to)h
+12(read)h
+13(in)h
+12(a)h
+12(\014le)h
+12(con)h
+-1(taining)h
+12(inform)h
+-1(ation)h
+295 1573(ab)s
+1(out)h
+15(the)h
+15(target)h
+16(programm)h
+-1(i)h
+-1(ng)h
+13(language)h
+14(to)h
+14(b)h
+1(e)h
+16(used)h
+15(to)h
+15(assist)h
+15(in)h
+15(t)h
+-1(yp)h
+1(esetting)h
+15(the)h
+16(co)h
+1(de)h
+295 1623(prop)s
+1(erly)h
+-3(.)h
+693 1702(Because)s
+17(the)h
+15(literate)h
+16(to)h
+1(ol)h
+14(sees)h
+16(all)h
+14(the)h
+16(co)h
+1(de)h
+16(and)h
+14(do)h
+1(cumen)h
+-1(tation,)h
+295 1751(it)s
+19(is)h
+19(able)h
+20(to)h
+19(generate)h
+20(extensiv)h
+-1(e)h
+21(cross)h
+20(referenc)h
+1(ing)h
+20(informatio)h
+-1(n)h
+18(in)h
+19(the)h
+20(t)h
+-1(yp)h
+1(eset)h
+20(do)h
+1(cu-)h
+295 1801(men)s
+-1(tation.)h
+28(This)h
+18(mak)h
+-1(es)h
+16(the)h
+19(prin)h
+-1(ted)h
+18(program)h
+16(do)h
+1(cumen)h
+-1(t)h
+17(more)h
+17(easy)h
+18(to)h
+18(na)h
+-1(vigate)h
+17(and)h
+295 1851(partially)s
+17(comp)h
+1(ensates)h
+18(for)h
+18(the)h
+18(lac)h
+-1(k)h
+18(of)h
+17(an)h
+18(automati)h
+-1(c)h
+17(searc)h
+-1(hing)h
+18(facilit)h
+-1(y)h
+16(when)h
+19(reading)h
+295 1901(prin)s
+-1(ted)h
+15(do)h
+1(cumen)h
+-1(tation.)h
+177 1980(In)s
+13(the)h
+14(end,)h
+13(the)h
+13(details)h
+13(don't)h
+13(matter.)h
+17(The)h
+13(most)h
+12(signi\014can)h
+-1(t)h
+12(b)h
+1(ene\014t)h
+14(that)h
+13(literate)h
+14(programm)h
+-1(i)h
+-1(ng)h
+11(o\013ers)h
+177 2029(is)s
+1165(.)h
+27(It)h
+18(is)h
+17(no)h
+-1(w)h
+17(legend)h
+17(that)h
+18(the)h
+17(act)h
+177 2079(of)s
+14(explaining)h
+14(something)h
+14(can)h
+15(transform)h
+14(one's)h
+15(understanding)h
+15(of)h
+14(it.)h
+21(This)h
+15(is)h
+15(one)h
+15(of)h
+14(the)h
+16(justi\014cations)h
+177 2129(b)s
+1(ehind)h
+19(the)h
+20(p)h
+1(o)h
+-1(w)h
+-1(erful)h
+18(com)h
+-1(binatio)h
+-1(n)h
+17(of)h
+18(researc)h
+-1(h)h
+21(and)h
+18(teac)h
+-1(hing)h
+19(in)h
+18(univ)h
+-1(ersities)h
+270(.)h
+33(Simi-)h
+177 2179(larly)s
+-3(,)h
+12(b)h
+-1(y)h
+13(constan)h
+-1(tly)h
+14(explaining)h
+12(the)h
+14(unfolding)h
+12(program)h
+12(co)h
+1(de)h
+15(in)h
+13(English)h
+13(to)h
+14(an)h
+13(imagi)h
+-1(nary)h
+12(reader,)h
+14(the)h
+177 2229(programm)s
+-1(er)h
+13(transforms)h
+13(his)h
+14(p)h
+1(erception)h
+15(of)h
+13(the)h
+15(co)h
+1(de,)h
+14(la)h
+-1(ying)h
+12(it)h
+14(op)h
+1(en,)h
+13(prone,)h
+14(to)h
+14(the)h
+15(critical)h
+13(ey)h
+-1(e.)h
+177 2307(The)s
+12(result)h
+13(of)h
+11(this)h
+12(exp)h
+1(osure)h
+13(is)h
+11(a)h
+12(higher)h
+11(qualit)h
+-1(y)h
+11(of)h
+11(programm)h
+-1(i)h
+-1(ng.)h
+15(When)h
+12(exp)h
+1(osed)h
+13(to)h
+11(the)h
+13(harsh)h
+12(ligh)h
+-1(t)h
+10(of)h
+177 2357(the)s
+12(literate)h
+12(ey)h
+-1(e,)h
+12(bugs)h
+12(cra)h
+-1(wl)h
+12(out,)h
+11(sp)h
+1(ecial)h
+12(cases)h
+13(v)h
+-2(anish,)h
+11(and)h
+12(slopp)h
+-1(y)h
+11(co)h
+1(de)h
+12(ev)h
+-2(ap)h
+1(orates.)h
+18(As)h
+12(a)h
+12(rule)h
+12(literate)h
+177 2407(programs)s
+18(tak)h
+-1(e)h
+20(longer)h
+19(to)h
+19(write)h
+19(than)h
+20(ordinary)h
+19(programs,)h
+19(but)h
+19(the)h
+20(total)h
+19(dev)h
+-1(elopmen)h
+-1(t)h
+18(time)h
+18(is)h
+19(the)h
+177 2457(same)s
+13(or)h
+14(less)h
+14(b)h
+1(ecause)h
+15(the)h
+14(time)h
+13(tak)h
+-1(en)h
+13(to)h
+14(write)h
+14(and)h
+13(do)h
+1(cumen)h
+-1(t)h
+14(the)h
+14(program)h
+12(carefully)h
+13(is)h
+14(comp)h
+1(ensated)h
+177 2507(for)s
+16(b)h
+-1(y)h
+16(a)h
+16(reduced)h
+19(debugging)h
+15(and)h
+17(mai)h
+-1(n)h
+-1(tenance)h
+16(time.)h
+24(Th)h
+-1(us)h
+17(literate)h
+17(programm)h
+-1(i)h
+-1(ng)h
+14(do)h
+1(es)h
+17(not)h
+17(merely)h
+177 2557(assist)s
+13(in)h
+12(the)h
+12(preparation)h
+12(of)h
+12(do)h
+1(cumen)h
+-1(tation,)h
+11(but)h
+12(also)h
+12(mak)h
+-1(es)h
+11(signi\014can)h
+-1(t)h
+11(con)h
+-1(tributes)h
+14(to)h
+12(the)h
+12(pro)h
+1(cess)h
+14(of)h
+177 2606(programm)s
+-1(ing)h
+12(itself.)h
+18(In)h
+14(practice)h
+15(this)h
+14(has)h
+14(turned)h
+15(out)h
+14(to)h
+14(b)h
+1(e)h
+14(a)h
+14(con)h
+-1(tribution)h
+14(far)h
+13(more)h
+14(imp)h
+1(ortan)h
+-1(t)h
+12(than)h
+177 2656(the)s
+15(mere)h
+13(capacit)h
+-1(y)h
+14(to)h
+14(pro)h
+1(duce)h
+15(t)h
+-1(yp)h
+1(eset)h
+15(do)h
+1(cumen)h
+-1(tation.)h
+177 2735(F)s
+-3(or)h
+16(more)h
+15(informati)h
+-1(on)h
+14(on)h
+16(literate)h
+17(programm)h
+-1(i)h
+-1(ng,)h
+14(the)h
+17(reader)h
+18(is)h
+16(directed)h
+17(to)h
+16(Kn)h
+-1(uth's)h
+17(early)h
+16(founding)h
+177 2785(w)s
+-1(ork)h
+229(and)h
+220(.)h
+16(F)h
+-3(or)h
+10(more)h
+9(recen)h
+-1(t)h
+12(informatio)h
+-1(n)h
+9(refer)h
+11(to)h
+211(,)h
+9(whic)h
+-1(h)h
+11(pro)h
+-1(vides)h
+177 2835(a)s
+14(comprehensiv)h
+-1(e)h
+14(bibliograph)h
+-1(y)h
+12(up)h
+14(to)h
+13(1990.)h
+1042 2940(17)s
+18 @eop
+19 @bop0
+cmbx10.432 sf
+[<00FF800003FFF0000FFFFC003F03FF007C00FF807C007FC0FE007FC0FF003FE0FF003F
+E0FF003FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F8000007F
+800000FF000001FE000001FC000003F0000007E000000FC000001F0000003E0000007C00
+E0007800E000F000E001E001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFF
+C0FFFFFF80FFFFFF80FFFFFF80>
+32 39 -3 38 34] 50 dc
+[<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC003FC003FC000FE003FC0003E003FC0001E0
+03FC0001E003FC0000E003FC0000E003FC0000E003FC0000F003FC03807003FC03807003
+FC03807003FC03800003FC07800003FC07800003FC1F800003FFFF800003FFFF800003FF
+FF800003FC1F800003FC07800003FC07800003FC03800003FC03800003FC03800003FC03
+800003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
+0003FC00000003FC000000FFFFFC0000FFFFFC0000FFFFFC0000>
+40 41 -3 40 43] 70 dc
+[<FFE03FF800FFE03FF800FFE03FF8000FE003F8000FE003F8000FE003F8000FE003F800
+0FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
+E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE007F8000FE0
+07F8000FE00FF80007E01FF80003F03BFF8001FFF3FF80003FC3FF80>
+40 27 -3 26 38] 117 dc
+[<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
+E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
+E00FE00FE00FE0FFFEFFFEFFFE>
+16 42 -3 41 20] 108 dc
+[<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE00000000FE0000000
+0FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
+E00000000FE1FE00000FE7FF80000FFE07E0000FF803F8000FF001FC000FE000FE000FE0
+00FE000FE0007F000FE0007F000FE0007F800FE0007F800FE0007F800FE0007F800FE000
+7F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F000FE000FF000FE000FE
+000FF000FE000FF001FC000FF803F8000F9E07E0000F0FFF80000E01FC0000>
+40 42 -2 41 38] 98 dc
+cmr8.300 sf
+[<FFFFE01C00E01C00601C00201C00101C00101C00101C04001C04001C04001C0C001FFC
+001C0C001C04001C04001C04001C00001C00001C00001C00001C00001C0000FFC000>
+24 23 -1 22 23] 70 dc
+[<FF07FC3F803C01E00E001C00E004001C00E004001C017004000E017008000E01700800
+0E023808000702381000070238100007041C100003841C200003841C200003880E200001
+C80E400001C80E400001D80F400000F007800000F007800000F007800000600300000060
+0300000060030000>
+40 23 -1 22 36] 87 dc
+cmtt10.300 sf
+[<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01
+C01C01C01C01C01C01C01C01C01C01C01C01C01C01C00E03800E038007070007FF0003FE
+0000F800>
+24 25 0 24 22] 85 dc
+[<7E1FC0FF3FE07F1FC01D07001D87001D87001D87001DC7001DC7001CC7001CC7001CE7
+001CE7001CE7001C67001C67001C77001C77001C37001C37001C37001C17007F1F00FF9F
+007F0F00>
+24 25 -1 24 22] 78 dc
+[<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C001C1C001FFC
+001FFC001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00E07FFFE0FFFF
+E07FFFE0>
+24 25 -1 24 22] 69 dc
+[<FC07E0FE0FE0FC07E07001C07001C07001C030018038038038038038038038E38039F3
+8039F38039B38019B30019B30019B30019B30019B30019B3001913001B1B000F1E000F1E
+000E0E00>
+24 25 -1 24 22] 87 dc
+[<7FF800FFFE007FFF001C0F001C07801C03801C03801C03801C07801C07001FFF001FFE
+001FFE001C1F001C03801C03C01C01C01C01C01C01C01C01C01C03C01C07807FFF80FFFF
+007FFC00>
+24 25 -1 24 22] 66 dc
+19 @bop1
+cmti10.300 sf
+1539 1730(simple)s
+cmbx10.432 sf
+177 42(1.2)s
+70(What)h
+23(is)h
+22(F)h
+-6(unnelW)h
+-6(eb?)h
+cmr8.300 sf
+343 1174(F)s
+-3(unnelW)h
+-3(eb)h
+10(follo)h
+-1(ws)h
+11(the)h
+11(traditio)h
+-1(na)h
+-1(l)h
+10(arc)h
+-1(hitect)h
+-1(ure)h
+9(of)h
+11(literate)h
+10(program)h
+-1(min)h
+-1(g)h
+10(to)h
+1(ols.)h
+cmbx10.300 sf
+910 210(input)s
+16(\014le)h
+462(pro)h
+1(duct)h
+17(\014les)h
+177 260(do)s
+1(cumen)h
+-1(tati)h
+-1(on)h
+13(\014le)h
+29(Figure)h
+14(2)h
+709 1266(Figure)s
+14(2)h
+862 1527(output)s
+12(\014les)h
+295 1730(Simpli)s
+-1(ci)h
+-1(t)h
+-1(y:)h
+295 1957(Reliabi)s
+-1(li)h
+-1(t)h
+-2(y:)h
+295 2283(Language)s
+16(and)h
+17(T)h
+-1(yp)h
+1(esetter)h
+15(Indep)h
+1(endence:)h
+1320 2332([BSI82])s
+593 2382([Kn)s
+-1(uth8)h
+-1(4])h
+295 2559(P)s
+-1(ortabil)h
+-1(i)h
+-1(t)h
+-2(y:)h
+295 2735(Con)s
+-1(troll)h
+-1(abl)h
+-1(e:)h
+cmtt10.300 sf
+828 210(.fw)s
+831 386(+-----------)s
+-1(+)h
+831 436(|)s
+22(sloth.fw)h
+41(|)h
+831 485(+-----------)s
+-1(+)h
+962 535(|)s
+962 585(v)s
+744 635(o-----------)s
+-1(----)h
+-1(----o)h
+744 685(|)s
+21(FUNNELWEB)h
+20(Program)h
+21(|)h
+744 734(o-----------)s
+-1(----)h
+-1(----o)h
+962 784(|)s
+526 834(+-----------)s
+-1(-----)h
+-1(---+-)h
+-1(----)h
+-1(-----)h
+-1(-----)h
+-1(-+)h
+526 884(|)s
+784(|)h
+526 934(v)s
+784(v)h
+221 983(+----------)s
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(----+)h
+85(+---------)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(---+)h
+221 1033(|)s
+21(Product)h
+21(File)h
+21(\(e.g.)h
+20(sloth.c\))h
+21(|)h
+87(|)h
+21(Documentation)h
+19(File)h
+21(\(sloth.tex\))h
+20(|)h
+221 1083(+----------)s
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(----+)h
+85(+---------)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(---+)h
+cmr10.300 sf
+177 160(F)s
+-3(unnelW)h
+-3(eb)h
+10(is)h
+11(a)h
+11(particular)h
+10(literate)h
+11(programm)h
+-1(ing)h
+8(system)h
+11(that)h
+11(is)h
+10(implem)h
+-1(en)h
+-1(ted)h
+10(b)h
+-1(y)h
+10(a)h
+11(single)h
+10(C)h
+11(program.)h
+177 210(F)s
+-3(unnelW)h
+-3(eb)h
+16(tak)h
+-1(es)h
+17(as)h
+16(input)h
+17(a)h
+16(single)h
+306(and)h
+16(writes)h
+17(one)h
+17(or)h
+16(more)h
+296(and)h
+16(a)h
+579 260(\()s
+175(\).)h
+884 1266(:)s
+18(Arc)h
+-1(hitecture)h
+16(of)h
+14(F)h
+-3(unnelW)h
+-3(eb.)h
+177 1378(In)s
+10(literate)h
+9(programmi)h
+-1(ng)h
+7(systems,)h
+10(it)h
+10(is)h
+9(usual)h
+9(to)h
+10(refer)h
+10(to)h
+10(the)h
+10(pro)h
+1(duct)h
+10(\014le)h
+10(as)h
+10(a)h
+9(\\program)h
+7(\014le".)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+177 1427(as)s
+19(F)h
+-3(unnelW)h
+-3(eb)h
+18(is)h
+18(a)h
+18(general)h
+19(to)h
+1(ol)h
+18(that)h
+18(can)h
+19(b)h
+1(e)h
+19(used)h
+20(to)h
+18(prepare)h
+20(all)h
+17(sorts)h
+19(of)h
+18(text)h
+19(\014les)h
+19(that)h
+19(are)h
+19(not)h
+177 1477(computer)s
+18(programs,)h
+18(the)h
+18(more)h
+18(generic)h
+19(term)h
+17(\\pro)h
+1(duct)h
+19(\014le")h
+18(w)h
+-1(as)h
+18(c)h
+-1(hosen.)h
+32(Pro)h
+1(duct)h
+20(\014les)h
+18(should)h
+18(b)h
+1(e)h
+177 1527(carefully)s
+13(distinguished)h
+13(from)h
+11(the)h
+14(term)h
+261(whic)h
+-1(h)h
+13(refers)h
+14(to)h
+13(all)h
+12(of)h
+12(the)h
+14(output)h
+13(\014les)h
+14(pro)h
+1(duced)h
+177 1577(b)s
+-1(y)h
+14(F)h
+-3(unnelW)h
+-3(eb.)h
+177 1654(F)s
+-3(unnelW)h
+-3(eb)h
+14(is)h
+13(distinguished)h
+14(b)h
+-1(y)h
+14(the)h
+14(follo)h
+-1(wing)h
+12(c)h
+-1(haracteristics:)h
+539 1730(A)s
+15(go)h
+-1(v)h
+-1(erning)h
+15(design)h
+15(goal)h
+14(of)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(is)h
+15(to)h
+15(pro)h
+-1(vide)h
+15(a)h
+145(to)h
+1(ol)h
+15(that)h
+295 1780(could)s
+17(b)h
+1(e)h
+17(easily)h
+16(learn)h
+-1(t)h
+17(and)h
+16(completely)h
+16(mastered.)h
+26(This)h
+17(man)h
+-1(ual)h
+14(is)h
+17(thic)h
+-1(k)h
+16(b)h
+1(ecause)h
+19(it)h
+16(is)h
+295 1830(comprehensiv)s
+-1(e)h
+17(and)h
+15(lingers)h
+16(on)h
+16(the)h
+17(w)h
+-1(a)h
+-1(ys)h
+16(in)h
+15(whic)h
+-1(h)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+16(can)h
+16(b)h
+1(e)h
+16(used.)h
+26(The)h
+16(to)h
+1(ol)h
+295 1880(itself)s
+14(is)h
+14(quite)h
+13(simple.)h
+549 1957(Another)s
+17(design)h
+17(goal)h
+16(is)h
+17(to)h
+16(pro)h
+-1(vide)h
+17(a)h
+16(to)h
+1(ol)h
+16(that)h
+17(will)h
+15(protect)h
+18(the)h
+18(user)h
+18(as)h
+295 2007(m)s
+-1(uc)h
+-1(h)h
+18(as)h
+19(p)h
+1(ossible)h
+19(from)h
+17(silly)h
+18(errors.)h
+34(Macro)h
+19(prepro)h
+1(ces)h
+1(sors)h
+21(are)h
+20(notorious)h
+18(for)h
+19(causing)h
+295 2056(obscure)s
+22(errors.)h
+38(Ev)h
+-1(ery)h
+21(attempt)h
+19(has)h
+20(b)h
+1(een)h
+22(made)h
+19(in)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+20(to)h
+20(k)h
+-1(eep)h
+21(the)h
+21(syn)h
+-1(tax)h
+295 2106(robust.)s
+31(F)h
+-3(or)h
+18(example,)h
+17(in)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(the)h
+19(syn)h
+-1(tax)h
+18(of)h
+17(macro)h
+17(calls)h
+18(has)h
+18(b)h
+1(een)h
+19(purp)h
+1(osely)h
+295 2156(designed)s
+21(to)h
+19(b)h
+1(e)h
+21(highly)h
+19(visible)h
+19(so)h
+20(that)h
+20(the)h
+20(reader)h
+21(is)h
+20(alw)h
+-1(a)h
+-1(ys)h
+18(a)h
+-1(w)h
+-1(are)h
+20(when)h
+20(the)h
+21(macro)h
+295 2206(facilit)s
+-1(y)h
+12(is)h
+14(b)h
+1(eing)h
+14(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+1169 2283(Unlik)s
+-1(e)h
+14(Kn)h
+-1(uth's)h
+16(original)h
+13(W)h
+-3(eb)h
+15(system)h
+295 2332(whic)s
+-1(h)h
+16(w)h
+-1(as)h
+16(sp)h
+1(eci\014c)h
+17(to)h
+16(the)h
+17(P)h
+-1(ascal)h
+16(programm)h
+-1(i)h
+-1(ng)h
+14(language)h
+168(and)h
+16(the)h
+16(T)h
+1667 2341(E)s
+1690 2332(X)s
+16(t)h
+-1(yp)h
+1(e-)h
+295 2382(setting)s
+16(language)h
+209(,)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(striv)h
+-1(es)h
+17(to)h
+15(b)h
+1(e)h
+16(language)h
+14(and)h
+15(t)h
+-1(yp)h
+1(esetter)h
+18(inde-)h
+295 2432(p)s
+1(enden)h
+-1(t.)h
+19(The)h
+14(curren)h
+-1(t)h
+14(v)h
+-1(ersion)h
+13(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(is)h
+13(completely)h
+12(language)h
+12(indep)h
+1(enden)h
+-1(t,)h
+14(but)h
+295 2482(is)s
+14(still)h
+13(somewhat)h
+13(dep)h
+1(enden)h
+-1(t)h
+16(on)h
+13(the)h
+15(T)h
+965 2491(E)s
+988 2482(X)s
+14(t)h
+-1(yp)h
+1(esetter)h
+16(language.)h
+551 2559(F)s
+-3(unnelW)h
+-3(eb)h
+10(has)h
+10(b)h
+1(een)h
+12(written)h
+11(in)h
+10(the)h
+11(C)h
+10(programm)h
+-1(ing)h
+8(language)h
+9(with)h
+10(great)h
+295 2608(emphasis)s
+14(on)h
+14(p)h
+1(ortabilit)h
+-1(y)h
+-3(.)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+14(curren)h
+-1(tly)h
+15(runs)h
+16(on)h
+14(the)h
+15(Sun,)h
+14(V)h
+-5(AX,)h
+15(IBM)h
+15(PC,)h
+14(and)h
+295 2658(Mac.)s
+583 2735(F)s
+-3(unnelW)h
+-3(eb)h
+10(is)h
+11(an)h
+10(extremely)h
+11(con)h
+-1(trollable)h
+10(to)h
+1(ol.)h
+16(T)h
+-3(o)h
+11(protect)h
+12(users')h
+12(in)h
+-1(v)h
+-1(est-)h
+295 2785(men)s
+-1(t)h
+11(in)h
+12(source)h
+13(\014les)h
+13(constructed)h
+14(in)h
+12(the)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(macro)h
+11(language,)h
+11(the)h
+12(C)h
+12(source)h
+14(co)h
+1(de)h
+295 2835(to)s
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(has)h
+15(b)h
+1(een)h
+16(released)h
+16(under)h
+16(GNU)h
+14(license.)h
+22(This)h
+14(means)h
+14(that)h
+15(it)h
+14(will)h
+14(alw)h
+-1(a)h
+-1(ys)h
+1042 2940(18)s
+19 @eop
+20 @bop0
+cmbx10.300 sf
+[<7FFFFC7FFFFC7E01F87803F87003F0E007E0E007E0C00FC0C01FC0C01F80003F00007F
+00007E0000FC0000FC0001F80003F80603F00607E0060FE0060FC00E1F800E1F801C3F00
+1C7F003C7E00FCFFFFFCFFFFFC>
+24 28 -3 27 29] 90 dc
+[<FFFFFF00FFFFFF000FC01F000FC007000FC003000FC003800FC003800FC181800FC181
+800FC181800FC180000FC380000FFF80000FFF80000FC380000FC180000FC180000FC180
+600FC180600FC000E00FC000C00FC000C00FC001C00FC001C00FC003C00FC00F80FFFFFF
+80FFFFFF80>
+32 28 -2 27 31] 69 dc
+cmbx10.432 sf
+[<007F800003FFF00007FFFC001F81FE001F00FF003F80FF003F807F803FC07F803F807F
+803F807F801F007F800000FF800000FF000000FF000001FE000003F8000007F00000FFC0
+0000FFF0000001FC000000FF0000007F8000007FC000003FC000003FE000003FE000003F
+E03C003FE07E003FE0FF003FE0FF003FE0FF003FC0FF007FC0FE007F807C00FF803F01FF
+001FFFFC0007FFF00000FF8000>
+32 39 -3 38 34] 51 dc
+[<7FFFFFFFFFC07FFFFFFFFFC07FFFFFFFFFC07F803FC03FC07E003FC007C078003FC003
+C078003FC003C070003FC001C0F0003FC001E0F0003FC001E0E0003FC000E0E0003FC000
+E0E0003FC000E0E0003FC000E0E0003FC000E000003FC0000000003FC0000000003FC000
+0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000
+0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000
+0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000
+0000003FC00000007FFFFFE000007FFFFFE000007FFFFFE000>
+48 40 -2 39 48] 84 dc
+[<FFFC0000FFFEFFFE0000FFFEFFFF0000FFFE03FF8000038003FFC000038003FFE00003
+8003BFE0000380039FF0000380038FF80003800387FC0003800387FE0003800383FE0003
+800381FF0003800380FF80038003807FC0038003807FE0038003803FF0038003801FF003
+8003800FF80380038007FC0380038003FE0380038003FF0380038001FF8380038000FF83
+800380007FC3800380003FE3800380001FF3800380001FFB800380000FFB8003800007FF
+8003800003FF8003800001FF8003800001FF8003800000FF80038000007F80038000003F
+80038000001F80038000000F80FFFE00000F80FFFE00000780FFFE00000380>
+48 41 -3 40 54] 78 dc
+[<00000E0000001E0000003E0000007E000000FE000000FE000001FE000003FE0000077E
+00000E7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E0001C07E0003807E
+0007007E000E007E000E007E001C007E0038007E0070007E00E0007E00FFFFFFF8FFFFFF
+F8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE
+00007FFFF8007FFFF8007FFFF8>
+32 39 -2 38 34] 52 dc
+[<000003800000000007C00000000007C0000000000FE0000000000FE0000000000FE000
+0000001FF0000000001FF0000000003FF8000000003FF8000000003FF80000000073FC00
+00000073FC00000000F3FE00000000E1FE00000000E1FE00000001C0FF00000001C0FF00
+000003C0FF80000003807F80000007807FC0000007003FC0000007003FC000000E003FE0
+00000E001FE000001E001FF000001C000FF000001FFFFFF000003FFFFFF800003FFFFFF8
+0000780007FC0000700003FC0000700003FC0000E00001FE0000E00001FE0001E00001FF
+0001C00000FF0001C00000FF00FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE>
+48 41 -2 40 52] 65 dc
+cmtt10.300 sf
+[<000180000380000380000700000700000E00000E00001C00001C000038000038000070
+0000700000E00000E00001C00001C0000380000380000700000700000E00000E00001C00
+001C0000380000380000700000700000E00000E00000C00000>
+24 32 -2 28 22] 47 dc
+[<00F80003FE000FFF001F0F003E0F003C0F00780600700000F00000F3F800EFFE00FFFE
+00F80F00F00780F00780E00380F00380F00380700380780780780F003C1F001FFE000FF8
+0003E000>
+24 25 -2 24 22] 54 dc
+cmti10.300 sf
+[<01FFFFC0003C01C0003800C00038008000380080003800800070008000700080007020
+800070200000E0400000E0400000E0C00000FFC00001C0800001C0800001C0800001C080
+0003810000038000000380000003800000070000000700000007000000070000000F0000
+00FFF00000>
+32 28 -3 27 27] 70 dc
+[<FF83FF0FF03C007001C038007001803800F001003800F0020038017002003801700400
+380270040038027008001C047008001C047010001C087010001C087020001C107020001C
+107040001C207040001C207080001C407180001C407100001C807200001D807200001D00
+7400001E007400001E007800001C007800001C0070000018007000001800600000100060
+0000>
+40 29 -9 27 41] 87 dc
+[<3F00070007000E000E000E000E001C001C001C001C0039C03E60383038307038703870
+387038E070E070E070E060E0E0C0C0C1C0618063003C00>
+16 29 -5 28 19] 98 dc
+[<01FFCFFE003C01E0003801C0003801C0003801C0003801C00070038000700380007003
+800070038000E0070000E0070000E0070000FFFF0001C00E0001C00E0001C00E0001C00E
+0003801C0003801C0003801C0003801C00070038000700380007003800070038000F0078
+00FFE7FF00>
+32 28 -3 27 31] 72 dc
+[<0FC00001C00001C0000380000380000380000380000700000700000700000700000E0F
+000E11000E23800E43801C83001C80001D00001E00003F800039C00038E00038E00070E2
+0070E20070E20070E400E06400603800>
+24 29 -3 28 19] 107 dc
+[<183C3C3C0404080810204080>
+8 12 -9 28 13] 39 dc
+[<01FE0007F8003E000780002E000F00002E001700002E001700002E002700004E002E00
+004E004E00004E004E00004E008E00008E011C00008E011C00008E021C00008E021C0001
+070438000107043800010708380001071038000207107000020720700002072070000207
+407000040740E000040780E000040700E0000C0700E0001C0601E000FF861FFC00>
+40 28 -3 27 37] 77 dc
+[<0000180000001800000038000000380000007800000078000000B8000001B800000138
+000002380000023C0000041C0000041C0000081C0000181C0000101C0000201C0000201C
+00007FFC0000401C0000801C0001801C0001001C0002001C0002001C0004000E000C000E
+001C001E00FF00FFC0>
+32 29 -2 28 31] 65 dc
+[<070E0019910010E38020E38041C30041C00001C00001C0000380000380000380000380
+00070200670200E70400CB04008B080070F000>
+24 18 -3 17 19] 120 dc
+[<060F0F06000000000000000000003078F060>
+8 18 -4 17 13] 58 dc
+[<1FFFFFC01C0701C0300E00C0200E0080600E0080400E0080401C0080801C0080801C00
+80001C000000380000003800000038000000380000007000000070000000700000007000
+0000E0000000E0000000E0000000E0000001C0000001C0000001C0000001C0000003C000
+007FFE0000>
+32 28 -7 27 30] 84 dc
+[<01FFE0003C0000380000380000380000380000700000700000700000700000E00000E0
+0000E00000E00001C00001C00001C00001C0000380080380080380080380100700100700
+300700600700E00E03C0FFFFC0>
+24 28 -3 27 26] 76 dc
+cmr10.300 sf
+[<FFF007FC0F8001E00780008007C0018003C0010003E0020001F0020000F0040000F804
+0000780800007C1800003C1000001E2000001F2000000F4000000FC00000078000000780
+000007800000078000000780000007800000078000000780000007800000078000000780
+00007FF800>
+32 28 0 27 31] 89 dc
+20 @bop1
+cmcsc10.300 sf
+1727 2405(a)s
+cmbx10.300 sf
+295 217(A)s
+18(Pro)h
+1(ducti)h
+-1(on)h
+15(T)h
+-4(o)h
+1(ol:)h
+592 1204([ANZE])s
+281 1450(F)s
+807 1699([Humphries91])s
+cmbx10.432 sf
+177 660(1.3)s
+70(The)h
+22(Name)h
+20(F)h
+-6(unnelW)h
+-6(eb)h
+177 1866(1.4)s
+70(A)h
+23(F)h
+-6(unnelW)h
+-6(eb)h
+22(T)h
+-6(utorial)h
+cmtt10.300 sf
+473 2509(/fwdir/user)s
+-1(man/c)h
+-1(h1.te)h
+-1(x)h
+231 2559(/fwdir/test)s
+-1(s/)h
+413(ex01.fw)h
+174(ex16.fw)h
+707 2609(hi01.fw)s
+168(hi10.fw)h
+1030 2785(fw)s
+cmti10.300 sf
+1421 493(F)s
+-3(unnelWeb)h
+12(Hacker's)h
+10(Manual)h
+1498 955(A)s
+-1(tr)h
+-2(ax)h
+12(r)h
+-2(obustus)h
+626 1649(A)s
+15(Me)h
+-2(gastar's)h
+14(Mantr)h
+-2(as:)h
+19(Things)h
+15(that)h
+15(Me)h
+-2(an)h
+16(a)h
+15(L)h
+-2(ot)h
+15(to)h
+14(Me)h
+cmr10.300 sf
+295 42(b)s
+1(e)h
+17(a)h
+-1(v)h
+-2(aila)h
+-1(ble)h
+14(to)h
+16(ev)h
+-1(ery)h
+-1(one.)h
+24(F)h
+-3(urthermore,)h
+16(license)h
+17(has)h
+15(b)h
+1(een)h
+17(gran)h
+-1(ted)h
+16(for)h
+16(the)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+295 91(User's)s
+17(Man)h
+-1(ual)h
+15(and)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(Hac)h
+-1(k)h
+-1(er's)h
+17(Man)h
+-1(ual)h
+15(to)h
+15(b)h
+1(e)h
+17(copied)h
+16(freely)h
+16(so)h
+16(long)h
+15(as)h
+16(they)h
+295 141(are)s
+14(not)h
+13(mo)h
+1(di\014ed.)h
+16(All)h
+12(this)h
+13(means)h
+13(that)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(is)h
+13(not)h
+13(going)h
+12(to)h
+13(disapp)h
+1(ear)h
+13(suddenly)h
+-3(.)h
+725 217(Ab)s
+1(o)h
+-1(v)h
+-1(e)h
+16(all,)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+15(has)h
+15(b)h
+1(een)h
+16(designed)h
+16(to)h
+15(b)h
+1(e)h
+16(a)h
+14(pro)h
+1(duction)h
+295 267(to)s
+1(ol)h
+12(and)h
+13(ev)h
+-1(ery)h
+13(e\013ort)h
+13(has)h
+13(b)h
+1(een)h
+14(made)h
+11(to)h
+12(ensure)h
+15(that)h
+12(it)h
+12(will)h
+11(op)h
+1(erate)h
+14(e\013ectiv)h
+-1(ely)h
+13(in)h
+13(a)h
+12(pro-)h
+295 317(fessional)s
+13(en)h
+-1(vironmen)h
+-1(t.)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+13(is)h
+13(\\op)h
+1(en")h
+13(and)h
+13(p)h
+1(ortable.)h
+18(There)h
+14(is)h
+13(a)h
+12(comprehensiv)h
+-1(e)h
+295 367(user)s
+18(man)h
+-1(ual.)h
+24(Its)h
+17(error)h
+17(messages)h
+17(are)h
+17(comprehensiv)h
+-1(e.)h
+26(It)h
+17(is)h
+16(fast.)h
+26(Finally)h
+-3(,)h
+15(it)h
+16(has)h
+17(b)h
+1(een)h
+295 417(designed)s
+15(with)h
+13(the)h
+15(exp)h
+1(erience)h
+16(of)h
+13(three)h
+15(y)h
+-1(ears)h
+15(of)h
+13(using)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(V1.)h
+177 493(F)s
+-3(or)h
+9(more)h
+9(informati)h
+-1(on)h
+8(on)h
+9(the)h
+10(history)h
+10(and)h
+9(design)h
+10(of)h
+9(F)h
+-3(unnelW)h
+-3(eb,)h
+9(see)h
+11(the)h
+525(.)h
+177 779(The)s
+16(name)h
+14(\\F)h
+-3(unnelW)h
+-3(eb")h
+14(w)h
+-1(as)h
+15(c)h
+-1(hosen)h
+17(b)h
+1(ecause)h
+17(it)h
+14(con)h
+-1(tains)h
+16(the)h
+16(name)h
+14(\\WEB",)h
+14(whic)h
+-1(h)h
+15(is)h
+15(the)h
+16(name)h
+14(of)h
+177 828(Kn)s
+-1(uth's)h
+14(system.)h
+18(It)h
+14(w)h
+-1(as)h
+14(also)h
+13(c)h
+-1(hosen)h
+15(b)h
+1(ecause)h
+16(it)h
+13(has)h
+14(a)h
+14(distinctly)h
+13(Australian)h
+14(\015a)h
+-1(v)h
+-1(our.)h
+177 905(F)s
+-3(unnel-w)h
+-1(eb)h
+17(spiders)h
+17(are)h
+17(found)h
+16(in)h
+16(Northern)h
+18(and)h
+16(Eastern)h
+18(Australia.)h
+26(They)h
+16(are)h
+17(ab)h
+1(out)h
+17(three)h
+18(to)h
+16(four)h
+177 955(cen)s
+-1(timetres)h
+12(long)h
+10(and)h
+10(are)h
+12(v)h
+-1(ery)h
+11(p)h
+1(oisonous.)h
+17(The)h
+11(Sydney)h
+11(F)h
+-3(unnel-w)h
+-1(eb)h
+11(spider)h
+12(\()h
+260(\),)h
+11(comm)h
+-1(on)h
+177 1004(in)s
+15(Sydney)h
+-3(,)h
+15(has)h
+16(caused)h
+16(the)h
+16(most)h
+14(trouble)h
+16(and)h
+15(has)h
+16(b)h
+1(een)h
+16(resp)h
+1(onsible)h
+17(for)h
+15(sev)h
+-1(eral)h
+16(deaths.)h
+23(F)h
+-3(unnel-w)h
+-1(eb)h
+177 1054(spiders)s
+16(lo)h
+-1(v)h
+-1(e)h
+15(to)h
+15(cra)h
+-1(wl)h
+14(in)h
+-1(to)h
+15(temp)h
+1(orarily)h
+13(discarded)h
+16(sho)h
+1(es)h
+16(where)h
+17(they)h
+15(later)h
+15(react)h
+16(in)h
+15(a)h
+15(hostile)h
+15(manner)h
+177 1104(to)s
+16(an)h
+16(unsusp)h
+1(ecting)h
+17(fo)h
+1(ot.)h
+24(They)h
+17(are)h
+16(kno)h
+-1(wn)h
+16(to)h
+15(hang)h
+16(on)h
+16(once)h
+16(they)h
+17(sink)h
+16(their)h
+16(fangs)h
+16(in.)h
+24(F)h
+-3(unnel-w)h
+-1(eb)h
+177 1154(spiders)s
+17(deriv)h
+-1(e)h
+16(their)h
+17(name)h
+15(from)h
+14(the)h
+16(shap)h
+1(e)h
+17(of)h
+15(their)h
+16(w)h
+-1(ebs)h
+17(whic)h
+-1(h)h
+16(are)h
+16(horizon)h
+-1(tally-ali)h
+-1(gned)h
+15(narro)h
+-1(wing)h
+177 1204(tub)s
+1(es,)h
+15(op)h
+1(en)h
+14(at)h
+14(one)h
+14(end)h
+159(.)h
+177 1280(The)s
+17(F)h
+-3(unnel-w)h
+-1(eb)h
+16(spider,)h
+16(lik)h
+-1(e)h
+16(the)h
+16(tiger)h
+17(snak)h
+-1(e)h
+16(and)h
+16(the)h
+17(white)h
+16(p)h
+1(oin)h
+-1(ter)h
+16(shark,)h
+16(is)h
+16(secretly)h
+18(regarded)h
+17(b)h
+-1(y)h
+177 1330(Australians)s
+14(as)h
+14(a)h
+14(kind)h
+13(of)h
+13(national)h
+13(treasure.)h
+325 1450(is)s
+14(for)h
+13(F)h
+-3(unnel-w)h
+-1(eb)h
+281 1500(Our)s
+14(furry-legged)h
+14(fo)h
+1(e.)h
+281 1550(He)s
+14(sleeps)h
+15(in)h
+14(y)h
+-1(our)h
+14(slipp)h
+1(er)h
+281 1599(And)s
+14(breakfasts)h
+15(on)h
+13(to)h
+1(e.)h
+281 1649(|)s
+13(One)h
+15(v)h
+-1(erse)h
+15(from)h
+999(,)h
+378 1699(b)s
+-1(y)h
+13(Dame)h
+13(Edna)h
+14(Ev)h
+-1(erage)h
+307(.)h
+177 1985(The)s
+19(remainder)h
+18(of)h
+18(this)h
+19(c)h
+-1(hapter)h
+20(consists)h
+20(of)h
+18(an)h
+18(in)h
+-1(tro)h
+1(ductory)h
+19(tutorial)h
+18(on)h
+18(F)h
+-3(unnelW)h
+-3(eb.)h
+32(Ideally)h
+18(y)h
+-1(ou)h
+177 2034(should)s
+13(ha)h
+-1(v)h
+-1(e)h
+12(a)h
+13(w)h
+-1(orking)h
+11(v)h
+-1(ersion)h
+13(of)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(in)h
+13(fron)h
+-1(t)h
+12(of)h
+12(y)h
+-1(ou)h
+12(when)h
+14(reading)h
+12(this)h
+13(c)h
+-1(hapter)h
+14(so)h
+12(that)h
+13(y)h
+-1(ou)h
+177 2084(can)s
+14(try)h
+14(out)h
+13(the)h
+14(examples)h
+13(y)h
+-1(ourself.)h
+17(There)h
+15(is)h
+13(no)h
+13(need)h
+15(to)h
+13(try)h
+14(all)h
+12(the)h
+14(examples)h
+13(so)h
+13(long)h
+13(as)h
+13(y)h
+-1(ou)h
+13(t)h
+-1(yp)h
+1(e)h
+14(in)h
+177 2134(enough)s
+16(to)h
+15(feel)h
+15(comfortable)h
+14(with)h
+15(what)h
+15(y)h
+-1(ou)h
+15(are)h
+16(reading.)h
+22(There)h
+16(is)h
+15(no)h
+15(harm)h
+14(in)h
+15(reading)h
+15(this)h
+16(c)h
+-1(hapter)h
+177 2184(o\017ine)s
+13(to)h
+1(o,)h
+14(so)h
+13(long)h
+13(as)h
+14(y)h
+-1(ou)h
+14(get)h
+14(to)h
+14(the)h
+14(computer)h
+14(within)h
+13(a)h
+13(couple)h
+14(of)h
+14(da)h
+-1(ys)h
+13(to)h
+14(reinforce)h
+15(what)h
+14(y)h
+-1(ou)h
+13(ha)h
+-1(v)h
+-1(e)h
+177 2234(read.)s
+177 2310(F)s
+-3(or)h
+13(b)h
+1(est)h
+15(e\013ect,)h
+15(y)h
+-1(ou)h
+13(should)h
+13(create)h
+15(a)h
+13(new,)h
+13(temp)h
+1(orary)h
+-3(,)h
+12(empt)h
+-1(y)h
+13(directory)h
+14(in)h
+13(whic)h
+-1(h)h
+13(to)h
+14(exp)h
+1(erimen)h
+-1(t)h
+13(with)h
+177 2360(F)s
+-3(unnelW)h
+-3(eb.)h
+21(That)h
+15(w)h
+-1(a)h
+-1(y)h
+-3(,)h
+14(it)h
+15(will)h
+13(b)h
+1(e)h
+16(more)h
+14(ob)h
+-1(vious)h
+14(when)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+14(creates)h
+17(an)h
+15(output)h
+15(\014le.)h
+22(Y)h
+-3(ou)h
+15(can)h
+177 2410(either)s
+14(t)h
+-1(yp)h
+1(e)h
+13(in)h
+12(the)h
+13(examples)h
+11(in)h
+12(this)h
+13(c)h
+-1(hapter)h
+13(directly)h
+-3(,)h
+12(or)h
+13(cop)h
+-1(y)h
+12(and)h
+13(paste)h
+13(them)h
+12(from)h
+10(the)h
+14(L)h
+4(T)h
+1769 2423(E)s
+1792 2410(X)s
+12(source)h
+177 2459(\014le)s
+11(for)h
+11(this)h
+12(c)h
+-1(hapter)h
+12(or)h
+11(the)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(test)h
+12(suite.)h
+18(The)h
+12(source)h
+12(\014le)h
+11(for)h
+11(this)h
+12(c)h
+-1(hapter)h
+12(should)h
+11(b)h
+1(e)h
+12(a)h
+-1(v)h
+-2(ailabl)h
+-1(e)h
+177 2509(in)s
+14(a)h
+14(\014le)h
+14(suc)h
+-1(h)h
+15(as)h
+495(.)h
+17(The)h
+14(test)h
+16(suite)h
+14(should)h
+14(b)h
+1(e)h
+15(a)h
+-1(v)h
+-2(ailabl)h
+-1(e)h
+13(in)h
+13(a)h
+14(directory)h
+15(suc)h
+-1(h)h
+177 2559(as)s
+302(.)h
+24(The)h
+16(test)h
+18(\014les)h
+17(called)h
+185(through)h
+185(con)h
+-1(tain)h
+16(the)h
+17(examples)h
+16(in)h
+16(this)h
+177 2609(c)s
+-1(hapter.)h
+19(The)h
+14(test)h
+14(\014les)h
+14(called)h
+179(through)h
+179(con)h
+-1(tain)h
+13(the)h
+14(examples)h
+13(in)h
+12(the)h
+14(next)h
+14(c)h
+-1(hapter.)h
+177 2685(If)s
+15(y)h
+-1(ou)h
+14(do)h
+14(not)h
+15(y)h
+-1(et)h
+15(ha)h
+-1(v)h
+-1(e)h
+15(an)h
+14(installed)h
+15(cop)h
+-1(y)h
+14(of)h
+15(F)h
+-3(unnelW)h
+-3(eb,)h
+14(refer)h
+15(to)h
+15(Chapter)h
+16(4)h
+14(for)h
+14(full)h
+14(details)h
+15(on)h
+14(ho)h
+-1(w)h
+177 2735(to)s
+15(obtain)h
+15(and)h
+15(install)h
+14(a)h
+15(cop)h
+-1(y)h
+15(of)h
+14(F)h
+-3(unnelW)h
+-3(eb.)h
+22(If)h
+15(y)h
+-1(ou)h
+14(are)h
+16(not)h
+15(sure)h
+16(if)h
+15(y)h
+-1(ou)h
+14(ha)h
+-1(v)h
+-1(e)h
+15(an)h
+15(installed)h
+15(cop)h
+-1(y)h
+-3(,)h
+15(try)h
+177 2785(in)s
+-1(v)h
+-1(oking)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+15(b)h
+-1(y)h
+14(giving)h
+14(the)h
+16(comm)h
+-1(and)h
+13(\\)h
+44(".)h
+20(If)h
+15(this)h
+15(yields)h
+14(an)h
+15(error)h
+16(suc)h
+-1(h)h
+16(as)h
+15(\\comm)h
+-1(and)h
+13(not)h
+177 2835(found")s
+13(then)h
+15(y)h
+-1(ou)h
+13(do)h
+14(not)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(a)h
+13(prop)h
+1(erly)h
+14(installed)h
+14(v)h
+-1(ersion)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb.)h
+1042 2940(19)s
+20 @eop
+21 @bop0
+/cmr7.300 127 @newfont
+/cmr6.300 127 @newfont
+/cmtt8.300 127 @newfont
+cmr7.300 sf
+[<0C001C00EC000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C
+00FFC0>
+16 19 -3 18 17] 49 dc
+cmr6.300 sf
+[<0C003C00CC000C000C000C000C000C000C000C000C000C000C000C000C00FF80>
+16 16 -2 15 15] 49 dc
+cmtt8.300 sf
+[<03E00FF81E3C3C1C78FE71FEF39EE79EE70EE70EE70EE70EE79EF39C71F878F03C001E
+0E0FFE03F8>
+16 20 -1 19 18] 64 dc
+[<FFFEFFFE7FFE0000000000007FFEFFFEFFFE>
+16 9 -1 14 18] 61 dc
+cmsy10.300 sf
+[<003C00E001C00180038003800380038003800380038003800380038003800380038003
+0007001C00F0001C00070003000380038003800380038003800380038003800380038003
+800380018001C000E0003C>
+16 41 -3 30 21] 102 dc
+[<F0001C0007000300038003800380038003800380038003800380038003800380038001
+8001C000E0003C00E001C001800380038003800380038003800380038003800380038003
+800380030007001C00F000>
+16 41 -3 30 21] 103 dc
+cmbx10.432 sf
+[<0C0003000F803F000FFFFE000FFFFE000FFFFC000FFFF8000FFFE0000FFFC0000FFE00
+000E0000000E0000000E0000000E0000000E0000000E0000000E7FC0000FFFF8000F80FE
+000E007F000C003F8000003F8000001FC000001FC000001FE000001FE018001FE07E001F
+E0FE001FE0FE001FE0FE001FE0FE001FE0FE001FC078003FC078003F803C007F001F01FE
+000FFFFC0003FFF00000FF8000>
+32 39 -3 38 34] 53 dc
+[<FFFFF01FFFFEFFFFF01FFFFEFFFFF01FFFFE03FC00007F8003FC00007F8003FC00007F
+8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F
+8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F
+8003FFFFFFFF8003FFFFFFFF8003FFFFFFFF8003FC00007F8003FC00007F8003FC00007F
+8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F
+8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F
+8003FC00007F8003FC00007F80FFFFF01FFFFEFFFFF01FFFFEFFFFF01FFFFE>
+48 41 -3 40 54] 72 dc
+[<00003FF80000003FF80000003FF800000003F800000003F800000003F800000003F800
+000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
+0003F800001FE3F80000FFFBF80003F03FF8000FE00FF8001FC007F8003F8003F8003F80
+03F8007F8003F8007F0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003
+F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8003F8003F8
+003F8007F8001FC00FF8000FE01FF80003F03FFF8000FFF3FF80003FC3FF80>
+40 42 -2 41 38] 100 dc
+[<FFFFFFF80000FFFFFFFF8000FFFFFFFFE00003FC001FF80003FC0007FC0003FC0001FE
+0003FC0000FF0003FC00007F8003FC00003FC003FC00001FC003FC00001FE003FC00001F
+E003FC00000FF003FC00000FF003FC00000FF003FC00000FF003FC00000FF803FC00000F
+F803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000F
+F803FC00000FF803FC00000FF803FC00000FF003FC00000FF003FC00000FF003FC00001F
+E003FC00001FE003FC00001FC003FC00003FC003FC00007F8003FC00007F0003FC0001FE
+0003FC0003FC0003FC001FF800FFFFFFFFE000FFFFFFFF8000FFFFFFFC0000>
+48 41 -3 40 53] 68 dc
+[<001FF80000FFFE0003F01F000FE03F801FC03F803F803F803F803F807F801F007F0000
+00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
+007F0000007F8000003F8001C03FC001C01FC003C00FE0078003F01F0000FFFC00001FE0
+00>
+32 27 -2 26 31] 99 dc
+cmbx10.300 sf
+[<03F0600F0CE01E07E03C03E07C03E07803E0F803E0F803E0F803E0F803E0F803E0F803
+E07803E07C03E03C03E01C07E00E0FE003F3E00003E00003E00003E00003E00003E00003
+E0001FFC001FFC>
+24 26 -2 17 25] 113 dc
+cmr8.300 sf
+[<7FFFF86038184038084038088038048038048038040038000038000038000038000038
+0000380000380000380000380000380000380000380000380000380000380007FFC0>
+24 23 -1 22 25] 84 dc
+[<FE3F3C181C100E20074007C0038001C002E004F008701838383CFC7F>
+16 14 -1 13 19] 120 dc
+[<07C2001C2600381E00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E
+001C2E0007CE00000E00000E00000E00000E00000E00007FC0>
+24 20 -1 13 19] 113 dc
+cmti10.300 sf
+[<01FFC0003C0000380000380000380000380000700000700000700000700000E00000E0
+0000E00000E00001C00001C00001C00001C0000380000380000380000380000700000700
+000700000700000F0000FFE000>
+24 28 -2 27 16] 73 dc
+[<183878380808101020404080>
+8 12 -3 3 13] 44 dc
+[<3078F060>
+8 4 -4 3 13] 46 dc
+[<01FFF800003C0E00003807000038038000380380003803800070078000700780007007
+8000700F0000E00E0000E01C0000E0700000FFC00001C0C00001C0600001C0700001C070
+00038070000380700003807000038070000700F0000700F0400700F0400700F0800F0078
+80FFE0790000001E00>
+32 29 -3 27 30] 82 dc
+[<0003F020001E0C60003002E000E003C001C001C0038001C0070000C00E0000801E0000
+801C0000803C0000803C000000780000007800000078000000F0000000F0000000F00000
+00F0000000F0000400F0000400F0000400F0000800700008007000100038002000180040
+000C0180000706000001F80000>
+32 30 -6 28 30] 67 dc
+[<0001800001C0000380000380000380000300000700000700000600000E00000C00001C
+0000180000180000300000300000600000400000C600018E00010E00020E00061C000C1C
+00181C003F1C0040F800803F0000380000380000700000700000700000700000E0000060
+00>
+24 36 -2 27 21] 52 dc
+[<01FC03FE001C0070003C0060002E0040002E0040002E00400047008000470080004700
+80004380800083810000838100008181000081C1000101C2000101C2000100E2000100E2
+000200E4000200740002007400020074000400380004003800040038000C0018001C0010
+00FF801000>
+32 28 -3 27 31] 78 dc
+cmtt10.300 sf
+[<1FFC003FFE007FFF00780F00F00780E00380E00380E00380E00380E00380E00380E003
+80E00380E00380E00380E00380E00380E00380E00380F00780F00780780F007FFF003FFE
+001FFC00>
+24 25 -2 24 22] 79 dc
+[<C00000F00000FC00003E00000F800007C00001F00000F800003E00001F80000780001F
+80003E0000F80001F00007C0000F80003E0000FC0000F00000C00000>
+24 21 -2 22 22] 62 dc
+[<001F80007F8001FF8001E00001C00001C00001C00001C00001C00001C00001C00001C0
+0001C00003C0007F8000FF0000FF00007F800003C00001C00001C00001C00001C00001C0
+0001C00001C00001C00001C00001E00001FF80007F80001F80>
+24 32 -2 28 22] 123 dc
+[<7F1FC0FFBFE07F1FC01C07001C07001C07001C07001C07001C07001C07001FFF001FFF
+001FFF001C07001C07001C07001C07001C07001C07001C07001C07001C07007F1FC0FFBF
+E07F1FC0>
+24 25 -1 24 22] 72 dc
+[<FC0000FF0000FFC00003C00001C00001C00001C00001C00001C00001C00001C00001C0
+0001C00001E00000FF00007F80007F8000FF0001E00001C00001C00001C00001C00001C0
+0001C00001C00001C00001C00003C000FFC000FF0000FC0000>
+24 32 -2 28 22] 125 dc
+[<FFFEFFFEFFFE0380038003800380038003800380038003800380038003800380038003
+800380038003800380FFFEFFFEFFFE>
+16 25 -3 24 22] 73 dc
+[<07E3001FFF007FFF00781F00F00F00E00700E00700E00000F000007800007F80001FF0
+0007FC0000FE00000F00000780000380000380E00380E00380F00780F80F00FFFE00FFFC
+00C7F000>
+24 25 -2 24 22] 83 dc
+[<03E30007FF001FFF003E1F003C0F00780F00780700700700F00000E00000E00000E000
+00E00000E03F80E07FC0E03F80F00700700700780F00780F003C0F003E1F001FFF0007FF
+0003E700>
+24 25 -2 24 22] 71 dc
+[<7FE000FFF8007FFC001C1E001C0F001C07001C07001C07001C07001C0F001C1E001FFC
+001FF8001FFC001C1C001C0E001C0E001C0E001C0E001C0E201C0E701C0E707F07E0FF87
+E07F03C0>
+24 25 -1 24 22] 82 dc
+[<E038F078F078F078F078F078F078F078E038E0386030>
+16 11 -4 24 22] 34 dc
+[<0387000387000387000387000387000387007FFFC0FFFFE0FFFFE0070E00070E00070E
+000E1C000E1C000E1C000E1C00FFFFE0FFFFE07FFFC01C38001C38001C38001C38001C38
+001C3800>
+24 25 -1 24 22] 35 dc
+cmr10.300 sf
+[<1FFF00F800780078007800780078007800780078007800780078007800780078007800
+780078007800787078F878F878F878F0F040E021C01F00>
+16 29 -1 27 21] 74 dc
+[<7FFFF07C01F07001E06003C06003C0400780400F80400F00401E00001E00003C00007C
+0000780000F00000F00001E00003E00003C0100780100780100F00101F00301E00203C00
+203C00607800E0F803E0FFFFE0>
+24 28 -2 27 25] 90 dc
+21 @bop1
+cmr7.300 sf
+391 2642(1)s
+cmr6.300 sf
+223 2783(1)s
+cmtt8.300 sf
+1914 2795(@=)s
+cmsy10.300 sf
+199 1869(f)s
+120(g)h
+1313 2387(g)s
+cmbx10.432 sf
+177 42(1.5)s
+70(A)h
+23(Hell)h
+-1(o)h
+21(W)h
+-6(orld)h
+24(Do)h
+2(cum)h
+-1(e)h
+-1(n)h
+-2(t)h
+cmbx10.300 sf
+1462 1420(sp)s
+1(ecial)h
+18(c)h
+-1(haracter)h
+378 1470(sp)s
+1(ecial)h
+15(sequence)h
+cmr8.300 sf
+241 2795(The)s
+11(only)h
+11(exceptio)h
+-1(n)h
+10(to)h
+11(this)h
+11(rule)h
+10(o)h
+1(ccurs)h
+11(where)h
+11(the)h
+10(user)h
+11(has)h
+11(explicitly)h
+9(c)h
+-1(hanged)h
+9(the)h
+11(sp)h
+1(ecial)h
+10(c)h
+-1(haracter)h
+9(using)h
+11(the)h
+177 2835(sp)s
+1(ecial)h
+10(sequence.)h
+cmti10.300 sf
+177 701(If)s
+18(this)h
+18(c)h
+-2(ommand)h
+19(do)h
+-2(esn)h
+-4('t)h
+18(work,)h
+18(then)h
+19(chanc)h
+-2(es)h
+19(ar)h
+-2(e)h
+18(that)h
+18(F)h
+-3(unnelWeb)h
+20(has)h
+18(not)h
+19(b)h
+-2(e)h
+-2(en)h
+18(instal)h
+2(le)h
+-2(d)h
+18(on)h
+19(your)h
+177 751(machine.)s
+20(R)h
+-2(efer)h
+14(to)h
+15(Chapter)h
+15(4)h
+15(for)h
+14(ful)h
+2(l)h
+14(details)h
+15(on)h
+15(how)h
+15(to)h
+15(obtain)h
+15(and)h
+16(instal)h
+2(l)h
+14(a)h
+15(c)h
+-2(opy)h
+15(of)h
+15(F)h
+-3(unnelWeb.)h
+1199 1988(is)s
+356(c)h
+-2(ould)h
+1807 2437(Nothing)s
+177 2487(sp)s
+-2(e)h
+-2(cial)h
+15(happ)h
+-2(ens)h
+16(unless)h
+15(the)h
+15(sp)h
+-2(e)h
+-2(cial)h
+14(char)h
+-2(acter)h
+51(app)h
+-2(e)h
+-2(ars.)h
+cmtt10.300 sf
+638 252(hello.fw)s
+177 402(@O@<hello.txt)s
+-1(@>@{H)h
+-1(ello)h
+19(World@+@})h
+1203 502(fw)s
+177 602(fw)s
+22(hello)h
+1485 821(hello.lis)s
+177 1021(hello.lis)s
+64(-)h
+21(The)h
+21(LISTING)h
+21(file.)h
+177 1071(hello.txt)s
+64(-)h
+21(The)h
+21(PRODUCT)h
+21(file.)h
+456 1170(hello.txt)s
+843(Hello)h
+21(World)h
+177 1320(@O@<hello.txt)s
+-1(@>@{H)h
+-1(ello)h
+19(World@+@})h
+1196 1420(@)s
+177 1570(@O)s
+43(@<)h
+44("hello.txt)h
+-1(")h
+42(@>)h
+43(@{)h
+43("Hello)h
+21(World")h
+42(@+)h
+43(@})h
+259 1669(@)s
+836 1719(@<)s
+94(@>)h
+682(@O)h
+177 1869(@)s
+119(@)h
+856(@+)h
+955 2038(@)s
+177 2138(Warning:)s
+20(This)h
+21(example)h
+21(is)h
+21(NOT)h
+21(legal)h
+21(FunnelWeb.)h
+177 2238(#hello.txt{He)s
+-1(llo)h
+20(World+})h
+1692 2338(#)s
+1429 2387(+)s
+973 2487(@)s
+177 2657(@)s
+cmr10.300 sf
+177 153(Just)s
+20(as)h
+19(one)h
+19(starts)h
+21(the)h
+19(pro)h
+1(cess)h
+21(of)h
+18(learning)h
+19(a)h
+19(new)h
+19(programm)h
+-1(ing)h
+17(language)h
+18(with)h
+18(a)h
+19(\\Hello)h
+18(W)h
+-3(orld")h
+177 202(program,)s
+14(when)h
+16(learning)h
+14(F)h
+-3(unnelW)h
+-3(eb,)h
+15(y)h
+-1(ou)h
+15(can)h
+16(start)h
+16(with)h
+15(a)h
+15(\\Hello)h
+14(W)h
+-3(orld")h
+14(do)h
+1(cumen)h
+-1(t!)h
+22(And)h
+16(here)h
+16(it)h
+177 252(is!)s
+20(Edit)h
+14(a)h
+14(text)h
+15(\014le)h
+15(called)h
+202(and)h
+15(put)h
+14(the)h
+15(follo)h
+-1(wing)h
+12(text)h
+15(in)h
+14(it.)h
+19(\(Note:)h
+20(The)h
+15(second)h
+15(c)h
+-1(haracter)h
+177 302(is)s
+14(the)h
+14(letter)h
+15(\\Oh",)h
+13(not)h
+14(the)h
+15(digit)h
+13(\\Zero"\).)h
+177 502(T)s
+-3(o)h
+13(\\run")h
+14(this)h
+14(\\program",)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(e)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(using)h
+13(the)h
+15(\\)h
+44(")h
+13(comm)h
+-1(and)h
+12(as)h
+14(follo)h
+-1(ws.)h
+177 821(There)s
+18(should)h
+16(b)h
+1(e)h
+17(no)h
+16(errors.)h
+28(If)h
+16(there)h
+17(are,)h
+18(ha)h
+-1(v)h
+-1(e)h
+16(a)h
+16(lo)h
+1(ok)h
+16(at)h
+16(the)h
+17(listing)h
+15(\014le)h
+215(,)h
+15(whic)h
+-1(h)h
+16(should)h
+177 871(con)s
+-1(tain)h
+12(an)h
+12(explanation)h
+11(of)h
+12(the)h
+12(error,)h
+13(and)h
+12(compare)h
+12(the)h
+13(area)h
+12(in)h
+12(the)h
+13(\014le)h
+12(where)h
+13(the)h
+13(error)h
+13(o)h
+1(ccurred)h
+14(with)h
+177 921(the)s
+15(text)h
+14(ab)h
+1(o)h
+-1(v)h
+-1(e.)h
+18(If)h
+13(there)h
+16(are)h
+14(no)h
+14(errors,)h
+14(y)h
+-1(ou)h
+14(will)h
+12(\014nd)h
+14(that)h
+14(the)h
+15(follo)h
+-1(wi)h
+-1(ng)h
+12(t)h
+-1(w)h
+-1(o)h
+13(\014les)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(b)h
+1(een)h
+15(created.)h
+177 1170(T)s
+-3(ak)h
+-1(e)h
+14(a)h
+15(lo)h
+1(ok)h
+14(at)h
+212(.)h
+19(It)h
+15(should)h
+14(con)h
+-1(tain)h
+15(a)h
+14(single)h
+15(line)h
+14(with)h
+14(the)h
+16(text)h
+256(.)h
+20(Let's)h
+15(tak)h
+-1(e)h
+177 1220(another)s
+14(lo)h
+1(ok)h
+13(at)h
+14(the)h
+15(input)h
+13(\014le.)h
+177 1420(The)s
+17(whole)h
+17(structure)h
+19(of)h
+16(the)h
+17(input)h
+17(\014le)h
+17(is)h
+16(con)h
+-1(trolled)h
+17(b)h
+-1(y)h
+16(\\)h
+22(",)h
+17(called)h
+16(the)h
+371(,)h
+16(whic)h
+-1(h)h
+177 1470(in)s
+-1(tro)h
+1(duces)h
+356(s.)h
+17(A)h
+14(scanner's-ey)h
+-1(e)h
+15(view)h
+14(of)h
+13(the)h
+15(comm)h
+-1(and)h
+12(line)h
+13(lo)h
+1(oks)h
+14(lik)h
+-1(e)h
+13(this:)h
+177 1669(The)s
+43(c)h
+-1(haracter)h
+11(con)h
+-1(trols)h
+10(ev)h
+-1(erything.)h
+17(In)h
+10(this)h
+11(\014le)h
+10(w)h
+-1(e)h
+10(ha)h
+-1(v)h
+-1(e)h
+10(six)h
+10(di\013eren)h
+-1(t)h
+11(sp)h
+1(ecial)h
+10(sequences)h
+13(that)h
+10(together)h
+177 1719(form)s
+12(a)h
+14(single)h
+13(macro)h
+13(de\014nition.)h
+18(The)h
+72(and)h
+71(delimi)h
+-1(t)h
+12(the)h
+15(name)h
+13(of)h
+13(the)h
+14(macro.)h
+17(The)h
+72(signals)h
+13(the)h
+177 1769(start)s
+13(of)h
+12(the)h
+13(macro)h
+11(de\014nition)h
+12(and)h
+12(indicates)h
+13(that)h
+12(the)h
+13(macro)h
+11(is)h
+13(to)h
+12(b)h
+1(e)h
+13(connected)h
+14(to)h
+12(a)h
+12(pro)h
+1(duct)h
+14(\014le)h
+12(with)h
+177 1819(the)s
+15(same)h
+13(name)h
+13(as)h
+14(the)h
+14(macro)h
+13(\(This)h
+14(is)h
+14(is)h
+14(wh)h
+-1(y)h
+13(w)h
+-1(e)h
+15(got)h
+13(a)h
+14(pro)h
+1(duct)h
+15(\014le)h
+14(when)h
+14(w)h
+-1(e)h
+14(ran)h
+14(F)h
+-3(unnelW)h
+-3(eb\).)h
+18(The)h
+236 1869(and)s
+74(delimit)h
+14(the)h
+16(b)h
+1(o)h
+1(dy)h
+16(of)h
+16(the)h
+16(macro.)h
+23(Finally)h
+-3(,)h
+14(the)h
+76(instructs)h
+18(that)h
+16(an)h
+15(end)h
+17(of)h
+15(line)h
+16(sequence)h
+177 1918(should)s
+14(b)h
+1(e)h
+14(inserted)h
+16(at)h
+13(that)h
+14(p)h
+1(oin)h
+-1(t)h
+14(in)h
+13(the)h
+15(pro)h
+1(duct)h
+14(\014le.)h
+177 1988(If)s
+10(y)h
+-1(ou)h
+10(think)h
+9(this)h
+10(syn)h
+-1(tax)h
+10(lo)h
+1(oks)h
+10(messy)h
+-3(,)h
+10(then)h
+10(y)h
+-1(ou're)h
+10(righ)h
+-1(t.)h
+17(It)h
+50(messy)h
+-3(.)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+112(ha)h
+-1(v)h
+-1(e)h
+10(emplo)h
+-1(y)h
+-1(ed)h
+177 2038(a)s
+14(\\simpler")h
+12(notation)h
+13(in)h
+13(whic)h
+-1(h)h
+14(more)h
+13(of)h
+13(the)h
+50(sequence)h
+1(s)h
+16(w)h
+-1(ere)h
+15(elimi)h
+-1(nated.)h
+17(F)h
+-3(or)h
+13(example:)h
+177 2338(Ho)s
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(if)h
+13(suc)h
+-1(h)h
+14(a)h
+13(syn)h
+-1(tax)h
+14(w)h
+-1(ere)h
+15(used,)h
+14(the)h
+14(user)h
+15(\(y)h
+-1(ou!\))h
+18(w)h
+-1(ould)h
+12(ha)h
+-1(v)h
+-1(e)h
+14(to)h
+13(remem)h
+-1(b)h
+1(er)h
+13(that)h
+49(starts)h
+15(a)h
+13(new)h
+177 2387(macro.)s
+18(Y)h
+-3(ou)h
+14(w)h
+-1(ould)h
+14(also)h
+13(ha)h
+-1(v)h
+-1(e)h
+15(to)h
+14(remem)h
+-1(b)h
+1(er)h
+13(that)h
+15(the)h
+15(c)h
+-1(haracters)h
+51(and)h
+50(cannot)h
+15(b)h
+1(e)h
+15(used)h
+15(in)h
+14(a)h
+14(macro)h
+177 2437(b)s
+1(o)h
+1(dy)h
+17(without)h
+16(a)h
+17(fuss.)h
+27(And)h
+17(so)h
+17(on.)h
+27(F)h
+-3(unnelW)h
+-3(eb)h
+16(is)h
+17(messier,)h
+17(but)h
+17(pro)h
+-1(vides)h
+17(one)h
+17(simple)h
+15(rule:)h
+177 2557(This)s
+13(means)h
+13(that)h
+13(in)h
+13(F)h
+-3(unnelW)h
+-3(eb,)h
+13(y)h
+-1(ou)h
+13(can)h
+13(lo)h
+1(ok)h
+13(at)h
+13(large)h
+13(blo)h
+1(c)h
+-1(ks)h
+13(of)h
+13(text)h
+14(in)h
+13(the)h
+14(con\014dence)h
+15(that)h
+13(\(unlik)h
+-1(e)h
+177 2607(for)s
+13(the)h
+13(C)h
+13(pre-pro)h
+1(cess)h
+1(or\))h
+15(there)h
+14(are)h
+13(no)h
+13(macro)h
+12(calls)h
+12(hidden)h
+13(in)h
+13(there.)h
+19(If)h
+12(there)h
+15(w)h
+-1(ere,)h
+13(there)h
+14(w)h
+-1(ould)h
+12(b)h
+1(e)h
+14(an)h
+213 2657(c)s
+-1(haracter!)h
+177 2727(Let's)s
+14(tak)h
+-1(e)h
+14(another)h
+15(lo)h
+1(ok)h
+13(at)h
+13(the)h
+15(hello)h
+13(w)h
+-1(orld)h
+13(program.)h
+1042 2940(20)s
+709 2 177 2757 r
+21 @eop
+22 @bop0
+cmr6.300 sf
+[<1F00618040C08060C0600060006000C00180030006000C00102020207FC0FFC0>
+16 16 -1 15 15] 50 dc
+cmr7.300 sf
+[<1F0060C06060F070F030603000700070006000C001C00180020004000810101020207F
+E0FFE0>
+16 19 -2 18 17] 50 dc
+cmr8.300 sf
+[<FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
+000E000E000E000E00FFE0>
+16 23 -1 22 13] 73 dc
+[<FF80FE1C00781C00601C00401C00801C01001C06001C08001C10001C38001C78001C9C
+001D0E001E0E001C07001C03801C01C01C01C01C00E01C00701C00781C007CFF80FF>
+24 23 -1 22 27] 75 dc
+[<60F0F070101020204040>
+8 10 -3 22 10] 39 dc
+[<FFFFE01C00E01C00601C00201C00101C00101C00101C04001C04001C04001C0C001FFC
+001C0C001C04001C04081C04081C00081C00181C00101C00101C00301C00F0FFFFF0>
+24 23 -1 22 24] 69 dc
+[<FFFE001C03801C00E01C00601C00701C00701C00701C00701C00E01C01C01FFF801FFF
+C01C00E01C00701C00301C00381C00381C00381C00381C00701C00E01C01C0FFFF00>
+24 23 -1 22 25] 66 dc
+[<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C3F801C1C001C18
+001C20001C40001CC0001FE0001CF0001C70001C78001C3C001C1E001C1E00FF3FC0>
+24 23 0 22 19] 107 dc
+[<204020404080408081008100E1C0F1E0F1E060C0>
+16 10 -5 22 18] 92 dc
+[<60C0F1E0F1E070E0102010202040204040804080>
+16 10 -1 22 18] 34 dc
+cmtt10.300 sf
+[<0C1E3C7870F0E0E0E0F0F87830>
+8 13 -8 27 22] 96 dc
+[<183C3E1E0E0E0E1E1C3C78F060>
+8 13 -7 24 22] 39 dc
+[<00E00001F00001F00001B00001B00003B80003B80003B800031800071C00071C00071C
+00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007F1FC0FF1F
+E07F1FC0>
+24 25 -1 24 22] 65 dc
+[<FC07E0FE0FE0FE0FE03A0B803B1B803B1B803B1B803B1B803B1B803BBB8039B38039B3
+8039B38039B38039F38038E38038E380380380380380380380380380380380FE0FE0FE0F
+E0FE0FE0>
+24 25 -1 24 22] 77 dc
+[<7F1F807F3F807F1F800E1E000E1C00073C0007380003B80003F00001F00001E00000E0
+0001E00001F00003F00003B80007B800071C00071C000E0E000E0E001C07007F1FC0FF1F
+E07F1FC0>
+24 25 -1 24 22] 88 dc
+[<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600000000060F0F060>
+8 25 -9 24 22] 33 dc
+22 @bop1
+cmr6.300 sf
+223 2744(2)s
+cmr7.300 sf
+1681 2652(2)s
+cmbx10.300 sf
+295 2667(T)s
+-4(angling)h
+1013(W)h
+-4(ea)h
+-1(ving)h
+cmti10.300 sf
+1095 1717(no)s
+1466 1817(pr)s
+-2(o)h
+-2(duct)h
+17(\014le)h
+506 1867(do)s
+-2(cumentation)h
+17(\014le)h
+cmr8.300 sf
+241 2756(In)s
+8(F)h
+-3(unnelW)h
+-3(eb,)h
+7(these)h
+8(t)h
+-1(w)h
+-1(o)h
+9(function)h
+-1(s)h
+7(are)h
+9(asp)h
+1(ects)h
+7(of)h
+8(a)h
+9(single)h
+7(computer)h
+7(program)h
+-1(.)h
+13(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+8(in)h
+9(Kn)h
+-1(uth's)h
+7(WEB)h
+10(system,)h
+177 2795(the)s
+10(t)h
+-1(w)h
+-1(o)h
+12(functio)h
+-1(ns)h
+9(are)h
+11(em)h
+-1(b)h
+1(o)h
+1(d)h
+-1(ied)h
+9(in)h
+10(t)h
+-1(w)h
+-1(o)h
+12(separate)h
+9(compu)h
+-1(ter)h
+9(program)h
+-1(s)h
+9(called)h
+10(T)h
+-3(angle)h
+10(and)h
+10(W)h
+-3(ea)h
+-1(v)h
+-1(e,)h
+10(presumabl)h
+-1(y)h
+9(b)h
+1(ecause,)h
+177 2835(as)s
+11(ev)h
+-1(ery)h
+-1(one)h
+10(kno)h
+-1(ws,)h
+10(\\it)h
+11(tak)h
+-1(es)h
+11(t)h
+-1(w)h
+-1(o)h
+11(to)h
+11(T)h
+-3(angle".)h
+cmtt10.300 sf
+177 42(@O@<hello.txt)s
+-1(@>@{H)h
+-1(ello)h
+19(World@+@})h
+177 643(This)s
+21(hello)h
+21(world)h
+21(document)h
+20(was)h
+21(created)h
+20(by)h
+22(-insert)h
+20(your)h
+21(name)h
+21(here-.)h
+177 743(@O@<hello.txt)s
+-1(@>@{H)h
+-1(ello)h
+19(World@+@})h
+177 842(It)s
+22(writes)h
+20(out)h
+21(a)h
+22(file)h
+21(called)h
+20(hello.txt)h
+20(containing)h
+20(the)h
+21(string)h
+21(``Hello)h
+20(World''.)h
+1154 977(+t)s
+177 1113(fw)s
+22(hello)h
+20(+t)h
+177 1383(hello.lis)s
+64(-)h
+21(A)h
+22(LISTING)h
+151(file.)h
+177 1433(hello.tex)s
+64(-)h
+21(A)h
+22(DOCUMENTATIO)h
+-1(N)h
+20(file)h
+21(\(in)h
+21(TeX)h
+21(format\).)h
+177 1482(hello.txt)s
+64(-)h
+21(A)h
+22(PRODUCT)h
+151(file.)h
+451 1618(hello.txt)s
+734(hello.txt)h
+1780 1667(@O)s
+1753 1717(hello.tex)s
+1567 1767(+t)s
+1136 1817(hello.txt)s
+177 1867(hello.tex)s
+177 2101(tex)s
+21(hello)h
+392(!)h
+21(Typeset)h
+21(the)h
+21(documentati)h
+-1(on.)h
+177 2151(lpr)s
+21(-Pcslw)h
+21(-d)h
+21(hello.dvi)h
+86(!)h
+21(Print)h
+21(the)h
+21(typeset)h
+20(documentation.)h
+cmr10.300 sf
+177 177(In)s
+14(its)h
+13(curren)h
+-1(t)h
+16(form,)h
+11(it)h
+13(consists)h
+15(of)h
+13(a)h
+13(single)h
+13(macro)h
+13(de\014nition.)h
+17(This)h
+14(de\014nition,)h
+13(while)h
+13(completely)h
+12(v)h
+-2(alid)h
+177 226(on)s
+14(its)h
+14(o)h
+-1(wn,)h
+13(only)h
+13(represen)h
+-1(ts)h
+16(half)h
+13(the)h
+15(p)h
+1(o)h
+-1(w)h
+-1(er)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb.)h
+17(In)h
+14(fact)h
+14(y)h
+-1(ou)h
+14(could)h
+13(sa)h
+-1(y)h
+14(that)h
+14(it)h
+13(is)h
+14(a)h
+14(\\Hello)h
+177 276(Northern)s
+15(Hemisphere)h
+14(Program".)h
+16(T)h
+-3(o)h
+13(turn)h
+14(it)h
+13(in)h
+-1(to)h
+13(a)h
+13(prop)h
+1(er)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(\\Hello)h
+13(W)h
+-3(orld")h
+12(program,)h
+12(w)h
+-1(e)h
+177 326(need)s
+15(to)h
+14(add)h
+13(some)h
+13(do)h
+1(cumen)h
+-1(tation!)h
+177 408(A)s
+17(F)h
+-3(unnelW)h
+-3(eb)h
+17(input)h
+16(\014le)h
+17(consists)h
+18(of)h
+17(a)h
+16(sequence)h
+19(of)h
+17(macro)h
+15(de\014nitions)h
+17(surrounded)h
+18(b)h
+-1(y)h
+17(a)h
+17(sea)h
+17(of)h
+17(do)h
+1(c-)h
+177 458(umen)s
+-1(tation)h
+15(whic)h
+-1(h)h
+16(is)h
+17(just)h
+17(ordinary)h
+16(text.)h
+26(Mo)h
+1(dify)h
+16(y)h
+-1(our)h
+16(hello)h
+16(w)h
+-1(orld)h
+16(do)h
+1(cumen)h
+-1(t)h
+16(so)h
+17(that)h
+16(it)h
+17(lo)h
+1(oks)h
+16(lik)h
+-1(e)h
+177 508(this:)s
+177 977(No)s
+-1(w)h
+14(run)h
+14(it)h
+13(through)h
+14(F)h
+-3(unnelW)h
+-3(eb,)h
+13(but)h
+14(this)h
+14(time,)h
+12(add)h
+14(a)h
+71(to)h
+14(the)h
+14(command)h
+11(line.)h
+177 1248(If)s
+14(all)h
+12(go)h
+1(es)h
+15(w)h
+-1(ell,)h
+12(y)h
+-1(ou)h
+14(should)h
+13(\014nd)h
+14(that)h
+14(y)h
+-1(ou)h
+14(no)h
+-1(w)h
+13(ha)h
+-1(v)h
+-1(e)h
+177 1618(T)s
+-3(ak)h
+-1(e)h
+13(a)h
+13(lo)h
+1(ok)h
+13(at)h
+211(.)h
+16(Y)h
+-3(ou)h
+13(will)h
+12(\014nd)h
+14(that)h
+13(it)h
+13(is)h
+13(iden)h
+-1(tical)h
+13(to)h
+14(the)h
+223(of)h
+13(the)h
+14(previous)h
+14(run.)h
+177 1667(Only)s
+14(macro)h
+13(de\014nitions)h
+15(a\013ect)h
+15(the)h
+15(pro)h
+1(duct)h
+15(\014les)h
+15(that)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(pro)h
+1(duces)h
+16(\(as)h
+14(a)h
+14(result)h
+15(of)h
+72(macro)h
+177 1717(de\014nitions\).)s
+23(The)h
+16(surrounding)h
+15(do)h
+1(cumen)h
+-1(tation)h
+14(has)h
+76(e\013ect.)h
+24(In)h
+16(con)h
+-1(trast,)h
+16(the)h
+16(new)h
+15(\014le,)h
+177 1767(\(ha)s
+-1(v)h
+-1(e)h
+18(a)h
+18(lo)h
+1(ok)h
+16(at)h
+18(it)h
+18(no)h
+-1(w\))h
+17(whic)h
+-1(h)h
+18(w)h
+-1(as)h
+18(created)h
+19(as)h
+18(a)h
+18(result)h
+18(of)h
+18(y)h
+-1(our)h
+17(adding)h
+17(the)h
+80(option)h
+17(con)h
+-1(tains)h
+18(a)h
+177 1817(fairly)s
+15(full)h
+15(represen)h
+-1(tation)h
+18(of)h
+15(the)h
+17(input)h
+16(\014le.)h
+25(Whereas)h
+230(is)h
+16(the)h
+235(of)h
+16(F)h
+-3(unnelW)h
+-3(eb,)h
+389 1867(is)s
+15(the)h
+350(.)h
+24(T)h
+-3(ry)h
+15(t)h
+-1(yp)h
+1(esetting)h
+16(the)h
+17(do)h
+1(cumen)h
+-1(tation)h
+14(\014le)h
+16(no)h
+-1(w)h
+15(using)h
+15(the)h
+17(T)h
+1895 1876(E)s
+1918 1867(X)s
+177 1916(t)s
+-1(yp)h
+1(esetting)h
+21(program.)h
+36(Then)h
+20(prin)h
+-1(t)h
+20(it.)h
+37(The)h
+21(follo)h
+-1(wi)h
+-1(ng)h
+18(comma)h
+-1(nds)h
+19(are)h
+21(an)h
+19(example)h
+19(of)h
+20(the)h
+21(sort)h
+20(of)h
+177 1966(comma)s
+-1(nds)h
+13(y)h
+-1(ou)h
+13(will)h
+12(ha)h
+-1(v)h
+-1(e)h
+14(to)h
+14(giv)h
+-1(e)h
+13(to)h
+14(do)h
+14(this.)h
+177 2286(The)s
+14(result)h
+14(should)h
+13(b)h
+1(e)h
+13(a)h
+13(single)h
+13(page)h
+13(con)h
+-1(taining)h
+12(the)h
+14(t)h
+-1(w)h
+-1(o)h
+12(lines)h
+13(of)h
+13(do)h
+1(cumen)h
+-1(tation)h
+12(along)h
+12(with)h
+12(a)h
+13(t)h
+-1(yp)h
+1(eset)h
+177 2336(representation)s
+12(of)h
+11(the)h
+13(macro.)h
+16(A)h
+-1(t)h
+11(this)h
+12(p)h
+1(oin)h
+-1(t,)h
+11(y)h
+-1(ou)h
+11(ha)h
+-1(v)h
+-1(e)h
+12(exercised)h
+13(the)h
+13(t)h
+-1(w)h
+-1(o)h
+11(main)h
+9(asp)h
+1(ects)h
+14(of)h
+11(F)h
+-3(unnelW)h
+-3(eb.)h
+177 2386(Starting)s
+12(with)h
+12(an)h
+12(input)h
+12(\014le)h
+12(con)h
+-1(taining)h
+12(macros)h
+11(\(or)h
+12(in)h
+12(this)h
+13(case)h
+13(macro\))h
+11(and)h
+12(do)h
+1(cumen)h
+-1(tation,)h
+11(y)h
+-1(ou)h
+12(ha)h
+-1(v)h
+-1(e)h
+177 2436(success)s
+1(fully)h
+14(generated)h
+15(a)h
+14(pro)h
+1(duct)h
+14(\014le)h
+14(based)h
+14(on)h
+14(the)h
+14(macros,)h
+13(and)h
+13(a)h
+14(do)h
+1(cumen)h
+-1(tation)h
+12(\014le,)h
+13(based)h
+15(on)h
+13(the)h
+177 2486(en)s
+-1(tire)h
+15(do)h
+1(cumen)h
+-1(t.)h
+17(Congratulations!)h
+177 2568(The)s
+11(remainder)h
+9(of)h
+9(this)h
+10(tutorial)h
+9(is)h
+10(divided)h
+9(in)h
+-1(to)h
+10(t)h
+-1(w)h
+-1(o)h
+9(parts,)h
+11(whic)h
+-1(h)h
+10(fo)h
+1(cus)h
+10(on)h
+10(F)h
+-3(unnelW)h
+-3(eb's)h
+9(macro)h
+9(facilities)h
+177 2618(and)s
+15(its)h
+16(t)h
+-1(yp)h
+1(esetting)h
+16(facilities.)h
+22(By)h
+16(tradition,)h
+14(the)h
+16(generation)h
+16(of)h
+15(program)h
+14(\014les)h
+15(from)h
+14(a)h
+15(literate)h
+16(text)h
+16(is)h
+177 2667(called)s
+196(,)h
+11(and)h
+14(the)h
+14(generation)h
+14(of)h
+13(t)h
+-1(yp)h
+1(eset)h
+16(do)h
+1(cumen)h
+-1(tation)h
+12(is)h
+14(called)h
+193(.)h
+1042 2940(21)s
+709 2 177 2717 r
+22 @eop
+23 @bop0
+/cmbx12.300 127 @newfont
+cmbx10.300 sf
+[<003FE00001F07C0003C01E000F800F801F0007C01E0003C03E0003E07E0003F07C0001
+F07C0001F0FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001
+F87C0001F07E0003F07E0003F03E0003E03F0007E01F0007C00F800F8003C01E0001F07C
+00003FE000>
+32 28 -3 27 36] 79 dc
+cmbx12.300 sf
+[<00180000780001F800FFF800FFF80001F80001F80001F80001F80001F80001F80001F8
+0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
+0001F80001F80001F80001F80001F80001F8007FFFE07FFFE0>
+24 32 -4 31 28] 49 dc
+[<387CFEFEFE7C38>
+8 7 -4 6 16] 46 dc
+[<001F8000FFE003F07007C0F00F01F81F01F83E01F83E01F87E00F07C00007C0000FC08
+00FC7FC0FCFFE0FD80F0FF00F8FE007CFE007CFC007EFC007EFC007EFC007E7C007E7C00
+7E7C007E3C007C3E007C1E00F80F00F00783E003FFC000FF00>
+24 32 -2 31 28] 54 dc
+[<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000CF8000CFC000CFC0000FF00
+00FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF00007F00003F0000
+3FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF80>
+24 34 -3 33 31] 83 dc
+[<1C003F007F007F007F003F001C000000000000000000000000000000FF00FF001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FF
+E0>
+16 36 -2 35 16] 105 dc
+[<FF07F007F000FF1FFC1FFC001F303E303E001F403E403E001F801F801F001F801F801F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F00FFE0FFE0FFE0FFE0FFE0FFE0>
+48 22 -2 21 48] 109 dc
+[<FF0FE000FF3FF8001FF07C001F803E001F001F001F001F801F001F801F000FC01F000F
+C01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F001F801F001F801F803F
+001FC03E001FE0FC001F3FF8001F0FC0001F0000001F0000001F0000001F0000001F0000
+001F0000001F0000001F000000FFE00000FFE00000>
+32 32 -2 21 31] 112 dc
+[<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE0>
+16 35 -2 34 16] 108 dc
+[<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC00
+00FC0000FC00007C00007C00007E00003E00181F00300FC07003FFC000FF00>
+24 22 -2 21 26] 101 dc
+[<FFF000000FFFFFF800001FFF07F800001FE006FC000037E006FC000037E006FC000037
+E0067E000067E0067E000067E0063F0000C7E0063F0000C7E0061F800187E0061F800187
+E0060FC00307E0060FC00307E0060FC00307E00607E00607E00607E00607E00603F00C07
+E00603F00C07E00601F81807E00601F81807E00601F81807E00600FC3007E00600FC3007
+E006007E6007E006007E6007E006003FC007E006003FC007E006001F8007E006001F8007
+E006001F8007E006000F0007E0FFF00F00FFFFFFF00600FFFF>
+48 34 -2 33 53] 77 dc
+[<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1
+F03F01F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F>
+24 22 -2 21 27] 97 dc
+[<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC00
+00FC0000FC00007C00007E00007E00003E00301F00600FC0E007FF8000FE00>
+24 22 -2 21 25] 99 dc
+[<FE1F00FE3FC01E67E01EC7E01E87E01E87E01F83C01F00001F00001F00001F00001F00
+001F00001F00001F00001F00001F00001F00001F00001F0000FFF000FFF000>
+24 22 -2 21 23] 114 dc
+[<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC00
+7EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE00>
+24 22 -2 21 28] 111 dc
+[<0FF3003FFF00781F00600700E00300E00300F00300FC00007FE0007FF8003FFE000FFF
+0001FF00000F80C00780C00380E00380E00380F00700FC0E00EFFC00C7F000>
+24 22 -2 21 22] 115 dc
+cmbx10.432 sf
+[<0007F000003FFC0000FFFF0001FC0F0007F01F800FE03F800FC03F801FC03F803F803F
+803F801F007F8000007F0000007F0000007F000000FF000000FF0FC000FF3FF800FF70FE
+00FFE03F00FFC03F80FF801FC0FF801FC0FF801FC0FF001FE0FF001FE0FF001FE0FF001F
+E07F001FE07F001FE07F001FE07F001FE03F801FC03F801FC01F803F800FC03F8007E0FF
+0003FFFC0000FFF000003FC000>
+32 39 -3 38 34] 54 dc
+[<FFFE0000001FFFC0FFFE0000001FFFC0FFFF0000003FFFC003FF0000003FF00003FF00
+00003FF00003BF80000077F00003BF80000077F000039FC00000E7F000039FC00000E7F0
+00038FE00001C7F000038FE00001C7F0000387F0000387F0000387F0000387F0000387F0
+000387F0000383F8000707F0000383F8000707F0000381FC000E07F0000381FC000E07F0
+000380FE001C07F0000380FE001C07F0000380FF003807F00003807F003807F00003807F
+003807F00003803F807007F00003803F807007F00003801FC0E007F00003801FC0E007F0
+0003800FE1C007F00003800FE1C007F00003800FE1C007F000038007F38007F000038007
+F38007F000038003FF0007F000038003FF0007F000038001FE0007F000038001FE0007F0
+00038000FC0007F000038000FC0007F000FFFE00FC01FFFFC0FFFE007801FFFFC0FFFE00
+7801FFFFC0>
+64 41 -3 40 65] 77 dc
+cmtt10.300 sf
+[<00C00001C00001C00001C00007F0001FFC003FFF007DCF00F1C780E1C780E1C780E1C7
+80F1C30079C0007FC0001FF00007FC0001FE0001CF0001C780F1C380F1C380F1C380E1C7
+80F1C78079DF003FFE001FFC0007E00001C00001C00000C000>
+24 32 -2 28 22] 36 dc
+23 @bop1
+cmbx10.300 sf
+502 847(O)s
+cmbx12.300 sf
+177 490(1.6.1)s
+55(Simple)h
+17(Macros)h
+cmbx10.432 sf
+177 42(1.6)s
+70(Macro)h
+24(F)h
+-6(acili)h
+-1(ti)h
+-1(es)h
+cmtt10.300 sf
+177 692(@O@<hello.txt)s
+-1(@>@{H)h
+-1(ello)h
+19(World@+@})h
+358 847(@O)s
+1383(@$)h
+373 947(@O)s
+177 1051(@O@<hello.txt)s
+-1(@>@{@)h
+-1(<Gree)h
+-1(tings)h
+-1(@>@+@)h
+-1(})h
+177 1151(@$@<H@>==@{He)s
+-1(llo@})h
+177 1201(@$@<W@>==@{Wo)s
+-1(rld@})h
+177 1300(@$@<Greetings)s
+-1(@>==@)h
+-1({@<H@)h
+-1(>)h
+20(@<W@>@})h
+177 1510(fw)s
+22(hello)h
+177 1719(Hello)s
+21(World)h
+249 1873(@O)s
+177 1923(@<Greetings@>)s
+896 1973(@<)s
+94(@>)h
+1036 2044(@<Greetings@>)s
+477 2094(hello.txt)s
+478(@$)h
+1200 2144(==)s
+1333 2194(@<Greetings@>)s
+392 2244(H)s
+94(W)h
+cmr10.300 sf
+177 154(The)s
+13(hello)h
+11(w)h
+-1(orld)h
+12(program)h
+11(of)h
+11(the)h
+13(previous)h
+13(section)h
+13(exercised)h
+14(b)h
+1(oth)h
+13(the)h
+12(macro)h
+12(expansion)h
+12(\(pro)h
+1(duct-\014le\))h
+177 204(asp)s
+1(ect)h
+14(of)h
+12(F)h
+-3(unnelW)h
+-3(eb,)h
+12(and)h
+13(the)h
+14(t)h
+-1(yp)h
+1(esetting)h
+13(\(do)h
+1(cumen)h
+-1(tation)h
+12(\014le\))h
+13(asp)h
+1(ect)h
+14(of)h
+12(F)h
+-3(unnelW)h
+-3(eb.)h
+17(This)h
+13(section)h
+177 254(con)s
+-1(tains)h
+14(an)h
+14(exp)h
+1(osition)h
+14(of)h
+13(the)h
+15(macro)h
+13(facilities,)h
+12(and)h
+14(totally)h
+13(ignores)h
+14(the)h
+15(do)h
+1(cumen)h
+-1(tation)h
+13(side.)h
+19(This)h
+14(is)h
+177 303(partly)s
+12(to)h
+12(increase)h
+13(the)h
+13(fo)h
+1(cus)h
+13(of)h
+11(the)h
+13(tutorial,)h
+11(and)h
+12(partly)h
+12(b)h
+1(ecause)h
+14(do)h
+1(cumen)h
+-1(tation)h
+11(is)h
+12(usually)h
+11(bulky)h
+12(and)h
+177 353(w)s
+-1(ould)h
+13(tak)h
+-1(e)h
+14(to)h
+1(o)h
+14(long)h
+13(for)h
+13(the)h
+15(reader)h
+15(to)h
+14(t)h
+-1(yp)h
+1(e)h
+14(in)h
+13(to)h
+14(mak)h
+-1(e)h
+13(the)h
+14(tutorial)h
+13(e\013ectiv)h
+-1(e.)h
+177 588(The)s
+14(original)h
+13(\\Hello)h
+13(W)h
+-3(orld")h
+12(program)h
+12(consisted)h
+15(of)h
+13(a)h
+14(single)h
+14(macro)h
+12(de\014nition.)h
+177 797(In)s
+16(fact,)h
+16(this)h
+16(is)h
+16(a)h
+16(rather)h
+17(exceptional)h
+16(macro,)h
+15(as)h
+16(it)h
+16(causes)h
+17(its)h
+16(expansion)h
+16(to)h
+16(b)h
+1(e)h
+17(written)h
+16(to)h
+16(a)h
+16(pro)h
+1(duct)h
+177 847(\014le.)s
+28(The)h
+78(\(for)h
+53(utput\))h
+18(signals)h
+16(this.)h
+28(In)h
+17(F)h
+-3(unnelW)h
+-3(eb,)h
+17(most)h
+16(macros)h
+16(are)h
+18(de\014ned)h
+18(using)h
+61(.)h
+27(This)h
+177 897(results)s
+16(in)h
+14(a)h
+14(macro)h
+13(that)h
+15(do)h
+1(es)h
+15(not)h
+14(generate)h
+16(a)h
+14(pro)h
+1(duct)h
+15(\014le,)h
+15(but)h
+14(whic)h
+-1(h)h
+15(can)h
+14(b)h
+1(e)h
+15(called)h
+15(in)h
+14(other)h
+15(macros)h
+177 947(\(including)s
+71(macros\).)h
+17(Let)h
+14(us)h
+15(expand)h
+14(the)h
+14(hello)h
+13(w)h
+-1(orld)h
+14(program)h
+12(to)h
+14(include)h
+14(some)h
+13(other)h
+14(macros.)h
+177 1405(T)s
+-1(yp)h
+1(e)h
+14(in)h
+14(the)h
+14(\014le)h
+14(and)h
+14(run)h
+14(it)h
+14(through)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(using)h
+14(the)h
+14(comm)h
+-1(and:)h
+177 1614(The)s
+14(pro)h
+1(duct)h
+15(\014le)h
+14(\(result.out\))h
+15(should)h
+13(lo)h
+1(ok)h
+13(lik)h
+-1(e)h
+13(this:)h
+177 1823(This)s
+16(short)h
+17(program)h
+15(illustrates)h
+16(some)h
+16(of)h
+15(the)h
+17(features)h
+18(of)h
+15(ordinary)h
+16(macros)h
+16(in)h
+16(F)h
+-3(unnelW)h
+-3(eb.)h
+24(Consider)h
+177 1873(the)s
+72(macro.)h
+17(Instead)h
+14(of)h
+14(con)h
+-1(taining)h
+12(straigh)h
+-1(t)h
+14(text)h
+15(\(\\Hello)h
+13(W)h
+-3(orld"\),)h
+12(it)h
+13(no)h
+-1(w)h
+14(con)h
+-1(tains)h
+13(the)h
+15(macro)h
+13(call)h
+462 1923(.)s
+21(A)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(macro)h
+14(can)h
+15(b)h
+1(e)h
+17(called)h
+15(from)h
+13(within)h
+15(the)h
+16(b)h
+1(o)h
+1(dy)h
+16(of)h
+14(another)h
+16(macro)h
+15(just)h
+177 1973(b)s
+-1(y)h
+14(giving)h
+12(the)h
+15(macro)h
+12(name)h
+13(delimited)h
+12(in)h
+71(and)h
+58(.)h
+177 2044(A)s
+-1(t)h
+12(the)h
+13(b)h
+1(ottom)h
+10(of)h
+12(the)h
+12(\014le)h
+12(is)h
+12(the)h
+13(de\014nition)h
+11(of)h
+12(the)h
+307(macro.)h
+17(The)h
+12(de\014nition)h
+12(is)h
+11(similar)h
+10(to)h
+177 2094(the)s
+14(de\014nition)h
+12(of)h
+221(except)h
+14(that)h
+13(it)h
+13(starts)h
+14(with)h
+68(to)h
+13(indicate)h
+13(that)h
+13(no)h
+12(pro)h
+1(duct)h
+14(\014le)h
+13(is)h
+13(desired)h
+177 2144(from)s
+12(this)h
+14(macro)h
+13(\(directly\).)h
+18(It)h
+14(also)h
+13(emplo)h
+-1(ys)h
+13(the)h
+14(optional)h
+70(syn)h
+-1(tax)h
+14(whic)h
+-1(h)h
+13(has)h
+14(no)h
+14(seman)h
+-1(tic)h
+13(impact,)h
+177 2194(but)s
+17(can)h
+16(b)h
+1(e)h
+17(used)h
+17(to)h
+16(mak)h
+-1(e)h
+15(de\014nitions)h
+16(clearer.)h
+27(The)h
+17(b)h
+1(o)h
+1(dy)h
+16(of)h
+16(the)h
+316(macro)h
+15(consists)h
+17(of)h
+177 2244(calls)s
+14(to)h
+13(the)h
+50(and)h
+50(macros)h
+13(whic)h
+-1(h)h
+14(are)h
+14(de\014ned)h
+15(imm)h
+-1(edia)h
+-1(tely)h
+12(ab)h
+1(o)h
+-1(v)h
+-1(e.)h
+177 2315(Note)s
+15(that)h
+15(the)h
+15(macros)h
+14(are)h
+15(not)h
+15(constrained)h
+15(to)h
+15(b)h
+1(e)h
+15(de\014ned)h
+15(in)h
+15(an)h
+-1(y)h
+14(particular)h
+14(order.)h
+21(One)h
+16(of)h
+14(the)h
+15(main)h
+177 2365(features)s
+16(of)h
+14(literate)h
+15(programm)h
+-1(i)h
+-1(ng)h
+13(to)h
+1(ols)h
+14(is)h
+15(that)h
+14(they)h
+16(allo)h
+-1(w)h
+13(the)h
+15(di\013eren)h
+-1(t)h
+15(parts)h
+16(of)h
+14(the)h
+15(text)h
+15(do)h
+1(cumen)h
+-1(t)h
+177 2415(b)s
+1(eing)h
+14(dev)h
+-1(elop)h
+1(ed)h
+15(\(usually)h
+13(a)h
+13(computer)h
+14(program\))h
+12(to)h
+14(b)h
+1(e)h
+15(la)h
+-1(y)h
+-1(ed)h
+13(out)h
+14(in)h
+13(an)h
+-1(y)h
+14(order.)h
+18(So)h
+14(long)h
+13(as)h
+14(there)h
+15(is)h
+14(a)h
+177 2464(de\014nition)s
+14(somewhere)h
+14(in)h
+13(the)h
+15(input)h
+13(\014le)h
+14(for)h
+14(ev)h
+-1(ery)h
+15(macro)h
+12(call,)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(will)h
+13(sort)h
+14(it)h
+13(all)h
+13(out.)h
+177 2536(In)s
+14(fact,)h
+14(F)h
+-3(unnelW)h
+-3(eb's)h
+14(macro)h
+13(facilit)h
+-1(y)h
+12(is)h
+14(v)h
+-1(ery)h
+15(simple.)h
+17(Unlik)h
+-1(e)h
+14(man)h
+-1(y)h
+12(macro)h
+13(prepro)h
+1(cess)h
+1(ors)h
+16(whic)h
+-1(h)h
+14(allo)h
+-1(w)h
+177 2586(macros)s
+11(to)h
+11(de\014ne)h
+13(other)h
+12(macros,)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+11(completely)h
+10(\014nishes)h
+12(parsing)h
+12(and)h
+11(analysing)h
+10(the)h
+13(macros)h
+10(in)h
+177 2635(the)s
+14(input)h
+12(\014le)h
+13(b)h
+1(efore)h
+13(it)h
+13(starts)h
+14(expanding)h
+12(them)h
+12(in)h
+-1(to)h
+12(pro)h
+1(duct)h
+14(\014les.)h
+18(Other)h
+14(prepro)h
+1(cessors)h
+15(allo)h
+-1(w)h
+12(macros)h
+177 2685(to)s
+15(b)h
+1(e)h
+16(rede\014ned)h
+16(lik)h
+-1(e)h
+15(v)h
+-2(ariables)h
+14(\(as)h
+15(in,)h
+15(sa)h
+-1(y)h
+-3(,)h
+14(T)h
+950 2694(E)s
+973 2685(X\))s
+15(taking)h
+14(on)h
+15(man)h
+-1(y)h
+13(di\013eren)h
+-1(t)h
+16(v)h
+-2(alues)h
+15(as)h
+15(the)h
+15(macro)h
+14(pre-)h
+177 2735(pro)s
+1(cessor)h
+13(tra)h
+-1(v)h
+-1(els)h
+11(through)h
+11(the)h
+11(input)h
+11(\014le.)h
+17(In)h
+10(con)h
+-1(trast,)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+10(has)h
+11(no)h
+11(concept)h
+12(of)h
+10(\\di\013eren)h
+-1(t)h
+12(times")h
+177 2785(and)s
+13(treats)h
+14(the)h
+13(input)h
+12(as)h
+13(one)h
+13(h)h
+-1(uge)h
+13(static)h
+13(orderless,)h
+14(timeless,)h
+12(collection)h
+12(of)h
+12(de\014nitions.)h
+18(In)h
+13(F)h
+-3(unnelW)h
+-3(eb,)h
+177 2835(there)s
+15(is)h
+14(only)h
+13(ev)h
+-1(er)h
+15(one)h
+14(time,)h
+12(and)h
+14(so)h
+14(there)h
+15(can)h
+14(only)h
+13(ev)h
+-1(er)h
+15(b)h
+1(e)h
+14(one)h
+15(v)h
+-2(alue/de\014nition)h
+12(for)h
+14(eac)h
+-1(h)h
+14(macro.)h
+1042 2940(22)s
+23 @eop
+24 @bop0
+cmbx12.300 sf
+[<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8FE01F87C01F83803F80003
+F80003F00003F00007E00007C0000F80001F00003E0000380000700000E01801C0180380
+180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF0>
+24 32 -3 31 28] 50 dc
+[<FFF8001FFEFFFC001FFE07FC0000C007FE0000C006FF0000C0067F8000C0063FC000C0
+061FE000C0060FE000C0060FF000C00607F800C00603FC00C00601FE00C00600FE00C006
+00FF00C006007F80C006003FC0C006001FE0C006000FF0C0060007F0C0060007F8C00600
+03FCC0060001FEC0060000FFC00600007FC00600007FC00600003FC00600001FC0060000
+0FC006000007C006000003C006000003C0FFF00001C0FFF00000C0>
+40 34 -2 33 44] 78 dc
+[<FF01FE00FF01FE001F003E001F003E001F003E001F003E001F003E001F003E001F003E
+001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F007E
+001F00FE000F81BE0007FF3FC001FC3FC0>
+32 22 -2 21 31] 117 dc
+[<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
+001F0000001F0000001F0000001F0000001F0FE0001F3FF8001FF07C001F801E001F001F
+001F000F801F000F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000F
+C01F000FC01F000F801F001F801F801F001FC03E001EE07C001C3FF800180FC000>
+32 35 -2 34 31] 98 dc
+[<003F8000FFC001E3E003C7E007C7E00F87E00F83C00F80000F80000F80000F80000F80
+000F8000FFFC00FFFC000F80000F80000F80000F80000F80000F80000F80000F80000F80
+000F80000F80000F80000F80000F80000F80000F80000F80000F80007FF8007FF800>
+24 35 -1 34 17] 102 dc
+[<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F80180E003F801C0
+E003F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F800000003F8000000
+03F800000003F800000003F800000003F800000003F800000003F800000003F800000003
+F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8
+00000003F800000003F800000003F8000003FFFFF80003FFFFF800>
+40 34 -2 33 39] 84 dc
+[<0003FE0080001FFF818000FF01E38001F8003F8003E0001F8007C0000F800F80000780
+1F800007803F000003803F000003807F000001807E000001807E00000180FE00000000FE
+00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000007E00
+0000007E000001807F000001803F000001803F000003801F800003000F8000030007C000
+060003F0000C0001F800380000FF00F000001FFFC0000003FE0000>
+40 34 -3 33 40] 67 dc
+[<0001FE000001FE0000003E0000003E0000003E0000003E0000003E0000003E0000003E
+0000003E0000003E0000003E0000003E0001FC3E0007FFBE000F81FE001F007E003E003E
+007E003E007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E
+00FC003E007C003E007C003E003E007E001E00FE000F83BE0007FF3FC001FC3FC0>
+32 35 -2 34 31] 100 dc
+cmtt10.300 sf
+[<C00000E00000E000007000007000003800003800001C00001C00000E00000E00000700
+0007000003800003800001C00001C00000E00000E000007000007000003800003800001C
+00001C00000E00000E00000700000700000380000380000180>
+24 32 -2 28 22] 92 dc
+24 @bop1
+cmsy10.300 sf
+199 489(f)s
+948 588(f)s
+116(g)h
+cmti10.300 sf
+1664 710(do)s
+-2(esn)h
+-4('t)h
+cmbx12.300 sf
+177 42(1.6.2)s
+55(Num)h
+-2(b)h
+2(er)h
+17(of)h
+19(Times)h
+17(Called)h
+cmtt10.300 sf
+1082 339(@-)s
+1359 389(@-)s
+177 489(@)s
+926 588(@)s
+115(@)h
+853 660(hello.fw)s
+177 865(@O@<hello.c@>)s
+-1(==@{@)h
+-1(-)h
+177 914(@<Include)s
+20(Files@>)h
+177 964(@<Include)s
+20(Files@>)h
+177 1014(@<Main)s
+21(Program@>)h
+177 1064(@})s
+177 1163(@$@<Main)s
+20(Program@>==@{@)h
+-1(-)h
+177 1213(main\(\))s
+177 1263({)s
+199 1313(doit\(\);)s
+177 1363(})s
+177 1413(@})s
+177 1512(@$@<Subroutin)s
+-1(e@>==)h
+-1(@{@-)h
+177 1562(void)s
+21(doit\(\))h
+177 1612({)s
+199 1662(int)s
+21(i;)h
+199 1711(for)s
+21(\(i=0;i<10;i++)h
+-1(\))h
+243 1761({)s
+264 1811(@<Print@>)s
+264 1861(@<Print@>)s
+243 1911(})s
+177 1960(}@})s
+177 2060(@$@<Print@>==)s
+-1(@{@-)h
+177 2110(printf\("Hello)s
+19(World!"\);)h
+177 2160(printf\("\\n"\);)s
+-1(@})h
+177 2259(@$@<Scan@>==@)s
+-1({scan)h
+-1(f@})h
+177 2359(@$@<Include)s
+20(Files@>==@{)h
+-1(@-)h
+177 2409(#include)s
+20(<stdio.h>)h
+177 2459(#include)s
+20(<stdlib.h>@})h
+cmr10.300 sf
+177 140(So)s
+15(far)h
+15(w)h
+-1(e)h
+15(ha)h
+-1(v)h
+-1(e)h
+15(seen)h
+17(only)h
+14(tin)h
+-1(y)h
+-3(,)h
+14(degenerate)h
+17(input)h
+15(\014les.)h
+22(The)h
+16(next)h
+16(example)h
+14(mo)h
+-1(v)h
+-1(es)h
+13(up)h
+16(to)h
+15(the)h
+16(lev)h
+-1(el)h
+14(of)h
+177 190(\\trivial",)s
+10(but)h
+11(starts)h
+13(to)h
+11(con)h
+-1(v)h
+-1(ey)h
+11(the)h
+12(\015a)h
+-1(v)h
+-1(our)h
+11(of)h
+11(the)h
+12(w)h
+-1(a)h
+-1(y)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+10(can)h
+12(b)h
+1(e)h
+12(used)h
+12(in)h
+11(practice.)h
+18(Normally)h
+-4(,)h
+177 240(there)s
+17(w)h
+-1(ould)h
+14(b)h
+1(e)h
+16(do)h
+1(cumen)h
+-1(tation)h
+14(text)h
+16(app)h
+1(earing)h
+15(b)h
+1(et)h
+-1(w)h
+-1(een)h
+17(the)h
+16(macros,)h
+14(but)h
+16(this)h
+15(has)h
+15(b)h
+1(een)h
+17(omitted)h
+14(so)h
+177 289(as)s
+16(to)h
+15(k)h
+-1(eep)h
+17(the)h
+16(fo)h
+1(cus)h
+16(on)h
+16(the)h
+16(macros)h
+15(themselv)h
+-1(es.)h
+23(Although)h
+15(the)h
+17(next)h
+16(example)h
+14(is)h
+16(m)h
+-1(uc)h
+-1(h)h
+14(longer)h
+16(than)h
+177 339(the)s
+17(previous)h
+17(example,)h
+16(the)h
+17(only)h
+16(new)h
+17(construct)h
+18(is)h
+77(whic)h
+-1(h)h
+16(can)h
+17(app)h
+1(ear)h
+17(only)h
+16(at)h
+16(the)h
+17(end)h
+17(of)h
+16(a)h
+17(line,)h
+177 389(and)s
+14(suppresses)h
+17(it,)h
+13(prev)h
+-1(en)h
+-1(ting)h
+14(it)h
+14(from)h
+12(app)h
+1(earing)h
+14(in)h
+14(the)h
+14(text.)h
+19(The)h
+72(construct)h
+16(allo)h
+-1(ws)h
+12(the)h
+15(text)h
+15(of)h
+13(a)h
+177 439(macro)s
+13(to)h
+13(b)h
+1(e)h
+14(aligned)h
+13(at)h
+14(the)h
+14(left)h
+14(margi)h
+-1(n,)h
+12(rather)h
+14(than)h
+14(ha)h
+-1(ving)h
+12(the)h
+15(\014rst)h
+14(line)h
+13(hanging)h
+13(at)h
+14(the)h
+14(end)h
+14(of)h
+13(the)h
+220 489(.)s
+20(F)h
+-3(unnelW)h
+-3(eb)h
+14(could)h
+15(ha)h
+-1(v)h
+-1(e)h
+14(b)h
+1(een)h
+16(set)h
+16(up)h
+15(so)h
+14(that)h
+15(this)h
+15(end)h
+15(of)h
+14(line)h
+14(mark)h
+-1(er)h
+14(w)h
+-1(as)h
+15(suppressed.)h
+23(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+177 538(it)s
+14(w)h
+-1(ould)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(b)h
+1(een)h
+16(a)h
+14(sp)h
+1(ecial)h
+15(case)h
+15(that)h
+14(w)h
+-1(ould)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(brok)h
+-1(en)h
+15(the)h
+15(v)h
+-1(ery)h
+15(memo)h
+-1(rable)h
+13(rule)h
+14(\\the)h
+15(text)h
+15(of)h
+14(a)h
+177 588(macro)s
+13(is)h
+14(the)h
+14(text)h
+15(app)h
+1(earing)h
+13(b)h
+1(et)h
+-1(w)h
+-1(een)h
+15(the)h
+71(and)h
+57(".)h
+177 660(T)s
+-1(yp)h
+1(e)h
+16(the)h
+16(follo)h
+-1(wing)h
+14(text)h
+16(in)h
+-1(to)h
+15(the)h
+16(\014le)h
+206(and)h
+15(run)h
+16(it)h
+15(through)h
+16(F)h
+-3(unnelW)h
+-3(eb.)h
+23(The)h
+16(\014le)h
+16(con)h
+-1(tains)h
+177 710(some)s
+9(in)h
+-1(ten)h
+-1(tional)h
+9(errors)h
+12(so)h
+10(b)h
+1(e)h
+11(sure)h
+11(to)h
+10(t)h
+-1(yp)h
+1(e)h
+10(it)h
+10(in)h
+10(exactly)h
+10(and)h
+10(w)h
+-1(orry)h
+10(only)h
+10(if)h
+9(F)h
+-3(unnelW)h
+-3(eb)h
+141(generate)h
+177 759(some)s
+13(errors.)h
+177 2564(What)s
+14(happ)h
+1(ened?)h
+21(W)h
+-3(ell,)h
+13(if)h
+13(y)h
+-1(ou)h
+14(ha)h
+-1(v)h
+-1(en't)h
+14(t)h
+-1(yp)h
+1(ed)h
+16(the)h
+15(\014le)h
+14(in)h
+14(prop)h
+1(erly)h
+-3(,)h
+14(y)h
+-1(ou)h
+14(ma)h
+-1(y)h
+13(get)h
+14(some)h
+14(miscellaneous)h
+177 2614(syn)s
+-1(tax)h
+12(errors.)h
+18(Fix)h
+12(these)h
+13(b)h
+1(efore)h
+12(con)h
+-1(tin)h
+-1(uing.)h
+16(If)h
+12(the)h
+12(\014le)h
+12(has)h
+12(b)h
+1(een)h
+12(correctly)h
+13(t)h
+-1(yp)h
+1(ed,)h
+12(y)h
+-1(ou)h
+12(should)h
+11(b)h
+1(e)h
+12(faced)h
+177 2663(with)s
+14(some)h
+13(error)h
+15(messages)h
+14(to)h
+13(do)h
+14(with)h
+13(the)h
+15(n)h
+-1(um)h
+-1(b)h
+1(er)h
+13(of)h
+13(times)h
+13(some)h
+13(of)h
+14(the)h
+14(macros)h
+13(are)h
+14(called.)h
+177 2735(By)s
+15(default,)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(insists)h
+15(that)h
+15(eac)h
+-1(h)h
+15(macro)h
+13(de\014ned)h
+16(is)h
+14(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+14(exactly)h
+15(once.)h
+21(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+15(the)h
+15(\014le)h
+177 2785(ab)s
+1(o)h
+-1(v)h
+-1(e)h
+16(de\014nes)h
+18(macros)h
+15(that)h
+16(are)h
+17(used)h
+17(more)h
+15(than)h
+16(once)h
+17(and)h
+16(a)h
+16(macro)h
+15(that)h
+17(is)h
+16(not)h
+16(used)h
+17(at)h
+16(all.)h
+24(Let)h
+16(us)h
+177 2835(examine)s
+13(the)h
+14(errors.)h
+1042 2940(23)s
+24 @eop
+25 @bop0
+cmtt10.300 sf
+[<7FFF80FFFF80FFFF80E00700E00F00E01E00E01C00003C0000780000700000F00001E0
+0001C00003C0000780000700000F00001E03801C03803C0380780380700380FFFF80FFFF
+80FFFF80>
+24 25 -2 24 22] 90 dc
+25 @bop1
+cmbx10.300 sf
+1098 1145(Z)s
+304(M)h
+cmtt10.300 sf
+1367 42(Include)s
+20(Files)h
+1377 217(@<subroutine)s
+-1(@>)h
+1083 317(@<subroutine@>)s
+565 367(@<Main)s
+20(Program@>)h
+488(@<hello.c@>)h
+929 744(@<print@>)s
+1018 870(@<scan@>)s
+177 920(@<print@>)s
+961 1145(@Z)s
+288(@M)h
+866 1195(@Z)s
+471 1245(@M)s
+177 1540(@O@<hello.c@>)s
+-1(==@{@)h
+-1(-)h
+177 1589(@<Include)s
+20(Files@>)h
+177 1639(@<Function@>)s
+177 1689(@<Main)s
+21(Program@>)h
+177 1739(@})s
+177 1838(@$@<Main)s
+20(Program@>==@{@)h
+-1(-)h
+177 1888(main\(\))s
+177 1938({)s
+199 1988(doit\(\);)s
+177 2038(})s
+177 2087(@})s
+177 2187(@$@<Function@)s
+-1(>==@{)h
+-1(@-)h
+177 2237(void)s
+21(doit\(\))h
+177 2287({)s
+199 2337(int)s
+21(i;)h
+199 2386(for)s
+21(\(i=0;i<10;i++)h
+-1(\))h
+243 2436({)s
+264 2486(@<Print@>)s
+264 2536(@<Print@>)s
+243 2586(})s
+177 2635(}@})s
+177 2735(@$@<Print@>@M)s
+-1(==@{@)h
+-1(-)h
+177 2785(printf\("Hello)s
+19(World!"\);)h
+177 2835(printf\("\\n"\);)s
+-1(@})h
+cmr10.300 sf
+177 42(First,)s
+15(w)h
+-1(e)h
+15(see)h
+16(that)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(has)h
+15(alerted)h
+15(us)h
+15(to)h
+15(the)h
+15(fact)h
+15(that)h
+14(the)h
+313(macro)h
+14(has)h
+15(b)h
+1(een)h
+177 91(called)s
+12(t)h
+-1(wice.)h
+18(Once)h
+14(alerted)h
+13(to)h
+13(this,)h
+12(a)h
+12(quic)h
+-1(k)h
+13(lo)h
+1(ok)h
+11(at)h
+13(the)h
+13(program)h
+11(con)h
+-1(vinces)h
+13(us)h
+13(that)h
+13(calling)h
+11(the)h
+13(macro)h
+177 141(t)s
+-1(wice)h
+14(is)h
+14(a)h
+14(mistak)h
+-1(e,)h
+12(and)h
+13(that)h
+14(one)h
+14(of)h
+14(the)h
+14(calls)h
+14(should)h
+13(b)h
+1(e)h
+15(elimina)h
+-1(ted.)h
+177 217(Second,)s
+12(w)h
+-1(e)h
+10(note)h
+11(that)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+10(has)h
+11(alerted)h
+11(us)h
+11(to)h
+10(the)h
+11(fact)h
+10(that)h
+11(the)h
+326(macro)h
+10(is)h
+10(nev)h
+-1(er)h
+177 267(called.)s
+18(Again,)h
+12(a)h
+13(quic)h
+-1(k)h
+13(lo)h
+1(ok)h
+13(at)h
+13(the)h
+14(program)h
+12(tells)h
+13(us)h
+14(that)h
+13(this)h
+14(is)h
+13(a)h
+13(mistak)h
+-1(e)h
+12(\(and)h
+13(a)h
+13(v)h
+-1(ery)h
+14(comm)h
+-1(on)h
+12(one)h
+177 317(in)s
+15(the)h
+16(use)h
+17(of)h
+15(F)h
+-3(unnelW)h
+-3(eb\),)h
+15(and)h
+15(that)h
+16(a)h
+15(call)h
+15(to)h
+15(the)h
+337(macro)h
+14(should)h
+16(b)h
+1(e)h
+16(inserted)h
+17(just)h
+177 367(ab)s
+1(o)h
+-1(v)h
+-1(e)h
+14(the)h
+14(call)h
+13(to)h
+14(the)h
+377(macro)h
+13(in)h
+13(the)h
+15(de\014nition)h
+13(of)h
+255(.)h
+177 443(These)s
+13(t)h
+-1(w)h
+-1(o)h
+12(cases)h
+13(demonstrate)h
+12(wh)h
+-1(y)h
+12(these)h
+13(c)h
+-1(hec)h
+-1(ks)h
+14(ha)h
+-1(v)h
+-1(e)h
+11(b)h
+1(een)h
+13(placed)h
+13(in)h
+11(F)h
+-3(unnelW)h
+-3(eb.)h
+17(It)h
+12(is)h
+12(nearly)h
+12(alw)h
+-1(a)h
+-1(ys)h
+177 492(acceptable)s
+16(for)h
+15(a)h
+14(macro)h
+14(to)h
+15(b)h
+1(e)h
+15(called)h
+15(once.)h
+22(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+15(if)h
+14(a)h
+15(macro)h
+14(is)h
+14(not)h
+15(called)h
+15(at)h
+15(all,)h
+13(or)h
+15(called)h
+15(more)h
+177 542(than)s
+14(once,)h
+14(this)h
+14(is)h
+14(often)h
+14(a)h
+13(sign)h
+14(that)h
+14(the)h
+14(user)h
+15(has)h
+14(made)h
+13(a)h
+14(mistak)h
+-1(e.)h
+177 618(These)s
+19(c)h
+-1(hec)h
+-1(ks)h
+19(ha)h
+-1(v)h
+-1(e)h
+17(a)h
+17(dark)h
+17(side)h
+18(to)h
+1(o.)h
+28(In)h
+18(addition)h
+16(to)h
+17(the)h
+18(errors)h
+19(men)h
+-1(tioned)h
+16(ab)h
+1(o)h
+-1(v)h
+-1(e,)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(has)h
+177 668(generated)s
+15(t)h
+-1(w)h
+-1(o)h
+14(simil)h
+-1(ar)h
+12(errors)h
+15(that)h
+14(do)h
+14(not)h
+14(help)h
+14(us.)h
+177 744(First,)s
+15(w)h
+-1(e)h
+14(are)h
+15(alerted)h
+15(to)h
+14(the)h
+15(fact)h
+14(that)h
+15(the)h
+225(macro)h
+13(has)h
+15(b)h
+1(een)h
+15(called)h
+14(t)h
+-1(wice.)h
+20(Clearly)h
+-3(,)h
+13(in)h
+14(this)h
+177 794(case,)s
+15(this)h
+14(is)h
+13(not)h
+14(a)h
+14(problem,)h
+12(and)h
+13(so)h
+14(here)h
+15(F)h
+-3(unnelW)h
+-3(eb's)h
+14(fussiness)h
+15(is)h
+14(a)h
+13(n)h
+-1(uisance.)h
+177 870(Second,)s
+22(w)h
+-1(e)h
+20(are)h
+20(alerted)h
+20(to)h
+20(the)h
+20(fact)h
+20(that)h
+20(the)h
+214(macro)h
+19(has)h
+20(nev)h
+-1(er)h
+20(b)h
+1(een)h
+21(called.)h
+36(Lik)h
+-1(e)h
+19(the)h
+392 920(macro,)s
+18(this)h
+18(macro)h
+17(w)h
+-1(as)h
+19(de\014ned)h
+19(as)h
+19(a)h
+18(notational)h
+17(con)h
+-1(v)h
+-1(enience,)h
+20(and)h
+18(clearly)h
+19(it)h
+18(do)h
+1(es)h
+19(not)h
+177 969(matter)s
+13(here)h
+15(if)h
+13(it)h
+14(is)h
+14(not)h
+14(used.)h
+18(Again,)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(is)h
+14(b)h
+1(eing)h
+14(a)h
+14(n)h
+-1(uisance.)h
+177 1045(The)s
+19(four)h
+18(cases)h
+20(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+18(demonstrate)h
+19(the)h
+19(ligh)h
+-1(t)h
+17(and)h
+18(dark)h
+19(side)h
+18(of)h
+18(F)h
+-3(unnelW)h
+-3(eb's)h
+18(insistence)h
+20(that)h
+18(eac)h
+-1(h)h
+177 1095(macro)s
+10(b)h
+1(e)h
+12(called)h
+11(exactly)h
+12(once.)h
+17(T)h
+-3(o)h
+11(resolv)h
+-1(e)h
+12(the)h
+12(con\015ict)h
+11(without)h
+11(reducing)h
+12(the)h
+12(strength)h
+12(of)h
+11(the)h
+12(c)h
+-1(hec)h
+-1(king,)h
+177 1145(F)s
+-3(unnelW)h
+-3(eb)h
+14(pro)h
+-1(vides)h
+14(t)h
+-1(w)h
+-1(o)h
+13(sp)h
+1(ecial)h
+14(sequence)h
+1(s)h
+73(\(for)h
+43(ero\))h
+15(and)h
+71(\(for)h
+59(an)h
+-1(y\))h
+13(that)h
+14(can)h
+15(b)h
+1(e)h
+14(attac)h
+-1(hed)h
+177 1195(to)s
+15(macro)h
+13(de\014nitions.)h
+20(Presenc)h
+1(e)h
+17(of)h
+14(the)h
+73(tag)h
+14(allo)h
+-1(ws)h
+14(the)h
+15(designated)h
+15(macro)h
+14(to)h
+14(b)h
+1(e)h
+15(called)h
+15(zero)h
+15(times.)h
+177 1245(Presence)s
+18(of)h
+14(the)h
+74(tag)h
+15(allo)h
+-1(ws)h
+13(the)h
+16(designated)h
+15(macro)h
+14(to)h
+15(b)h
+1(e)h
+15(called)h
+15(more)h
+14(than)h
+15(once.)h
+21(A)h
+15(single)h
+15(macro)h
+177 1294(ma)s
+-1(y)h
+12(carry)h
+15(b)h
+1(oth)h
+14(tags.)h
+18(It)h
+14(is)h
+13(alw)h
+-1(a)h
+-1(ys)h
+13(true)h
+15(that)h
+14(all)h
+12(macros)h
+14(are)h
+14(allo)h
+-1(w)h
+-1(ed)h
+12(to)h
+14(b)h
+1(e)h
+15(called)h
+13(exactly)h
+14(once.)h
+177 1370(Here)s
+20(is)h
+18(the)h
+19(revised)h
+19(program)h
+17(with)h
+18(the)h
+19(errors)h
+19(\014xed,)h
+20(b)h
+-1(y)h
+18(elimina)h
+-1(ting)h
+16(or)h
+19(adding)h
+17(macro)h
+17(calls,)h
+19(or)h
+18(b)h
+-1(y)h
+177 1420(adding)s
+13(tags.)h
+18(T)h
+-3(ry)h
+14(pro)h
+1(cessing)h
+15(the)h
+14(\014le)h
+14(no)h
+-1(w.)h
+18(There)h
+15(should)h
+14(b)h
+1(e)h
+14(no)h
+14(errors.)h
+1042 2940(24)s
+25 @eop
+26 @bop0
+cmbx12.300 sf
+[<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F00003
+E00007C0001F8001FE0001FF000007C00001F00001F80000FC0000FC3C00FE7E00FEFF00
+FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE00>
+24 32 -2 31 28] 51 dc
+[<FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
+0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
+0003F80003F80003F80003F80003F80003F80003F80003F800FFFFE0FFFFE0>
+24 34 -1 33 21] 73 dc
+[<FF07E000FF1FF8001F307C001F403C001F803E001F803E001F003E001F003E001F003E
+001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E
+001F003E001F003E00FFE1FFC0FFE1FFC0>
+32 22 -2 21 31] 110 dc
+[<0180000180000180000180000380000380000780000780000F80003F8000FFFF00FFFF
+000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F81
+800F81800F81800F81800F81800F830007C30003FE0000F800>
+24 32 -1 31 22] 116 dc
+cmtt10.300 sf
+[<FFF0FFF0FFF0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
+00E000E000E000E000E000E000E000E000E000E000E000FFF0FFF0FFF0>
+16 32 -8 28 22] 91 dc
+[<FFF0FFF0FFF00070007000700070007000700070007000700070007000700070007000
+7000700070007000700070007000700070007000700070FFF0FFF0FFF0>
+16 32 -1 28 22] 93 dc
+[<7F0FE0FF8FF07F0FE01C07801C0F001C0E001C1C001C3C001C78001CF0001CE0001DF0
+001FF0001FF8001F38001E1C001C1C001C0E001C0E001C07001C07001C03807F07E0FF8F
+F07F07E0>
+24 25 0 24 22] 75 dc
+[<07F0001FFC003FFE007C1F00F00780E00380E00380E003807007007C1F001FFC0007F0
+001FFC003C1E00700700F00780E00380E00380E00380F007807007007C1F003FFE001FFC
+0007F000>
+24 25 -2 24 22] 56 dc
+[<07E0001FFC007FFE00781F00780F00780700000700000F00000F00003E0007FC0007F8
+0007FC00001E00000700000780000380000380F00380F00780F00700F81F007FFE003FFC
+0007E000>
+24 25 -2 24 22] 51 dc
+[<FE0FE0FF1FE0FE0FE03803801C07001C07001C07001C07000E0E000E0E000E0E000E0E
+00060C00071C00071C00071C00071C0003180003B80003B80003B80001B00001F00001F0
+0000E000>
+24 25 -1 24 22] 86 dc
+[<FE0FE0FF1FE0FE0FE01C07001C07000E0E000E0E00071C00071C00071C0003B80003B8
+0001F00001F00000E00000E00000E00000E00000E00000E00000E00000E00003F80007FC
+0003F800>
+24 25 -1 24 22] 89 dc
+[<03E0000FF8003FFC007C1E00780F00F00700E00700E00780E00780E00380F00780F007
+80780F803FFF803FFB800FE380000780000700300F00780E00781E00787C007FF8003FE0
+000F8000>
+24 25 -2 24 22] 57 dc
+26 @bop1
+cmbx12.300 sf
+177 450(1.6.3)s
+55(Inden)h
+-2(tation)h
+cmbx10.300 sf
+466 1912(pragma)s
+1244 2305([Kn)s
+-1(uth83])h
+1010 2455([Kn)s
+-1(uth83])h
+cmtt10.300 sf
+177 91(@$@<Scan@>@Z=)s
+-1(=@{sc)h
+-1(anf@})h
+177 191(@$@<Include)s
+20(Files@>==@{)h
+-1(@-)h
+177 241(#include)s
+20(<stdio.h>)h
+177 291(#include)s
+20(<stdlib.h>@})h
+486 560(print)s
+243 741({)s
+264 791(printf\("Hello)s
+19(World!"\);)h
+177 841(printf\("\\n"\);)s
+264 891(printf\("Hello)s
+19(World!"\);)h
+177 941(printf\("\\n"\);)s
+243 990(})s
+1208 1121(hello.c)s
+243 1252({)s
+264 1302(printf\("Hello)s
+19(World!"\);)h
+264 1352(printf\("\\n"\);)s
+264 1402(printf\("Hello)s
+19(World!"\);)h
+264 1452(printf\("\\n"\);)s
+243 1502(})s
+177 2044(@p)s
+22(indentatio)h
+-1(n)h
+20(=)h
+22(none)h
+177 2586(IF)s
+22(R=0)h
+21(THEN)h
+21(XREF[P]:=XR)h
+-1(EFPTR)h
+19(ELSE)h
+21(XMEM[R].XLINK)h
+-1(FIELD)h
+-1(:=XRE)h
+-1(FPTR;)h
+-1(END;{)h
+-1(:51})h
+177 2635({58:}FUNCTION)s
+19(IDLOOKUP\(T:EIG)h
+-1(HTBIT)h
+-1(S\):NA)h
+-1(MEPO)h
+-1(INTER)h
+-1(;LABE)h
+-1(L)h
+20(31;)h
+177 2685(VAR)s
+21(I:0..LONGBUFSI)h
+-1(ZE;H:)h
+-1(0..HA)h
+-1(SHSIZ)h
+-1(E;K:0)h
+-1(..MA)h
+-1(XBYTE)h
+-1(S;W:0)h
+-1(..1;)h
+177 2735(L:0..LONGBUFS)s
+-1(IZE;P)h
+-1(:NAME)h
+-1(POINT)h
+-1(ER;BE)h
+-1(GIN)h
+20(L:=IDLOC-I)h
+-1(DFIRS)h
+-1(T;{59)h
+-1(:})h
+177 2785(H:=BUFFER[IDF)s
+-1(IRST])h
+-1(;I=ID)h
+-1(FIRST)h
+-1(+1;)h
+177 2835(WHILE)s
+21(I<IDLOC)h
+20(DO)h
+22(BEGIN)h
+20(H:=\(H+H+BUFFER[)h
+-1(I]\)M)h
+-1(OD)h
+20(HASHSIZE;I=I)h
+-1(+1;EN)h
+-1(D{:59)h
+-1(};)h
+cmr10.300 sf
+177 560(The)s
+14(b)h
+1(o)h
+1(dy)h
+14(of)h
+13(the)h
+137(macro)h
+13(of)h
+13(the)h
+14(previous)h
+14(example)h
+13(con)h
+-1(tains)h
+13(t)h
+-1(w)h
+-1(o)h
+13(lines)h
+14(of)h
+13(text.)h
+19(A)h
+14(literal)h
+12(substi-)h
+177 610(tution)s
+14(of)h
+13(this)h
+14(macro's)h
+12(b)h
+1(o)h
+1(dy)h
+14(in)h
+14(its)h
+14(con)h
+-1(text)h
+14(w)h
+-1(ould)h
+13(result)h
+15(in:)h
+177 1121(But)s
+15(instead,)h
+13(it)h
+14(comes)h
+13(out)h
+14(as)h
+14(\(ha)h
+-1(v)h
+-1(e)h
+14(a)h
+14(lo)h
+1(ok)h
+12(at)h
+14(this)h
+14(part)h
+14(of)h
+180(no)h
+-1(w\):)h
+177 1633(The)s
+12(explanation)h
+10(is)h
+10(that)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+11(inden)h
+-1(ts)h
+11(eac)h
+-1(h)h
+12(line)h
+10(of)h
+11(m)h
+-1(ulti)h
+-1(li)h
+-1(ne)h
+10(macros)h
+10(b)h
+-1(y)h
+11(the)h
+11(lev)h
+-1(el)h
+11(of)h
+10(inden)h
+-1(tation)h
+177 1682(at)s
+12(the)h
+13(p)h
+1(oin)h
+-1(t)h
+11(of)h
+11(call.)h
+17(This)h
+12(means)h
+11(that,)h
+12(as)h
+12(in)h
+11(the)h
+13(case)h
+13(ab)h
+1(o)h
+-1(v)h
+-1(e,)h
+11(program)h
+11(texts,)h
+13(whic)h
+-1(h)h
+11(are)h
+13(usually)h
+11(highly)h
+177 1732(inden)s
+-1(ted,)h
+14(come)h
+13(out)h
+14(lo)h
+1(oking)h
+12(\\righ)h
+-1(t".)h
+177 1813(In)s
+14(other)h
+15(circumstances,)h
+15(where)h
+15(the)h
+15(mo)h
+1(del)h
+13(of)h
+13(the)h
+15(text)h
+15(is)h
+14(one)h
+14(dimensional,)h
+12(F)h
+-3(unnelW)h
+-3(eb's)h
+13(inden)h
+-1(tation)h
+177 1863(could)s
+13(b)h
+1(ecome)h
+14(an)h
+13(imp)h
+1(edim)h
+-1(en)h
+-1(t)h
+12(or)h
+13(ev)h
+-1(en)h
+15(a)h
+13(danger.)h
+18(In)h
+13(these)h
+15(cases,)h
+15(it)h
+13(can)h
+14(b)h
+1(e)h
+14(switc)h
+-1(hed)h
+14(o\013)h
+14(b)h
+-1(y)h
+13(including)h
+177 1912(the)s
+15(F)h
+-3(unnelW)h
+-3(eb)h
+183(line)h
+177 2175(an)s
+-1(ywhere)h
+15(in)h
+13(the)h
+15(input)h
+13(\014le.)h
+177 2255(One)s
+19(of)h
+18(the)h
+19(design)h
+18(goals)h
+18(of)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+18(is)h
+18(to)h
+18(allo)h
+-1(w)h
+17(the)h
+19(user)h
+19(total)h
+18(con)h
+-1(trol)h
+18(o)h
+-1(v)h
+-1(er)h
+18(the)h
+19(pro)h
+1(duct)h
+19(\014les.)h
+177 2305(This)s
+13(con)h
+-1(trasts)h
+14(with)h
+13(the)h
+14(approac)h
+-1(h)h
+13(of)h
+13(Kn)h
+-1(uth's)h
+13(WEB)h
+13(system)h
+235(\(up)h
+1(on)h
+13(whic)h
+-1(h)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(is)h
+177 2355(based\),)s
+18(whic)h
+-1(h)h
+16(mangles)h
+15(the)h
+17(input)h
+16(text)h
+17(at)h
+16(the)h
+17(P)h
+-1(ascal)h
+17(program)h
+14(syn)h
+-1(tax)h
+17(lev)h
+-1(el,)h
+16(truncating)h
+17(iden)h
+-1(ti\014ers,)h
+177 2405(con)s
+-1(v)h
+-1(erting)h
+15(the)h
+15(text)h
+15(to)h
+14(upp)h
+1(er)h
+16(case,)h
+15(and)h
+14(paragraphing)h
+14(text.)h
+20(Here)h
+16(is)h
+14(an)h
+14(example)h
+13(of)h
+14(part)h
+15(of)h
+14(a)h
+14(P)h
+-1(ascal)h
+177 2455(program)s
+12(pro)h
+1(duced)h
+16(b)h
+-1(y)h
+13(WEB)h
+14(\(from)h
+13(page)h
+14(14)h
+13(of)h
+223(\):)h
+1042 2940(25)s
+26 @eop
+27 @bop0
+cmbx12.300 sf
+[<0000E00001E00003E00003E00007E0000FE0001FE0001FE00037E00077E000E7E001C7
+E00187E00307E00707E00E07E00C07E01807E03807E07007E0E007E0FFFFFEFFFFFE0007
+E00007E00007E00007E00007E00007E00007E000FFFE00FFFE>
+24 32 -2 31 28] 52 dc
+[<000070000000007000000000F800000000F800000000F800000001FC00000001FC0000
+0003FE00000003FE00000003FE00000006FF000000067F0000000E7F8000000C3F800000
+0C3F800000183FC00000181FC00000381FE00000300FE00000300FE00000600FF0000060
+07F00000E007F80000FFFFF80000FFFFF800018001FC00018001FC00038001FE00030000
+FE00030000FE000600007F000600007F00FFE00FFFF8FFE00FFFF8>
+40 34 -2 33 42] 65 dc
+[<FFE01FE0FFE01FE00F8006000F8006000FC00E0007C00C0007E01C0003E0180003E018
+0001F0300001F0300000F8600000F86000007CC000007CC000007FC000003F8000003F80
+00001F0000001F0000000E0000000E0000>
+32 22 -1 21 30] 118 dc
+cmtt10.300 sf
+[<01C00001C00001C00001C00071C700F9CF807FFF001FFC0007F00007F0001FFC007FFF
+00F9CF8071C70001C00001C00001C00001C000>
+24 18 -2 21 22] 42 dc
+[<387C7E7E3E0E1E3C7CF860>
+8 11 -7 4 22] 44 dc
+[<FFFF80FFFF80FFFF80>
+24 3 -2 -2 22] 95 dc
+27 @bop1
+cmbx10.300 sf
+1015 679(additi)s
+-1(v)h
+-1(e)h
+13(macro)h
+cmbx12.300 sf
+177 529(1.6.4)s
+55(Additiv)h
+-2(e)h
+18(Macros)h
+cmtt10.300 sf
+400 839(+=)s
+204(==)h
+177 1290(@!***********)s
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(****)h
+177 1390(@O@<prog.pas@)s
+-1(>==@{)h
+-1(@-)h
+177 1440(program)s
+21(adt\(input,)h
+-1(outpu)h
+-1(t\);)h
+177 1490(@<Types@>)s
+177 1540(@<Variables@>)s
+177 1589(@<Procedures@)s
+-1(>)h
+177 1639(begin)s
+21(startproc;)h
+20(end.)h
+177 1689(@})s
+177 1789(@!***********)s
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(****)h
+177 1888(@$@<Types@>+=)s
+-1(@{@-)h
+177 1938(type)s
+21(buffer_type)h
+20(=)h
+243 1988(record)s
+243 2038(length)s
+20(:)h
+22(integer;)h
+243 2087(buf)s
+21(:)h
+21(array[1..100])h
+19(of)h
+22(char;)h
+243 2137(end;)s
+177 2187(@})s
+177 2287(@$@<Variables)s
+-1(@>+=@)h
+-1({@-)h
+177 2337(bigbuf)s
+21(:)h
+21(buffer_type;)h
+177 2386(@})s
+177 2486(@$@<Procedure)s
+-1(s@>+=)h
+-1(@{@-)h
+177 2536(procedure)s
+20(buf_init)h
+20(\(var)h
+21(b)h
+22(:)h
+21(buffer_type)h
+325(\))h
+22({Body)h
+20(of)h
+22(buf_init})h
+177 2586(procedure)s
+20(buf_add)h
+42(\(var)h
+21(b)h
+22(:)h
+21(buffer_type;)h
+107(ch)h
+21(:)h
+22(char\))h
+21({Body)h
+20(of)h
+22(buf_add})h
+177 2635(procedure)s
+20(buf_get)h
+42(\(var)h
+21(b)h
+22(:)h
+21(buffer_type;)h
+20(var)h
+21(ch)h
+21(:)h
+22(char\))h
+21({Body)h
+20(of)h
+22(buf_get})h
+177 2685(@})s
+177 2785(@!***********)s
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(****)h
+cmr10.300 sf
+177 42(Kn)s
+-1(uth's)h
+13(theory)h
+13(is)h
+12(that)h
+12(the)h
+13(program)h
+11(generated)h
+13(b)h
+-1(y)h
+12(a)h
+12(literate)h
+13(programm)h
+-1(i)h
+-1(ng)h
+10(system)h
+13(should)h
+12(b)h
+1(e)h
+13(treated)h
+177 91(as)s
+20(ob)h
+2(ject)h
+21(co)h
+1(de)h
+21(and)h
+20(hence)h
+21(should)h
+20(lo)h
+1(ok)h
+19(lik)h
+-1(e)h
+19(ob)h
+2(ject)h
+21(co)h
+1(de)h
+20(to)h
+1(o.)h
+36(While)h
+20(this)h
+20(ma)h
+-1(y)h
+18(b)h
+1(e)h
+20(an)h
+20(admirabl)h
+-1(e)h
+177 141(approac)s
+-1(h)h
+17(in)h
+17(the)h
+18(long)h
+17(run,)h
+18(the)h
+17(presen)h
+-1(t)h
+19(programm)h
+-1(ing)h
+15(en)h
+-1(vironmen)h
+-1(t)h
+16(is)h
+17(one)h
+18(of)h
+17(fault)h
+-1(y)h
+16(compilers)h
+16(and)h
+177 191(buggy)s
+12(to)h
+1(ols.)h
+18(The)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(view)h
+13(is)h
+13(that,)h
+12(in)h
+12(this)h
+13(en)h
+-1(vironmen)h
+-1(t,)h
+12(the)h
+13(programm)h
+-1(er)h
+12(needs)h
+14(all)h
+11(the)h
+14(help)h
+177 241(he)s
+17(can)h
+17(get)h
+17(and)h
+16(that)h
+17(therefore)h
+18(he)h
+17(should)h
+16(b)h
+1(e)h
+17(allo)h
+-1(w)h
+-1(ed)h
+16(total)h
+15(con)h
+-1(trol)h
+17(o)h
+-1(v)h
+-1(er)h
+16(the)h
+17(pro)h
+1(duct)h
+18(\014le.)h
+26(Another)h
+177 291(reason)s
+12(for)h
+12(F)h
+-3(unnelW)h
+-3(eb's)h
+11(pro)h
+-1(viding)h
+10(total)h
+11(con)h
+-1(trol)h
+11(o)h
+-1(v)h
+-1(er)h
+12(the)h
+12(pro)h
+1(duct)h
+13(\014le,)h
+11(is)h
+12(that)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(is)h
+11(in)h
+-1(tended)h
+177 340(to)s
+17(b)h
+1(e)h
+19(target)h
+17(language)h
+17(indep)h
+1(enden)h
+-1(t,)h
+19(and)h
+17(so)h
+18(ev)h
+-1(en)h
+18(if)h
+17(Kn)h
+-1(uth's)h
+17(view)h
+18(w)h
+-1(ere)h
+18(adopted,)h
+18(it)h
+17(w)h
+-1(ould)h
+17(not)h
+17(b)h
+1(e)h
+177 390(clear)s
+14(what)h
+14(a)h
+14(legitim)h
+-1(ate)h
+13(transformation)h
+12(of)h
+13(the)h
+14(text)h
+15(could)h
+13(b)h
+1(e.)h
+177 629(Sometim)s
+-1(es)h
+15(it)h
+16(is)h
+17(con)h
+-1(v)h
+-1(enien)h
+-1(t)h
+16(to)h
+17(build)h
+15(up)h
+17(the)h
+17(de\014nition)h
+16(of)h
+15(a)h
+16(macro)h
+16(in)h
+15(stages)h
+18(throughout)h
+16(the)h
+17(input)h
+177 679(\014le.)s
+18(In)h
+13(F)h
+-3(unnelW)h
+-3(eb,)h
+13(this)h
+13(can)h
+13(b)h
+1(e)h
+14(done)h
+14(using)h
+13(an)h
+323(.)h
+17(An)h
+14(additiv)h
+-1(e)h
+12(macro)h
+12(is)h
+13(iden)h
+-1(tical)h
+13(to)h
+177 728(an)s
+14(ordinary)h
+13(macro)h
+13(except)h
+15(that)h
+228 839(1.)s
+20(It)h
+14(has)h
+71(instead)h
+15(of)h
+57(.)h
+228 920(2.)s
+20(It)h
+13(can)h
+13(b)h
+1(e)h
+13(de\014ned)h
+14(in)h
+12(one)h
+13(or)h
+12(more)h
+12(parts)h
+13(throughout)h
+13(the)h
+13(input)h
+13(\014le.)h
+17(The)h
+13(de\014nition)h
+13(of)h
+12(the)h
+13(macro)h
+281 970(is)s
+14(the)h
+14(concatenation)h
+14(of)h
+14(all)h
+12(the)h
+15(parts)h
+14(in)h
+14(the)h
+14(order)h
+15(in)h
+13(whic)h
+-1(h)h
+14(they)h
+14(app)h
+1(ear.)h
+177 1080(The)s
+13(follo)h
+-1(wi)h
+-1(ng)h
+10(example)h
+10(sho)h
+-1(ws)h
+13(ho)h
+-1(w)h
+11(additiv)h
+-1(e)h
+11(macros)h
+11(can)h
+12(b)h
+1(e)h
+13(used)h
+13(to)h
+12(scatter)h
+13(and)h
+12(regroup)h
+12(informati)h
+-1(on,)h
+177 1130(in)s
+16(this)h
+17(case)h
+17(assisting)h
+17(in)h
+16(the)h
+17(lucid)h
+16(construction)h
+17(of)h
+16(a)h
+16(data)h
+16(abstraction)h
+17(in)h
+16(a)h
+16(language)h
+16(\(P)h
+-1(ascal\))h
+17(that)h
+177 1180(do)s
+1(es)h
+15(not)h
+14(supp)h
+1(ort)h
+14(them)h
+13(explicitly)h
+-3(.)h
+1042 2940(26)s
+27 @eop
+28 @bop0
+28 @bop1
+cmtt10.300 sf
+177 42(@$@<Types@>+=)s
+-1(@{@-)h
+177 91(type)s
+21(complex_type)h
+19(=)h
+22(record)h
+21(r,i)h
+21(:)h
+21(real;)h
+21(end;)h
+177 141(@})s
+177 241(@$@<Procedure)s
+-1(s@>+=)h
+-1(@{@-)h
+177 291(procedure)s
+20(cm_set)h
+21(\(var)h
+21(c:)h
+21(complex_type;)h
+19(a,b:)h
+21(real\))h
+195({Body)h
+21(of)h
+21(cm_set})h
+177 340(procedure)s
+20(cm_add)h
+21(\(a,b:)h
+20(complex_type;)h
+20(var)h
+21(c:)h
+21(complex_type\))h
+19({Body)h
+21(of)h
+21(cm_add})h
+177 390({Other)s
+21(procedures)h
+19(and)h
+22(functions})h
+177 440(@})s
+177 540(@!***********)s
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(****)h
+177 639({...more)s
+20(pieces)h
+21(of)h
+21(program...})h
+177 739(@!***********)s
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(****)h
+177 1540(@!***********)s
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(****)h
+177 1639(@O@<prog.pas@)s
+-1(>==@{)h
+-1(@-)h
+177 1689(program)s
+21(adt\(input,)h
+-1(outpu)h
+-1(t\);)h
+177 1739(@<Types@>)s
+177 1789(@<Variables@>)s
+177 1838(@<Procedures@)s
+-1(>)h
+177 1888(begin)s
+21(startproc;)h
+20(end.)h
+177 1938(@})s
+177 2038(@$@<Types@>==)s
+-1(@{@-)h
+177 2087(@<Buffer)s
+20(type@>)h
+177 2137(@<Complex)s
+20(type@>)h
+177 2187(@})s
+177 2287(@$@<Variables)s
+-1(@>==@)h
+-1({@-)h
+177 2337(@<Buffer)s
+20(variable@>)h
+177 2386(@})s
+177 2486(@$@<Procedure)s
+-1(s@>==)h
+-1(@{@-)h
+177 2536(@<Buffer)s
+20(procedures@>)h
+177 2586(@<Complex)s
+20(procedures@>)h
+177 2635(@})s
+177 2735(@!***********)s
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(****)h
+177 2835(@$@<Buffer)s
+20(type@>==@{@-)h
+cmr10.300 sf
+177 853(It)s
+18(is)h
+17(imp)h
+1(ortan)h
+-1(t)h
+16(to)h
+17(remem)h
+-1(b)h
+1(er)h
+17(that)h
+17(the)h
+18(de\014nition)h
+17(of)h
+17(eac)h
+-1(h)h
+18(macro)h
+16(do)h
+1(es)h
+19(not)h
+17(c)h
+-1(hange)h
+18(throughout)h
+17(the)h
+177 903(input)s
+13(\014le.)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+13(parses)h
+15(the)h
+14(en)h
+-1(tire)h
+14(input)h
+13(\014le)h
+14(and)h
+13(assem)h
+-1(bles)h
+13(all)h
+12(the)h
+14(macro)h
+13(de\014nitions)h
+13(b)h
+1(efore)h
+14(it)h
+177 953(ev)s
+-1(en)h
+15(starts)h
+15(to)h
+14(expand)h
+15(macros.)h
+18(As)h
+15(a)h
+14(result,)h
+15(eac)h
+-1(h)h
+14(additiv)h
+-1(e)h
+14(macro)h
+13(can)h
+14(only)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(one)h
+14(de\014nition,)h
+14(and)h
+177 1003(that)s
+14(de\014nition)h
+14(is)h
+13(the)h
+15(concatenation)h
+14(of)h
+13(all)h
+13(its)h
+14(parts.)h
+177 1077(The)s
+19(example)h
+16(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+18(sho)h
+-1(ws)h
+18(ho)h
+-1(w)h
+18(additiv)h
+-1(e)h
+17(macros)h
+17(can)h
+18(b)h
+1(e)h
+19(used)h
+19(to)h
+17(rearrange)h
+19(the)h
+19(presen)h
+-1(tation)h
+19(of)h
+17(a)h
+177 1126(computer)s
+18(program)h
+16(in)h
+18(the)h
+18(order)h
+19(in)h
+17(whic)h
+-1(h)h
+18(the)h
+18(user)h
+19(wishes)h
+19(to)h
+18(discuss)h
+19(it)h
+17(rather)h
+19(than)h
+18(the)h
+19(order)h
+18(in)h
+177 1176(whic)s
+-1(h)h
+19(the)h
+20(compil)h
+-1(er)h
+18(requires)h
+20(that)h
+19(it)h
+19(b)h
+1(e)h
+19(consumed.)h
+33(It)h
+19(is)h
+19(easy)h
+-3(,)h
+20(ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+20(to)h
+19(abuse)h
+19(the)h
+20(feature)h
+19(of)h
+177 1226(additiv)s
+-1(e)h
+15(macros.)h
+24(In)h
+15(man)h
+-1(y)h
+14(cases,)h
+18(the)h
+16(same)h
+15(e\013ect)h
+18(can)h
+16(b)h
+1(e)h
+17(obtained)h
+15(more)h
+15(clearly)h
+16(b)h
+-1(y)h
+16(replacing)h
+15(eac)h
+-1(h)h
+177 1276(part)s
+12(of)h
+10(an)h
+11(additiv)h
+-1(e)h
+11(macro)h
+10(in-situ)h
+11(using)h
+11(uniquely)h
+10(named)h
+10(non-additiv)h
+-1(e)h
+11(macros,)h
+10(and)h
+11(then)h
+12(collect)h
+12(them)h
+177 1326(together)s
+15(as)h
+13(a)h
+14(group)h
+13(at)h
+14(the)h
+14(p)h
+1(oin)h
+-1(t)h
+13(where)h
+15(the)h
+14(additiv)h
+-1(e)h
+13(macro)h
+12(is)h
+13(called.)h
+18(Doing)h
+12(this)h
+14(is)h
+13(more)h
+13(w)h
+-1(ork,)h
+13(and)h
+177 1376(is)s
+15(more)h
+13(error)h
+16(prone,)h
+14(but)h
+15(can)h
+15(result)h
+15(in)h
+14(a)h
+15(clearer)h
+15(exp)h
+1(osition.)h
+20(The)h
+15(follo)h
+-1(wing)h
+12(program)h
+13(illustrates)h
+15(this)h
+177 1425(alternativ)s
+-1(e)h
+14(approac)h
+-1(h.)h
+1042 2940(27)s
+28 @eop
+29 @bop0
+cmbx12.300 sf
+[<1000201E01E01FFFC01FFF801FFF001FFE001FF8001BC0001800001800001800001800
+0019FC001FFF001E0FC01807E01803E00003F00003F00003F80003F83803F87C03F8FE03
+F8FE03F8FC03F0FC03F07007E03007C01C1F800FFF0003F800>
+24 32 -3 31 28] 53 dc
+[<FFFFFF00FFFFFFE007F007F007F001FC07F000FC07F0007E07F0007E07F0007F07F000
+7F07F0007F07F0007F07F0007F07F0007E07F0007E07F000FC07F001FC07F007F007FFFF
+E007FFFF0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
+0007F0000007F0000007F0000007F0000007F00000FFFF8000FFFF8000>
+32 34 -2 33 38] 80 dc
+[<7FFFF07FFFF07C03E07007C0600FC0E01F80C01F00C03E00C07E0000FC0000F80001F0
+0003F03007E03007C0300F80701F80703F00603E00E07C03E0FFFFE0FFFFE0>
+24 22 -2 21 25] 122 dc
+cmtt10.300 sf
+[<07E0001FF8007FFE00783F00F00F00F00780F00380F003800003800003800007800007
+00000F00001E00003C0000780000F00003E0000780000F00001E03803C03807FFF80FFFF
+807FFF80>
+24 25 -2 24 22] 50 dc
+[<007C0000FC0000DC0001DC00039C00039C00071C000F1C000E1C001E1C003C1C00381C
+00781C00F01C00FFFFE0FFFFE0FFFFE0001C00001C00001C00001C00001C0001FFC001FF
+C001FFC0>
+24 25 -1 24 22] 52 dc
+[<E00000FFFF80FFFF80FFFF80E00F00E01E00001C0000380000780000700000E00000E0
+0001C00001C00001C0000380000380000380000380000700000700000700000700000700
+00070000070000>
+24 26 -2 25 22] 55 dc
+29 @bop1
+cmbx12.300 sf
+177 2155(1.6.5)s
+55(P)h
+-2(arameterized)h
+17(Macros)h
+cmtt10.300 sf
+177 42(type)s
+21(buffer_type)h
+20(=)h
+21(record)h
+591 91(length)s
+21(:)h
+21(integer;)h
+591 141(buf)s
+21(:)h
+22(array[1..100])h
+19(of)h
+21(char;)h
+591 191(end;)s
+177 241(@})s
+177 340(@$@<Buffer)s
+20(variable@>==)h
+-1(@{@-)h
+177 390(bigbuf)s
+21(:)h
+21(buffer_type;)h
+177 440(@})s
+177 540(@$@<Buffer)s
+20(procedures@>)h
+-1(==@{@)h
+-1(-)h
+177 589(procedure)s
+20(buf_init\(var)h
+19(b)h
+22(:)h
+22(buffer_type)h
+-1(\))h
+20({Body)h
+21(of)h
+21(buf_init})h
+177 639(procedure)s
+20(buf_add\(var)h
+20(b)h
+21(:)h
+22(buffer_type;)h
+19(ch)h
+21(:)h
+22(char\))h
+21({Body)h
+21(of)h
+21(buf_add})h
+177 689(procedure)s
+20(buf_get\(var)h
+20(b)h
+21(:)h
+22(buffer_type;)h
+19(var)h
+21(ch)h
+22(:)h
+21(char\))h
+21({Body)h
+21(of)h
+21(buf_get})h
+177 739(@})s
+177 839(@!***********)s
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(****)h
+177 938(@$@<Complex)s
+20(type@>==@{@)h
+-1(-)h
+177 988(type)s
+21(complex_type)h
+19(=)h
+22(record)h
+21(r,i)h
+21(:)h
+21(real;)h
+21(end;)h
+177 1038(@})s
+177 1137(@$@<Complex)s
+20(procedures@)h
+-1(>+=@{)h
+-1(@-)h
+177 1187(procedure)s
+20(cm_set\(var)h
+20(c:)h
+21(complex_type;)h
+19(a,b)h
+21(:)h
+22(real\))h
+43({Body)h
+20(of)h
+22(cm_set})h
+177 1237(procedure)s
+20(cm_add\(a,b)h
+20(:)h
+21(complex_type;)h
+20(var)h
+21(c:)h
+21(complex_type\))h
+19({Body)h
+21(of)h
+21(cm_add})h
+177 1287({Other)s
+21(procedures)h
+19(and)h
+22(functions})h
+177 1337(@})s
+177 1436(@!***********)s
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(****)h
+177 1536({...more)s
+20(pieces)h
+21(of)h
+21(program...})h
+177 1636(@!***********)s
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(****)h
+1049 1917(@Z)s
+97(@M)h
+656 2354(@1)s
+25(@2)h
+25(@3)h
+25(@4)h
+25(@5)h
+25(@6)h
+25(@7)h
+25(@8)h
+106(@9)h
+1578 2476(@1)s
+48(@9)h
+177 2735(@$@<While)s
+20(loop@>@\(@3@\)@)h
+-1(M==@{)h
+-1(@-)h
+177 2785(@1)s
+177 2835(while)s
+21(\(@2\))h
+cmr10.300 sf
+177 1745(One)s
+16(of)h
+14(adv)h
+-2(an)h
+-1(tages)h
+14(of)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(\(and)h
+15(literate)h
+15(programm)h
+-1(i)h
+-1(ng)h
+13(in)h
+14(general\))h
+15(is)h
+15(that)h
+14(\(as)h
+15(sho)h
+-1(wn)h
+15(ab)h
+1(o)h
+-1(v)h
+-1(e\))h
+177 1794(it)s
+12(allo)h
+-1(ws)h
+11(the)h
+13(user)h
+13(to)h
+12(la)h
+-1(y)h
+11(out)h
+12(the)h
+13(program)h
+11(in)h
+11(whatev)h
+-1(er)h
+13(order)h
+13(is)h
+12(desired)h
+14(with)h
+11(near)h
+13(total)h
+12(indep)h
+1(endence)h
+177 1844(from)s
+12(the)h
+15(ordering)h
+14(requiremen)h
+-1(ts)h
+14(of)h
+13(the)h
+15(target)h
+14(programm)h
+-1(ing)h
+11(language.)h
+177 1917(Additiv)s
+-1(e)h
+15(macros)h
+14(are)h
+15(allo)h
+-1(w)h
+-1(ed)h
+14(to)h
+15(b)h
+1(e)h
+16(tagged)h
+15(with)h
+73(and)h
+74(just)h
+15(as)h
+15(other)h
+16(macros)h
+14(can,)h
+15(but)h
+15(the)h
+16(tags)h
+177 1967(m)s
+-1(ust)h
+9(app)h
+1(ear)h
+11(only)h
+9(on)h
+10(the)h
+11(\014rst)h
+11(de\014nition)h
+10(of)h
+10(the)h
+10(macro.)h
+16(Additiv)h
+-1(e)h
+10(macros)h
+9(cannot)h
+11(b)h
+1(e)h
+10(connected)h
+12(directly)h
+177 2017(to)s
+14(pro)h
+1(duct)h
+15(\014les.)h
+177 2254(No)s
+13(self-resp)h
+1(ecting)h
+15(macro)h
+12(prepro)h
+1(cessor)h
+16(w)h
+-1(ould)h
+12(b)h
+1(e)h
+14(complete)h
+12(without)h
+13(some)h
+12(form)h
+12(of)h
+12(macro)h
+12(parameter-)h
+177 2304(ization,)s
+13(and)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(is)h
+14(no)h
+14(exception.)h
+20(F)h
+-3(unnelW)h
+-3(eb)h
+14(allo)h
+-1(ws)h
+13(eac)h
+-1(h)h
+15(macro)h
+13(to)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(from)h
+12(zero)h
+16(to)h
+14(nine)h
+177 2354(formal)s
+12(parameters)h
+14(named)h
+56(,)h
+57(,)h
+57(,)h
+57(,)h
+57(,)h
+57(,)h
+57(,)h
+57(,)h
+13(and)h
+58(.)h
+177 2427(T)s
+-3(o)h
+11(de\014ne)h
+13(a)h
+12(macro)h
+11(with)h
+12(one)h
+12(or)h
+12(more)h
+11(parameters,)h
+12(insert)h
+12(a)h
+12(formal)h
+10(parameter)h
+11(list)h
+12(just)h
+12(after)h
+12(the)h
+13(macro)h
+177 2476(name)s
+13(in)h
+14(the)h
+15(macro)h
+14(de\014nition.)h
+19(Because)h
+16(macro)h
+14(parameters)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(\014xed)h
+15(names)h
+14(\()h
+44(.)h
+7(.)h
+7(.)h
+42(\),)h
+14(there)h
+16(is)h
+14(no)h
+177 2526(need)s
+19(to)h
+17(sp)h
+1(ecify)h
+18(the)h
+18(names)h
+16(of)h
+17(formal)h
+15(parameters)h
+18(in)h
+17(the)h
+18(formal)h
+15(parameter)h
+17(list.)h
+28(All)h
+16(that)h
+18(need)h
+18(b)h
+1(e)h
+177 2576(con)s
+-1(v)h
+-1(ey)h
+-1(ed)h
+14(is)h
+14(ho)h
+-1(w)h
+13(man)h
+-1(y)h
+12(parameters)h
+14(the)h
+14(macro)h
+12(has.)h
+19(Here)h
+15(is)h
+13(an)h
+14(example)h
+12(of)h
+13(the)h
+14(de\014nition)h
+14(of)h
+13(a)h
+13(macro)h
+177 2626(ha)s
+-1(ving)h
+13(three)h
+15(parameters:)h
+1042 2940(28)s
+29 @eop
+30 @bop0
+cmmi10.300 sf
+[<0003F800000E0E000038038000E001C001C001C0038000E0070000E00F0000F01E0000
+F01C0000F03C0000F03C0000F0780000F0780000F0780000F0F00001E0F00001E0F00001
+E0F00003C0F00003C0F0000780F0000780F0000F0070000E0070001C00380038003C0070
+001C01C0000707800001FC0000>
+32 30 -2 28 32] 79 dc
+[<381F004E61804681C04701C08F01C08E01C00E01C00E01C01C03801C03801C03801C07
+00380710380710380E10380E20700640300380>
+24 18 -2 17 25] 110 dc
+cmtt10.300 sf
+[<07C7001FF7003FFF007C3F00781F00F00F00F00700E00700E00700E00700E00700F007
+00F00F00781F007C3F003FFF001FF70007C7000007000007000007000007000007000007
+00003FE0007FF0003FE0>
+24 27 -2 17 22] 113 dc
+[<3801807C0380FE0380FE0700EE0700EE0E00EE0E00EE0E00FE1C00FE1C007C38003838
+0000700000700000700000E00000E00001C00001C00001C0000380000383800707C0070F
+E00E0EE00E0EE00E0EE01C0EE01C0EE0380FE03807C0180380>
+24 32 -1 28 22] 37 dc
+30 @bop1
+cmr7.300 sf
+444 1754(2)s
+cmmi10.300 sf
+1279 1719(O)s
+17(n)h
+370 1769(O)s
+17(n)h
+320(n)h
+cmti10.300 sf
+1784 410(sep)s
+-2(ar)h
+-2(ate)h
+-2(d)h
+cmr10.300 sf
+177 310(T)s
+-3(o)h
+11(call)h
+11(a)h
+11(parameterized)h
+12(macro,)h
+10(an)h
+12(actual)h
+11(parameter)h
+11(list)h
+12(m)h
+-1(ust)h
+10(b)h
+1(e)h
+12(supplied)h
+12(that)h
+12(con)h
+-1(tains)h
+11(exactly)h
+12(the)h
+177 360(same)s
+15(n)h
+-1(um)h
+-1(b)h
+1(er)h
+15(of)h
+14(actual)h
+16(parameters)h
+15(as)h
+16(there)h
+16(are)h
+16(formal)h
+13(parameters)h
+16(in)h
+15(the)h
+16(de\014nition)h
+15(of)h
+15(the)h
+16(macro)h
+177 410(b)s
+1(eing)h
+17(called.)h
+26(An)h
+16(actual)h
+17(parameter)h
+16(list)h
+16(is)h
+17(delimi)h
+-1(ted)h
+15(b)h
+-1(y)h
+77(and)h
+60(,)h
+17(and)h
+16(parameters)h
+17(are)h
+177 459(b)s
+-1(y)h
+13(\\)h
+44(".)h
+17(The)h
+13(actual)h
+13(parameters)h
+13(themselv)h
+-1(es)h
+14(are)h
+13(general)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+12(expressions)h
+15(\(see)h
+14(Chapter)h
+14(3)h
+13(for)h
+177 509(the)s
+13(exact)h
+13(syn)h
+-1(tax\))h
+12(and)h
+13(can)h
+12(b)h
+1(e)h
+13(inserted)h
+14(in)h
+-1(to)h
+11(the)h
+13(list)h
+12(directly)h
+12(or)h
+13(can)h
+12(b)h
+1(e)h
+13(delimited)h
+11(b)h
+-1(y)h
+68(so)h
+12(as)h
+12(to)h
+12(allo)h
+-1(w)h
+177 559(some)s
+15(white)h
+15(space)h
+16(to)h
+15(assist)h
+16(in)h
+15(formatting)h
+13(the)h
+16(actual)h
+14(parameters.)h
+23(Here)h
+16(are)h
+16(some)h
+14(examples)h
+15(of)h
+14(calls)h
+177 609(of)s
+13(the)h
+247(macro)h
+12(de\014ned)h
+15(ab)h
+1(o)h
+-1(v)h
+-1(e.)h
+177 1494(A)s
+19(few)h
+19(rules)h
+19(ab)h
+1(out)h
+18(parameterized)h
+19(macros)h
+18(are)h
+19(w)h
+-1(orth)h
+19(men)h
+-1(tioning.)h
+30(Macros)h
+19(that)h
+19(do)h
+18(not)h
+19(ha)h
+-1(v)h
+-1(e)h
+18(an)h
+-1(y)h
+177 1544(parameters)s
+14(m)h
+-1(ust)h
+13(ha)h
+-1(v)h
+-1(e)h
+13(no)h
+14(formal)h
+11(or)h
+14(actual)h
+14(parameter)h
+13(lists.)h
+18(Additiv)h
+-1(e)h
+14(macros)h
+13(can)h
+14(ha)h
+-1(v)h
+-1(e)h
+13(parameters,)h
+177 1594(but)s
+14(the)h
+15(formal)h
+11(parameter)h
+14(list)h
+13(m)h
+-1(ust)h
+13(app)h
+1(ear)h
+14(in)h
+14(the)h
+14(\014rst)h
+15(de\014nition)h
+13(part)h
+14(only)h
+-3(.)h
+177 1670(Here)s
+18(is)h
+17(another)h
+17(example)h
+15(of)h
+16(the)h
+17(use)h
+18(of)h
+16(parameterized)h
+16(macros.)h
+26(This)h
+16(time,)h
+16(parameters)h
+17(and)h
+16(macro)h
+177 1719(calls)s
+16(are)h
+16(used)h
+16(in)h
+16(a)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(input)h
+16(\014le)h
+16(that)h
+16(constructs)h
+17(an)h
+49(\()h
+25(\))h
+16(represen)h
+-1(tation)h
+17(of)h
+15(a)h
+16(song)h
+15(whose)h
+177 1769(full)s
+13(size)h
+14(is)h
+47(\()h
+44(\))h
+14(in)h
+13(the)h
+15(n)h
+-1(um)h
+-1(b)h
+1(er)h
+52(of)h
+13(unique)h
+14(lines.)h
+1042 2940(29)s
+cmtt10.300 sf
+221 42({)s
+243 91(@3)s
+221 141(})s
+177 191(@})s
+1195 410(@\()s
+99(@\))h
+255 459(@,)s
+1652 509(@")s
+296 609(While)s
+21(loop)h
+177 728(@!)s
+22(First)h
+20(form)h
+21(of)h
+22(actual)h
+20(parameters)h
+20(without)h
+20(whitespace)h
+20(and)h
+21(double)h
+21(quotes.)h
+177 778(@<While)s
+21(loop@>@\(x=)h
+-1(1;@,x)h
+-1(<=10@)h
+-1(,prin)h
+-1(tf\("X)h
+-1(=%u\\)h
+-1(n",x\))h
+-1(;@\))h
+177 877(@!)s
+22(Second)h
+20(form)h
+21(of)h
+21(actual)h
+21(parameters.)h
+20(The)h
+21(double)h
+20(quotes)h
+21(allow)h
+21(non-active)h
+177 927(@!)s
+22(whitespace)h
+19(that)h
+21(helps)h
+21(to)h
+21(lay)h
+22(out)h
+21(the)h
+21(actual)h
+20(parameters)h
+20(neatly.)h
+177 977(@!)s
+22(This)h
+21(call)h
+20(is)h
+22(functionally)h
+19(identical)h
+20(to)h
+21(the)h
+22(one)h
+21(above.)h
+177 1027(@<While)s
+21(loop@>@\()h
+243 1076(@"x:=1;@")s
+19(@,)h
+243 1126(@"x<=10@")s
+19(@,)h
+243 1176(@"printf\(")s
+-1(X=%u\\)h
+-1(n",x\))h
+-1(;@")h
+20(@\))h
+177 1276(@!)s
+22(The)h
+21(two)h
+21(forms)h
+21(can)h
+21(be)h
+21(mixed)h
+21(in)h
+21(a)h
+22(single)h
+20(call.)h
+177 1325(@<While)s
+21(loop@>@\(x=)h
+-1(1;@,x)h
+-1(<=10@)h
+-1(,)h
+482 1375(@"printf\("X=%u)s
+-1(\\n",x)h
+-1(\);@")h
+19(@\))h
+177 1938(@O@<Twelve_bu)s
+-1(gs.tx)h
+-1(t@>==)h
+-1(@{@-)h
+177 1988(The)s
+21(Twelve)h
+21(Bugs)h
+21(of)h
+21(Christmas)h
+177 2038(-------------)s
+-1(-----)h
+-1(-----)h
+-1(-----)h
+177 2087(@<Verse@>@\(@")s
+-1(first)h
+-1(@")h
+85(@,@<1@>@\))h
+177 2137(@<Verse@>@\(@")s
+-1(secon)h
+-1(d@")h
+63(@,@<2@>@\))h
+177 2187(@<Verse@>@\(@")s
+-1(third)h
+-1(@")h
+85(@,@<3@>@\))h
+177 2237(@<Verse@>@\(@")s
+-1(fourt)h
+-1(h@")h
+63(@,@<4@>@\))h
+177 2287(@<Verse@>@\(@")s
+-1(fifth)h
+-1(@")h
+85(@,@<5@>@\))h
+177 2337(@<Verse@>@\(@")s
+-1(sixth)h
+-1(@")h
+85(@,@<6@>@\))h
+177 2386(@<Verse@>@\(@")s
+-1(seven)h
+-1(th@")h
+41(@,@<7@>@\))h
+177 2436(@<Verse@>@\(@")s
+-1(eight)h
+-1(h@")h
+63(@,@<8@>@\))h
+177 2486(@<Verse@>@\(@")s
+-1(ninth)h
+-1(@")h
+85(@,@<9@>@\))h
+177 2536(@<Verse@>@\(@")s
+-1(tenth)h
+-1(@")h
+85(@,@<A@>@\))h
+177 2586(@<Verse@>@\(@")s
+-1(eleve)h
+-1(nth@")h
+19(@,@<B@>@\))h
+177 2635(@<Verse@>@\(@")s
+-1(twelf)h
+-1(th@")h
+41(@,@<C@>@\))h
+177 2735(This)s
+21(song)h
+21(appeared)h
+20(in)h
+22(the)h
+21(internet)h
+20(newsgroup)h
+20(rec.humor.fu)h
+-1(nny)h
+20(on)h
+21(24-Dec-1991.)h
+177 2785(It)s
+22(was)h
+21(contributed)h
+19(by)h
+22(Pat)h
+21(Scannell)h
+20(\(scannell@@d)h
+-1(arkst)h
+-1(ar.ma)h
+-1(30.bu)h
+-1(ll.co)h
+-1(m\).)h
+177 2835(@})s
+30 @eop
+31 @bop0
+cmbx12.300 sf
+[<FFFFFFFCFFFFFFFC07F000FC07F0003C07F0001C07F0000C07F0000E07F0000E07F000
+0607F0180607F0180607F0180607F0180007F0380007F0780007FFF80007FFF80007F078
+0007F0380007F0180007F0180007F0180307F0180307F0000307F0000607F0000607F000
+0607F0000E07F0000E07F0001E07F0003E07F001FCFFFFFFFCFFFFFFFC>
+32 34 -2 33 37] 69 dc
+[<FFE07FC0FFE07FC00F801C0007C0380003E0700003F0600001F8C00000F98000007F80
+00003F0000001F0000001F8000003FC0000037C0000063E00000C1F00001C0F8000380FC
+0007007E000E003E00FF80FFE0FF80FFE0>
+32 22 -1 21 30] 120 dc
+[<6000007800007FFFFE7FFFFE7FFFFC7FFFF87FFFF87FFFF0E00060E000C0C00180C003
+00C00300000600000C00001C0000180000380000780000780000F00000F00000F00001F0
+0001F00001F00003F00003F00003F00003F00003F00003F00003F00001E000>
+24 34 -3 33 28] 55 dc
+[<FFFFFFF8FFFFFFF807F001F807F0007807F0003807F0001807F0001C07F0001C07F000
+0C07F0000C07F0180C07F0180C07F0180007F0180007F0380007F0780007FFF80007FFF8
+0007F0780007F0380007F0180007F0180007F0180007F0180007F0000007F0000007F000
+0007F0000007F0000007F0000007F0000007F00000FFFFE000FFFFE000>
+32 34 -2 33 35] 70 dc
+cmtt10.300 sf
+[<1FFC003FFE007FFF00780F00F00780E00380E00380E00380E00380E00380E00380E003
+80E00380E00380E00380E00380E00380E00380E0E380E1E380F0F780787F007FFF003FFE
+001FFC00001C00001E00000E00000F00000700000700>
+24 31 -2 24 22] 81 dc
+31 @bop1
+cmti10.300 sf
+1786 1550(input)s
+cmbx12.300 sf
+177 1028(1.6.6)s
+55(Macro)h
+19(Expansion)h
+177 2373(1.6.7)s
+55(Include)h
+18(Files)h
+cmtt10.300 sf
+177 91(@$@<Verse@>@\()s
+-1(@2@\)@)h
+-1(M==@{)h
+-1(@-)h
+177 141(For)s
+21(the)h
+22(@1)h
+21(bug)h
+21(of)h
+21(Christmas,)h
+20(my)h
+22(manager)h
+20(said)h
+21(to)h
+21(me)h
+286 191(@2)s
+177 241(@})s
+177 340(@$@<1@>@M==@{)s
+-1(See)h
+20(if)h
+21(they)h
+21(can)h
+21(do)h
+22(it)h
+21(again.@})h
+177 390(@$@<2@>@M==@{)s
+-1(Ask)h
+20(them)h
+21(how)h
+21(they)h
+21(did)h
+21(it)h
+21(and@+@<1@>@})h
+177 440(@$@<3@>@M==@{)s
+-1(Try)h
+20(to)h
+21(reproduce)h
+20(it@+@<2@>@})h
+177 490(@$@<4@>@M==@{)s
+-1(Run)h
+20(with)h
+21(the)h
+21(debugger@+@<)h
+-1(3@>@)h
+-1(})h
+177 540(@$@<5@>@M==@{)s
+-1(Ask)h
+20(for)h
+21(a)h
+21(dump@+@<4@>@})h
+177 589(@$@<6@>@M==@{)s
+-1(Reins)h
+-1(tall)h
+19(the)h
+22(software@+@)h
+-1(<5@>)h
+-1(@})h
+177 639(@$@<7@>@M==@{)s
+-1(Say)h
+20(they)h
+21(need)h
+21(an)h
+21(upgrade@+@<6)h
+-1(@>@})h
+177 689(@$@<8@>@M==@{)s
+-1(Find)h
+19(a)h
+22(way)h
+21(around)h
+21(it@+@<7@>@})h
+177 739(@$@<9@>@M==@{)s
+-1(Blame)h
+19(it)h
+22(on)h
+21(the)h
+21(hardware@+@<8)h
+-1(@>@})h
+177 789(@$@<A@>@M==@{)s
+-1(Chang)h
+-1(e)h
+20(the)h
+21(documentation@)h
+-1(+@<9)h
+-1(@>@})h
+177 839(@$@<B@>@M==@{)s
+-1(Say)h
+20(it's)h
+21(not)h
+21(supported@+@)h
+-1(<A@>)h
+-1(@})h
+177 888(@$@<C@>@M==@{)s
+-1(Tell)h
+19(them)h
+21(it's)h
+21(a)h
+22(feature@+@<B)h
+-1(@>@})h
+177 1786(@!)s
+22(FunnelWeb)h
+19(copes)h
+21(well)h
+21(with)h
+21(the)h
+21(following)h
+20(macro)h
+21(definitions.)h
+177 1835(@!)s
+22(\(Providing)h
+19(that)h
+21(it)h
+22(has)h
+21(a)h
+21(little)h
+21(over)h
+21(ten)h
+21(megabytes)h
+20(of)h
+21(memory\).)h
+177 1935(@O@<woppa.txt)s
+-1(@>==@)h
+-1({@<Qu)h
+-1(ote@>)h
+-1(@\(@<H)h
+-1(umung)h
+-1(eous)h
+-1(@>@\)@)h
+-1(+@})h
+177 2035(@$@<Quote@>@\()s
+-1(@1@\)=)h
+-1(=@{"@)h
+-1(1"@})h
+177 2134(@$@<Humungeou)s
+-1(s@>==)h
+-1(@{@-)h
+177 2184(...Ten)s
+21(Megabytes)h
+20(of)h
+21(Text...)h
+177 2234(@})s
+1520 2523(@i)s
+952 2673(camera.txt)s
+177 2785('Cos)s
+21(I)h
+22(shoot)h
+20(with)h
+21(a)h
+22(camera)h
+21(instead)h
+20(of)h
+21(a)h
+22(gun.)h
+177 2835(The)s
+21(animals)h
+21(flock)h
+20(to)h
+22(be)h
+21(petted)h
+21(and)h
+21(fed,)h
+cmr10.300 sf
+177 1128(One)s
+19(of)h
+18(the)h
+18(strengths)h
+20(of)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+18(is)h
+18(that,)h
+19(when)h
+18(writing)h
+18(pro)h
+1(duct)h
+19(\014les,)h
+19(it)h
+18(do)h
+1(es)h
+19(not)h
+18(attempt)h
+17(to)h
+177 1178(ev)s
+-2(aluate)h
+17(an)h
+-1(y)h
+16(text)h
+17(expression)h
+18(\(e.g.)h
+16(text)h
+17(blo)h
+1(c)h
+-1(k,)h
+17(parameter,)h
+17(macro)h
+15(call\))h
+16(in)h
+16(memory)h
+15(and)h
+16(then)h
+17(write)h
+177 1228(the)s
+16(result)h
+15(out.)h
+22(Instead,)h
+15(it)h
+15(alw)h
+-1(a)h
+-1(ys)h
+14(writes)h
+15(out)h
+15(what)h
+15(it)h
+15(is)h
+14(expanding)h
+15(dynamicall)h
+-1(y)h
+13(and)h
+15(directly)h
+-3(.)h
+21(This)h
+177 1277(means)s
+13(that)h
+14(the)h
+15(user)h
+14(need)h
+15(not)h
+14(fear)h
+14(de\014ning)h
+14(macros)h
+13(that)h
+14(expand)h
+14(to)h
+13(h)h
+-1(uge)h
+14(amoun)h
+-1(ts)h
+13(of)h
+13(text)h
+14(and)h
+14(then)h
+177 1327(calling)s
+11(those)h
+13(macros)h
+11(in)h
+11(other)h
+13(macros,)h
+11(or)h
+12(passing)h
+12(those)h
+13(h)h
+-1(uge)h
+12(macros)h
+11(as)h
+12(parameters)h
+13(to)h
+11(other)h
+13(macros.)h
+177 1377(In)s
+12(all)h
+10(cases,)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(expands)h
+12(directly)h
+12(to)h
+11(the)h
+12(pro)h
+1(duct)h
+12(\014le,)h
+12(and)h
+11(there)h
+13(can)h
+11(b)h
+1(e)h
+12(no)h
+11(danger)h
+12(in)h
+11(running)h
+177 1427(out)s
+13(of)h
+12(memory)h
+11(during)h
+13(expansion)h
+12(\(except)h
+15(for)h
+13(running)h
+12(out)h
+13(of)h
+12(stac)h
+-1(k)h
+14(space)h
+14(and)h
+13(other)h
+13(marginall)h
+-1(y)h
+11(used)h
+177 1477(resources)s
+16(in)h
+14(pathological)h
+12(cases\).)h
+177 1550(The)s
+17(only)h
+15(thing)h
+16(to)h
+15(remem)h
+-1(b)h
+1(er)h
+16(in)h
+15(this)h
+16(regard)h
+17(is)h
+16(that)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+16(alw)h
+-1(a)h
+-1(ys)h
+15(stores)h
+17(the)h
+17(en)h
+-1(tire)h
+126(\014le)h
+177 1600(and)s
+14(all)h
+13(included)h
+14(\014les,)h
+13(in)h
+14(their)h
+14(en)h
+-1(tiret)h
+-1(y)h
+15(in)h
+13(memo)h
+-1(ry)h
+-3(,)h
+11(for)h
+14(the)h
+14(duration)h
+14(of)h
+13(the)h
+15(run.)h
+177 1674(Here)s
+15(is)h
+14(an)h
+14(example,)h
+12(that)h
+14(illustrates)h
+14(ho)h
+-1(w)h
+13(robust)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(is:)h
+177 2474(F)s
+-3(unnelW)h
+-3(eb)h
+20(pro)h
+-1(vides)h
+20(a)h
+20(nested)h
+22(include)h
+20(\014le)h
+21(facilit)h
+-1(y)h
+18(that)h
+20(can)h
+21(b)h
+1(e)h
+21(used)h
+21(for)h
+20(a)h
+20(n)h
+-1(um)h
+-1(b)h
+1(er)h
+19(of)h
+20(purp)h
+1(oses.)h
+177 2523(When)s
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(runs)h
+16(in)h
+-1(to)h
+15(a)h
+16(single)h
+15(line)h
+15(con)h
+-1(taining)h
+14(the)h
+17(sp)h
+1(ecial)h
+15(sequence)h
+77(follo)h
+-1(w)h
+-1(ed)h
+14(b)h
+-1(y)h
+16(a)h
+15(blank,)h
+177 2573(follo)s
+-1(w)h
+-1(ed)h
+10(b)h
+-1(y)h
+10(a)h
+11(\014le)h
+11(name,)h
+10(it)h
+10(reads)h
+12(in)h
+11(the)h
+11(designated)h
+12(\014le)h
+11(and)h
+11(replaces)h
+12(the)h
+12(line)h
+10(con)h
+-1(taining)h
+10(the)h
+12(comm)h
+-1(and)h
+177 2623(\(including)s
+13(the)h
+13(end)h
+14(of)h
+13(line)h
+12(mark)h
+-1(er)h
+13(at)h
+13(the)h
+14(end)h
+13(of)h
+13(the)h
+14(line\))h
+13(with)h
+13(the)h
+13(en)h
+-1(tire)h
+14(con)h
+-1(ten)h
+-1(ts)h
+15(of)h
+12(the)h
+14(designated)h
+177 2673(\014le.)s
+18(F)h
+-3(or)h
+14(example,)h
+12(if)h
+13(there)h
+15(w)h
+-1(as)h
+14(a)h
+13(\014le)h
+14(called)h
+246(con)h
+-1(taining)h
+12(the)h
+15(t)h
+-1(w)h
+-1(o)h
+13(lines:)h
+1042 2940(30)s
+31 @eop
+32 @bop0
+cmtt10.300 sf
+[<07FE07FF07FE0038003800380038003800380038003800380038003800380038003800
+3800386038F038F0707FF07FE01F80>
+16 25 -3 24 22] 74 dc
+32 @bop1
+cmtt10.300 sf
+595 42(poem.fw)s
+177 152(I)s
+22(like)h
+21(to)h
+21(go)h
+21(shooting,)h
+20(it's)h
+21(a)h
+22(whole)h
+21(lot)h
+21(of)h
+21(fun,)h
+177 202(@i)s
+22(camera.txt)h
+177 251(Cos)s
+21(they)h
+21(know)h
+21(my)h
+22(camera)h
+20(isn't)h
+21(loaded)h
+21(with)h
+20(lead.)h
+177 301(-)s
+22(RNW,)h
+21(04-Jan-1991)h
+-1(.)h
+844 412(poem.fw)s
+177 522(I)s
+22(like)h
+21(to)h
+21(go)h
+21(shooting,)h
+20(it's)h
+21(a)h
+22(whole)h
+21(lot)h
+21(of)h
+21(fun,)h
+177 572('Cos)s
+21(I)h
+22(shoot)h
+20(with)h
+21(a)h
+22(camera)h
+21(instead)h
+20(of)h
+21(a)h
+22(gun.)h
+177 621(The)s
+21(animals)h
+21(flock)h
+20(to)h
+22(be)h
+21(petted)h
+21(and)h
+21(fed,)h
+177 671('Cos)s
+21(they)h
+21(know)h
+21(my)h
+21(camera)h
+21(isn't)h
+21(loaded)h
+20(with)h
+21(lead.)h
+177 721(-)s
+22(RNW,)h
+21(04-Jan-1991)h
+-1(.)h
+1518 931(main.fw)s
+177 1041(@O@<output.da)s
+-1(t@>==)h
+-1(@{@-)h
+177 1091(@i)s
+22(inc.fw)h
+177 1141(This)s
+21(is)h
+22(the)h
+21(text)h
+21(of)h
+21(the)h
+21(sloth)h
+21(macro.)h
+177 1191(@})s
+177 1411(@<Sloth@>)s
+177 1461(@})s
+177 1561(@$@<Sloth@>==)s
+-1(@{@-)h
+833 1671(main.fw)s
+177 1781(@O@<output.da)s
+-1(t@>==)h
+-1(@{@-)h
+177 1831(@<Sloth@>)s
+177 1881(@})s
+177 1981(@$@<Sloth@>==)s
+-1(@{@-)h
+177 2030(This)s
+21(is)h
+22(the)h
+21(text)h
+21(of)h
+21(the)h
+21(sloth)h
+21(macro.)h
+177 2080(@})s
+1299 2240(<special>=<news)s
+-1(pecia)h
+-1(l>)h
+772 2413(+I)s
+198 2662(@i)s
+cmr10.300 sf
+177 42(and)s
+14(another)h
+14(\014le)h
+14(called)h
+180(con)h
+-1(taining)h
+13(the)h
+14(follo)h
+-1(wing)h
+12(four)h
+13(lines)h
+177 412(Then,)s
+14(if)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(w)h
+-1(ere)h
+15(to)h
+14(pro)h
+1(cess)h
+170(,)h
+12(the)h
+14(result)h
+15(w)h
+-1(ould)h
+13(b)h
+1(e)h
+14(as)h
+14(if)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(had)h
+13(read)h
+15(in:)h
+177 831(F)s
+-3(unnelW)h
+-3(eb)h
+11(expands)h
+11(include)h
+11(\014les)h
+12(b)h
+1(efore)h
+11(it)h
+11(starts)h
+12(scanning)h
+11(and)h
+11(parsing)h
+10(the)h
+12(included)h
+11(text.)h
+18(The)h
+11(result)h
+177 881(is)s
+17(that)h
+16(include)h
+17(\014les)h
+17(can)h
+17(con)h
+-1(tain)h
+16(an)h
+-1(ything)h
+16(that)h
+16(can)h
+17(b)h
+1(e)h
+17(found)h
+17(in)h
+16(a)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+16(\014le.)h
+26(The)h
+17(follo)h
+-1(wing)h
+177 931(example)s
+13(illustrates)h
+14(the)h
+14(lev)h
+-1(el)h
+14(at)h
+14(whic)h
+-1(h)h
+13(the)h
+15(include)h
+14(mec)h
+-1(hanism)h
+11(op)h
+1(erates.)h
+20(If)h
+180(con)h
+-1(tains)h
+177 1301(and)s
+14(inc.fw)h
+13(con)h
+-1(tains)h
+177 1671(Then)s
+15(if)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(w)h
+-1(ere)h
+15(applied)h
+13(to)h
+168(,)h
+12(it)h
+13(w)h
+-1(ould)h
+13(see:)h
+177 2190(whic)s
+-1(h)h
+17(it)h
+17(w)h
+-1(ould)h
+16(pro)h
+1(cess)h
+19(in)h
+17(the)h
+18(normal)h
+15(manner.)h
+27(The)h
+18(only)h
+16(sp)h
+1(ecial)h
+17(sequence)h
+20(pro)h
+1(cessing)h
+18(that)h
+17(tak)h
+-1(es)h
+177 2240(place)s
+12(at)h
+12(a)h
+11(lev)h
+-1(el)h
+12(lo)h
+-1(w)h
+-1(er)h
+11(than)h
+12(include)h
+12(\014les)h
+12(is)h
+12(the)h
+12(pro)h
+1(cessing)h
+13(of)h
+11(the)h
+504(sequence)h
+177 2290(whic)s
+-1(h)h
+14(c)h
+-1(hanges)h
+15(the)h
+14(sp)h
+1(ecial)h
+14(c)h
+-1(haracter.)h
+177 2363(A)s
+14(few)h
+13(other)h
+14(facts)h
+14(ab)h
+1(out)h
+13(include)h
+13(\014les)h
+14(are)h
+14(w)h
+-1(orth)h
+13(men)h
+-1(tioning)h
+11(here.)h
+19(Include)h
+14(\014les)h
+14(inherit)h
+13(the)h
+14(directory)h
+177 2413(sp)s
+1(eci\014cation)h
+18(supplied)h
+18(using)h
+17(the)h
+79(comm)h
+-1(and)h
+16(line)h
+17(option.)h
+28(The)h
+17(sp)h
+1(ecial)h
+18(c)h
+-1(haracter)h
+19(is)h
+17(sa)h
+-1(v)h
+-1(ed)h
+18(at)h
+17(the)h
+177 2463(start)s
+15(of)h
+13(eac)h
+-1(h)h
+14(include)h
+14(\014le)h
+14(and)h
+14(restored)h
+16(to)h
+13(its)h
+14(previous)h
+15(v)h
+-2(alue)h
+13(at)h
+14(the)h
+14(end)h
+14(of)h
+14(eac)h
+-1(h)h
+14(include)h
+14(\014le.)h
+18(Include)h
+177 2513(\014les)s
+14(can)h
+14(b)h
+1(e)h
+14(nested)h
+15(up)h
+14(to)h
+13(ten)h
+15(lev)h
+-1(els.)h
+17(Recursiv)h
+-1(e)h
+15(included)h
+14(\014les)h
+14(will)h
+12(alw)h
+-1(a)h
+-1(ys)h
+12(cause)h
+15(an)h
+13(in\014nite)h
+14(recursion)h
+177 2562(as)s
+13(there)h
+14(is)h
+12(no)h
+12(b)h
+1(ottoming)h
+11(out)h
+12(mec)h
+-1(hanism)h
+10(a)h
+-1(v)h
+-2(ailable.)h
+16(Include)h
+13(\014les)h
+13(m)h
+-1(ust)h
+11(con)h
+-1(tain)h
+12(an)h
+13(in)h
+-1(teger)h
+13(n)h
+-1(um)h
+-1(b)h
+1(er)h
+11(of)h
+177 2612(lines)s
+13(\(i.e.)h
+13(the)h
+14(last)h
+13(line)h
+13(m)h
+-1(ust)h
+12(b)h
+1(e)h
+14(terminated)h
+12(with)h
+13(an)h
+13(end)h
+14(of)h
+13(line)h
+13(mark)h
+-1(er\).)h
+17(Once)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(has)h
+13(seen)h
+177 2662(\\)s
+65(")h
+14(at)h
+14(the)h
+15(start)h
+14(of)h
+14(a)h
+13(line,)h
+14(it)h
+13(will)h
+13(grab)h
+14(the)h
+14(rest)h
+16(of)h
+13(the)h
+15(line)h
+13(ra)h
+-1(w)h
+14(and)h
+14(treat)h
+15(it)h
+13(as)h
+14(a)h
+14(\014le)h
+14(name.)h
+18(There)h
+177 2712(is)s
+14(no)h
+14(place)h
+14(on)h
+13(the)h
+15(line)h
+13(for)h
+14(things)h
+13(lik)h
+-1(e)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(comm)h
+-1(en)h
+-1(ts)h
+13(\(see)h
+15(later\))h
+14(or)h
+14(extraneous)h
+15(text.)h
+177 2785(Include)s
+21(\014les)h
+20(can)h
+21(b)h
+1(e)h
+20(used)h
+21(for)h
+20(man)h
+-1(y)h
+18(purp)h
+1(oses,)h
+23(but)h
+20(are)h
+20(particularly)h
+20(useful)h
+20(for)h
+20(hauling)h
+18(in)h
+20(macro)h
+177 2835(libraries.)s
+1042 2940(31)s
+32 @eop
+33 @bop0
+cmr6.300 sf
+[<1F00218060C060C000C0008001800F00008000400060C060C060804060801F00>
+16 16 -1 15 15] 51 dc
+[<0300030007000F000B001300330023004300C300FFE003000300030003001FE0>
+16 16 -1 15 15] 52 dc
+cmr7.300 sf
+[<0FC030707038703870380038003000E00FC0007000380018001C601CF01CF018E03860
+701FC0>
+16 19 -1 18 17] 51 dc
+[<006000E000E00160026006600C600860106020606060C060FFFC006000600060006000
+6003FC>
+16 19 -1 18 17] 52 dc
+cmbx12.300 sf
+[<0007FC0000003FFF800000FC07E00003F001F80007E000FC000FC0007E001F80003F00
+1F80003F003F00001F803F00001F807F00001FC07E00000FC07E00000FC0FE00000FE0FE
+00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00
+000FE07E00000FC07F00001FC07F00001FC03F00001F803F80003F801F80003F000FC000
+7E0007E000FC0003F001F80000FC07E000003FFF80000007FC0000>
+40 34 -3 33 42] 79 dc
+[<FFE7FF07F8FFE7FF07F81F007800C00F807801800F807C01800F807C018007C07E0300
+07C0DE030007E0DE070003E0DF060003E18F060001F18F0C0001F38F8C0001FB079C0000
+FB07D80000FE03D800007E03F000007E03F000007C01F000003C01E000003800E0000018
+00C000>
+40 22 -1 21 40] 119 dc
+cmbx10.432 sf
+[<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE07FFFFFC07FFFFFC07FFFFF
+8070000F0070001E0070003C00E0003800E0007800E000F0000001E0000003C0000003C0
+000007800000078000000F0000001F0000001F0000001F0000003F0000003F0000003E00
+00007E0000007E0000007E0000007E000000FE000000FE000000FE000000FE000000FE00
+0000FE000000FE000000FE000000FE000000380000>
+32 41 -4 40 34] 55 dc
+[<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F000700007F800F00003F800E000
+03FC01E00001FC01C00001FC01C00000FE03800000FE038000007F070000007F07000000
+7F8F0000003F8E0000003FDE0000001FDC0000001FDC0000000FF80000000FF80000000F
+F800000007F000000007F000000003E000000003E000000001C000000001C00000000380
+0000000380000038078000007C07000000FE0F000000FE0E000000FE1E000000FE3C0000
+007C780000003FE00000000FC0000000>
+40 39 -1 26 36] 121 dc
+[<FFE1FE0000FFE7FF8000FFFE07E0000FF803F8000FF001FC000FE001FE000FE000FE00
+0FE000FF000FE000FF000FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800F
+E0007F800FE0007F800FE0007F800FE0007F800FE000FF000FE000FF000FE000FE000FF0
+01FE000FF003FC000FF803F8000FFE0FE0000FEFFF80000FE1FC00000FE00000000FE000
+00000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000
+00FFFE000000FFFE000000FFFE000000>
+40 39 -2 26 38] 112 dc
+cmr8.300 sf
+[<001000003800003800003800005C00005C00005C00008E00008E00008E000107000107
+0003078002038002038007FFC00401C00401C00800E00800E01800E03800F0FE03FE>
+24 23 -1 22 26] 65 dc
+[<0FE030306018701C701C001C00180038006007E000300018000C000E000EE00EE00EC0
+0C401830300FE0>
+16 21 -1 20 18] 51 dc
+[<07C018303018701C600C600CE00EE00EE00EE00EE00EE00EE00EE00EE00E600C600C70
+1C30181C7007C0>
+16 21 -1 20 18] 48 dc
+[<1C00183200386180706161F0E09EE0E080C0E081C0E08180E08380E08700610600610E
+00321C001C18380038640070C20060C200E1C101C1C10181C10381C10301C10701C10E00
+C20C00C21C0064180038>
+24 27 -2 24 29] 37 dc
+[<40007FFE7FFC7FF8C008801080200040008000800100010003000200060006000E000E
+000E000E000E000400>
+16 22 -2 21 18] 55 dc
+[<0102040C1818303070606060E0E0E0E0E0E0E0E0E0E060606070303018180C040201>
+8 34 -3 24 14] 40 dc
+[<8040203018180C0C0E060606070707070707070707070606060E0C0C181830204080>
+8 34 -2 24 14] 41 dc
+[<0FC4302C601C400CC004C004C004E00070007F003FE00FF801FC001C000E0006800680
+068006C004E008D81087E0>
+16 23 -2 22 20] 83 dc
+[<FF83FC1F01E00E008007008007810003820001C20001E40000E8000078000078000038
+00007C00005E00008E000187000107800203800601C00401E00C00E01C00F0FF03FE>
+24 23 -1 22 26] 88 dc
+33 @bop1
+cmr6.300 sf
+223 2625(3)s
+223 2744(4)s
+cmr7.300 sf
+270 292(3)s
+1929 1309(4)s
+cmbx12.300 sf
+177 574(1.7.1)s
+55(Ov)h
+-2(erview)h
+cmbx10.432 sf
+177 42(1.7)s
+70(T)h
+-2(yp)h
+2(esetting)h
+21(F)h
+-6(aciliti)h
+-1(e)h
+-1(s)h
+cmbx10.300 sf
+1278 1100(macro)s
+14(de\014ni)h
+-1(ti)h
+-1(ons)h
+21(directiv)h
+-2(es)h
+177 1150(free)s
+15(text)h
+cmr8.300 sf
+241 2637(As)s
+12(an)h
+11(exampl)h
+-1(e,)h
+10(the)h
+10(author)h
+10(used)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+9(to)h
+11(dev)h
+-1(elop)h
+10(a)h
+11(largish)h
+10(compute)h
+-1(r)h
+10(program)h
+9(and)h
+11(found)h
+10(that)h
+10(on)h
+11(a)h
+-1(v)h
+-1(erage)h
+177 2677(his)s
+11(st)h
+-1(yle)h
+11(of)h
+11(using)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+10(resulted)h
+9(in)h
+12(ab)h
+1(out)h
+9(30%)h
+12(do)h
+1(cume)h
+-1(n)h
+-1(ta)h
+-1(tion)h
+9(and)h
+11(70%)h
+11(macros)h
+10(\(co)h
+1(de\))h
+10(\(measu)h
+-1(red)h
+9(b)h
+-1(y)h
+11(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+177 2716(of)s
+11(lines\).)h
+241 2756(Here)s
+13(the)h
+14(term)h
+12(\\t)h
+-1(yp)h
+1(eset")h
+12(is)h
+14(used)h
+13(lo)h
+1(osely)h
+12(to)h
+14(refer)h
+12(to)h
+14(F)h
+-3(unnelW)h
+-3(eb's)h
+12(generati)h
+-1(on)h
+12(of)h
+13(t)h
+-1(yp)h
+1(esetter)h
+12(comma)h
+-1(nds)h
+12(for)h
+13(eac)h
+-1(h)h
+177 2795(construct)s
+11(in)h
+12(the)h
+12(input)h
+12(\014le.)h
+18(Strictly)h
+-3(,)h
+11(the)h
+12(term)h
+12(should)h
+11(b)h
+1(e)h
+13(used)h
+12(only)h
+11(to)h
+13(describ)h
+1(e)h
+11(the)h
+12(actions)h
+11(of)h
+12(a)h
+13(t)h
+-1(yp)h
+1(esetter)h
+10(program)h
+177 2835(\(e.g.)s
+11(T)h
+275 2842(E)s
+295 2835(X\).)s
+cmtt10.300 sf
+177 1424(tt)s
+22(font)h
+1651 1599(example.fw)s
+1051 1648(fw)s
+21(example)h
+21(+t)h
+159(+t)h
+928 1698(example.tex)s
+504 1748(example.out)s
+93(example.tex)h
+177 1865(You)s
+21(are)h
+22(reading)h
+20(some)h
+21(free)h
+21(text)h
+21(before)h
+20(the)h
+21(macro.)h
+21(Free)h
+21(text)h
+21(can)h
+21(consist)h
+177 1915(of)s
+22(any)h
+21(text)h
+21(\(not)h
+21(containing)h
+19(the)h
+22(FunnelWeb)h
+19(special)h
+21(character\))h
+20(including)h
+177 1965(typesetter)s
+20(commands)h
+177 2014(such)s
+21(as)h
+22($,)h
+21(%,)h
+21(#,)h
+22(and)h
+21(\\TeX{})h
+20(which)h
+177 2064(will)s
+21(be)h
+22(typeset)h
+20(to)h
+21(appear)h
+21(exactly)h
+20(as)h
+22(they)h
+20(do)h
+22(in)h
+21(the)h
+21(input)h
+21(file!)h
+177 2114(Look)s
+21(out!)h
+21(Here)h
+21(comes)h
+21(a)h
+21(macro!)h
+177 2214(@O@<example.o)s
+-1(ut@>=)h
+-1(=@{@-)h
+177 2263(This)s
+21(text)h
+21(is)h
+21(part)h
+21(of)h
+177 2313(a)s
+22(macro)h
+21(definition)h
+-1(.)h
+177 2363(@})s
+177 2463(This)s
+21(is)h
+22(free)h
+20(text)h
+21(following)h
+20(the)h
+22(macro.)h
+20(This)h
+21(sentence)h
+20(contains)h
+177 2513(two)s
+21(@{inline@})h
+20(typesetter)h
+20(@/directives)h
+-1(@/.)h
+177 2562(Now)s
+21(here)h
+21(is)h
+22(a)h
+21(non-inline)h
+20(typesetting)h
+20(directive.)h
+cmr10.300 sf
+177 158(The)s
+14(\014rst)h
+14(half)h
+12(of)h
+12(this)h
+13(tutorial)h
+12(fo)h
+1(cuses)h
+15(solely)h
+12(on)h
+13(the)h
+14(macro)h
+12(facilities)h
+12(of)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(\(whic)h
+-1(h)h
+13(it)h
+13(more)h
+12(or)h
+177 208(less)s
+15(co)h
+-1(v)h
+-1(ers)h
+15(completely\).)h
+17(As)h
+15(a)h
+13(result,)h
+15(the)h
+14(example)h
+13(do)h
+1(cumen)h
+-1(ts)h
+14(y)h
+-1(ou)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(seen)h
+16(so)h
+14(far)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(b)h
+1(een)h
+15(gross)h
+177 257(distortions)s
+19(of)h
+19(\\normal")h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+18(do)h
+1(cumen)h
+-1(ts)h
+19(whic)h
+-1(h)h
+19(often)h
+20(con)h
+-1(tain)h
+18(as)h
+20(m)h
+-1(uc)h
+-1(h)h
+18(do)h
+1(cumen)h
+-1(tation)h
+18(as)h
+177 307(co)s
+1(de.)h
+37(While)h
+12(there)h
+15(are)h
+13(applications)h
+12(where)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+12(can)h
+14(b)h
+1(e)h
+13(used)h
+14(solely)h
+12(as)h
+13(a)h
+13(macro)h
+12(prepro)h
+1(cessor,)h
+177 357(most)s
+13(applications)h
+13(will)h
+12(use)h
+15(its)h
+14(t)h
+-1(yp)h
+1(esetting)h
+15(facilities)h
+12(as)h
+14(w)h
+-1(ell.)h
+177 432(This)s
+14(section)h
+15(restores)h
+15(the)h
+15(balance)h
+14(in)h
+13(this)h
+14(tutorial)h
+13(b)h
+-1(y)h
+14(presen)h
+-1(ting)h
+15(F)h
+-3(unnelW)h
+-3(eb's)h
+13(t)h
+-1(yp)h
+1(esetting)h
+15(facilities.)h
+177 676(The)s
+12(macro)h
+10(de\014nitions)h
+11(discussed)h
+12(in)h
+11(the)h
+12(macro)h
+10(tutorial)h
+10(completely)h
+10(de\014ne)h
+12(the)h
+12(con)h
+-1(ten)h
+-1(ts)h
+12(of)h
+10(the)h
+12(pro)h
+1(duct)h
+177 726(\014les)s
+19(that)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(will)h
+17(generate.)h
+32(These)h
+19(macro)h
+17(de\014nitions)h
+18(can)h
+18(b)h
+1(e)h
+19(arranged)h
+18(in)h
+18(an)h
+-1(y)h
+17(order)h
+19(and)h
+177 776(nothing)s
+14(external)h
+14(to)h
+14(them)h
+13(can)h
+15(a\013ect)h
+15(the)h
+15(con)h
+-1(ten)h
+-1(ts)h
+15(of)h
+13(the)h
+15(pro)h
+1(duct)h
+15(\014les.)h
+19(The)h
+15(macros)h
+13(can)h
+14(b)h
+1(e)h
+15(though)h
+-1(t)h
+177 826(of)s
+13(as)h
+14(a)h
+14(group)h
+14(of)h
+13(self-con)h
+-1(tained)h
+14(islands.)h
+177 901(Although)s
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(will)h
+12(can)h
+14(pro)h
+1(cess)h
+15(the)h
+13(macros)h
+13(all)h
+12(on)h
+13(their)h
+13(o)h
+-1(wn,)h
+13(the)h
+13(full)h
+12(p)h
+1(o)h
+-1(w)h
+-1(er)h
+14(of)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(is)h
+177 950(realized)s
+15(only)h
+14(when)h
+16(the)h
+15(macros)h
+14(are)h
+16(surrounded)h
+16(b)h
+-1(y)h
+14(a)h
+15(sea)h
+15(of)h
+14(do)h
+1(cumen)h
+-1(tation.)h
+20(This)h
+15(sea)h
+15(can)h
+15(tak)h
+-1(e)h
+15(t)h
+-1(w)h
+-1(o)h
+177 1000(forms:)s
+18(directiv)h
+-1(es)h
+15(and)h
+14(free)h
+15(text.)h
+20(Some)h
+13(of)h
+14(the)h
+15(directiv)h
+-1(es)h
+15(con)h
+-1(trol)h
+14(things)h
+14(suc)h
+-1(h)h
+15(as)h
+15(the)h
+15(maxim)h
+-3(um)h
+11(input)h
+177 1050(line)s
+9(length.)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+10(most)h
+9(of)h
+8(them)h
+9(are)h
+10(t)h
+-1(yp)h
+1(esetting)h
+11(directiv)h
+-1(es)h
+10(that)h
+10(a\013ect)h
+10(the)h
+11(prin)h
+-1(ted)h
+9(do)h
+1(cumen)h
+-1(tation.)h
+177 1100(Th)s
+-1(us)h
+12(a)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(do)h
+1(cumen)h
+-1(t)h
+11(can)h
+12(b)h
+1(e)h
+13(view)h
+-1(ed)h
+12(as)h
+12(a)h
+12(sequence)h
+14(of)h
+370(,)h
+211(,)h
+10(and)h
+356 1150(.)s
+177 1225(Unlik)s
+-1(e)h
+10(the)h
+12(pro)h
+1(duct)h
+11(\014les)h
+11(whic)h
+-1(h)h
+11(consist)h
+11(of)h
+11(unscram)h
+-1(bled)h
+10(macro)h
+9(calls,)h
+11(the)h
+11(do)h
+1(cumen)h
+-1(tation)h
+10(\014le)h
+10(is)h
+11(more)h
+10(or)h
+177 1274(less)s
+10(a)h
+9(direct)h
+10(represe)h
+1(n)h
+-1(tation)h
+10(of)h
+9(the)h
+10(input)h
+9(\014le.)h
+17(Eac)h
+-1(h)h
+9(part)h
+10(of)h
+9(the)h
+10(input)h
+9(\014le)h
+9(app)h
+1(ears)h
+10(in)h
+9(the)h
+10(do)h
+1(cumen)h
+-1(tation)h
+177 1324(\014le)s
+11(in)h
+10(the)h
+11(order)h
+12(in)h
+10(whic)h
+-1(h)h
+11(it)h
+10(app)h
+1(ears)h
+12(in)h
+10(the)h
+11(input)h
+11(\014le.)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+11(eac)h
+-1(h)h
+11(di\013eren)h
+-1(t)h
+12(kind)h
+10(of)h
+10(part)h
+11(is)h
+11(t)h
+-1(yp)h
+1(eset)h
+177 1374(in)s
+13(a)h
+13(di\013eren)h
+-1(t)h
+15(manner.)h
+17(Macros)h
+14(are)h
+14(t)h
+-1(yp)h
+1(eset)h
+15(in)h
+13(a)h
+13(particular)h
+13(st)h
+-1(yle,)h
+14(with)h
+13(the)h
+14(macro)h
+12(b)h
+1(o)h
+1(dy)h
+14(app)h
+1(earing)h
+13(in)h
+342 1424(\(see)s
+13(some)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+12(prin)h
+-1(ted)h
+12(do)h
+1(cumen)h
+-1(tation)h
+11(for)h
+12(an)h
+11(example\).)h
+17(T)h
+-1(yp)h
+1(esetter)h
+14(directiv)h
+-1(es)h
+13(ha)h
+-1(v)h
+-1(e)h
+177 1474(sp)s
+1(eci\014c)h
+16(de\014ned)h
+15(e\013ects)h
+16(\(more)h
+13(later\).)h
+18(F)h
+-3(ree)h
+15(text)h
+14(is)h
+14(t)h
+-1(yp)h
+1(eset)h
+15(exactly)h
+14(as)h
+14(it)h
+14(is,)h
+13(except)h
+15(that)h
+14(eac)h
+-1(h)h
+15(blo)h
+1(c)h
+-1(k)h
+13(of)h
+177 1524(text)s
+15(b)h
+1(et)h
+-1(w)h
+-1(een)h
+15(blank)h
+13(lines)h
+14(is)h
+14(\014lled)h
+13(and)h
+14(justi\014ed)h
+14(as)h
+14(a)h
+14(paragraph.)h
+177 1599(The)s
+13(follo)h
+-1(wing)h
+10(example)h
+12(demonstrates)h
+13(ho)h
+-1(w)h
+12(all)h
+11(this)h
+13(w)h
+-1(orks.)h
+17(T)h
+-1(yp)h
+1(e)h
+13(in)h
+13(the)h
+13(follo)h
+-1(wi)h
+-1(ng)h
+11(as)h
+243(and)h
+177 1648(run)s
+15(it)h
+15(through)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(with)h
+15(the)h
+15(comma)h
+-1(nd)h
+13(\\)h
+284(".)h
+19(The)h
+15(\\)h
+44(")h
+14(instructs)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+177 1698(to)s
+19(generate)h
+20(a)h
+19(do)h
+1(cumen)h
+-1(tation)h
+18(\014le)h
+19(called)h
+261(.)h
+31(Run)h
+19(the)h
+19(\014le)h
+19(through)h
+20(T)h
+1643 1707(E)s
+1666 1698(X)s
+19(and)h
+19(prin)h
+-1(t)h
+19(it.)h
+177 1748(Examine)s
+13(the)h
+14(\014les)h
+268(and)h
+255(.)h
+1042 2940(32)s
+709 2 177 2599 r
+33 @eop
+34 @bop0
+cmbx10.300 sf
+[<FFFC01FF80FFFC01FF800FE000380007F000300003F800700003F800600001FC00C000
+00FE01C00000FE018000007F030000003F870000003F860000001FCE0000000FFC000000
+0FF800000007F800000003F000000003F000000003F000000003F000000003F000000003
+F000000003F000000003F000000003F000000003F00000003FFF0000003FFF0000>
+40 28 -1 27 36] 89 dc
+[<78FCFCFEFE7A0202040408083040>
+8 14 -3 28 13] 39 dc
+[<7FFE1FFE007FFE1FFE0007F001800003F803800001FC07000000FC06000000FE0C0000
+007F1C0000003F380000003FB00000001FE00000000FE00000000FE000000007F0000000
+03F800000007F80000000FFC0000000CFE000000187E000000387F000000703F80000060
+1F800000C01FC00001C00FE000018007F000030007F000FFF03FFF80FFF03FFF80>
+40 28 -1 27 36] 88 dc
+34 @bop1
+cmsy10.300 sf
+338 2835(f)s
+154(g)h
+334(f)h
+131(g)h
+cmbx10.300 sf
+295 1876(Y)s
+-4(ou)h
+11(don't)h
+9(ha)h
+-1(v)h
+-1(e)h
+10(to)h
+10(kno)h
+-1(w)h
+11(T)h
+-4(eX:)h
+295 2003(In)s
+16(order:)h
+295 2080(F)s
+-4(ree)h
+17(text:)h
+295 2256(T)s
+-4(eX)h
+20(co)h
+1(des:)h
+295 2482(fw)s
+17(sequences:)h
+295 2609(The)s
+19(macro:)h
+295 2735(T)s
+-1(yp)h
+1(esetter)h
+16(directiv)h
+-1(es)h
+-1(:)h
+cmtt10.300 sf
+177 91(@t)s
+22(new_page)h
+177 191(This)s
+21(sentence)h
+20(will)h
+21(appear)h
+21(on)h
+21(the)h
+21(next)h
+21(page.)h
+491 312(example.tex)s
+177 533(You)s
+21(are)h
+22(reading)h
+20(some)h
+21(free)h
+21(text)h
+21(before)h
+20(the)h
+21(macro.)h
+21(Free)h
+21(text)h
+21(can)h
+21(consist)h
+177 583(of)s
+22(any)h
+21(text)h
+21(\(not)h
+21(containing)h
+19(the)h
+22(FunnelWeb)h
+19(special)h
+21(character\))h
+20(including)h
+177 632(typesetter)s
+20(commands)h
+177 682(such)s
+21(as)h
+22(\\$,)h
+21(\\%,)h
+21(\\#,)h
+21(and)h
+21($\\backslash$Te)h
+-1(X$\\{)h
+-1($$\\}$)h
+19(which)h
+177 732(will)s
+21(be)h
+22(typeset)h
+20(to)h
+21(appear)h
+21(exactly)h
+20(as)h
+22(they)h
+20(do)h
+22(in)h
+21(the)h
+21(input)h
+21(file!)h
+177 782(Look)s
+21(out!)h
+21(Here)h
+21(comes)h
+21(a)h
+21(macro!)h
+177 882(\\fwbeginmacro)s
+177 931(\\fwfilename{e)s
+-1(xampl)h
+-1(e.out)h
+-1(}{1}\\)h
+-1(fwequ)h
+-1(als)h
+20(\\fwodef)h
+20(\\fwbtx[This)h
+19(text)h
+21(is)h
+22(part)h
+21(of)h
+177 981(a)s
+22(macro)h
+21(definition)h
+-1(.)h
+177 1031(]fwetx=%)s
+177 1081(\\fwcdef)s
+177 1131(\\fwbeginmacro)s
+-1(notes)h
+177 1180(\\fwisafile{Th)s
+-1(is)h
+20(macro)h
+21(is)h
+21(attached)h
+20(to)h
+22(an)h
+21(output)h
+20(file.})h
+177 1230(\\fwendmacrono)s
+-1(tes)h
+177 1280(\\fwendmacro)s
+177 1380(This)s
+21(is)h
+22(free)h
+20(text)h
+21(following)h
+20(the)h
+22(macro.)h
+20(This)h
+21(sentence)h
+20(contains)h
+177 1430(two)s
+21(\\fwlit{inline})h
+19(typesetter)h
+20(\\fwemp{direc)h
+-1(tives)h
+-1(}.)h
+177 1479(Now)s
+21(here)h
+21(is)h
+22(a)h
+21(non-inline)h
+20(typesetting)h
+20(directive.)h
+177 1579(\\fwnewpage)s
+177 1679(This)s
+21(sentence)h
+20(will)h
+21(appear)h
+21(on)h
+21(the)h
+21(next)h
+21(page.)h
+778 1800(example.tex)s
+1247 2306($)s
+269(\\$)h
+684 2482(fw)s
+297(\\fwbeginma)h
+-1(cro)h
+316 2835(@)s
+21(inline@)h
+223(\\fwlit)h
+21(inlin)h
+-1(e)h
+cmr10.300 sf
+177 312(A)s
+-1(t)h
+12(the)h
+13(top)h
+11(of)h
+12(the)h
+263(do)h
+1(cumen)h
+-1(tation)h
+11(\014le)h
+12(will)h
+10(b)h
+1(e)h
+13(a)h
+11(set)h
+13(of)h
+11(T)h
+1383 321(E)s
+1406 312(X)s
+12(macro)h
+11(de\014nitions.)h
+17(The)h
+13(T)h
+1895 321(E)s
+1918 312(X)s
+177 362(co)s
+1(de)h
+13(corresp)h
+1(onding)h
+14(to)h
+12(the)h
+13(input)h
+12(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+12(app)h
+1(ears)h
+13(at)h
+12(the)h
+13(end)h
+13(of)h
+12(the)h
+13(\014le.)h
+18(It)h
+12(should)h
+12(lo)h
+1(ok)h
+12(something)h
+11(lik)h
+-1(e)h
+177 412(this.)s
+177 1800(The)s
+14(follo)h
+-1(wing)h
+12(p)h
+1(oin)h
+-1(ts)h
+14(explain)h
+13(the)h
+268(\014le.)h
+896 1876(If)s
+9(y)h
+-1(ou)h
+9(don't)h
+9(kno)h
+-1(w)h
+9(T)h
+1238 1885(E)s
+1261 1876(X,)s
+9(don't)h
+9(pa)h
+-1(y)h
+9(to)h
+1(o)h
+10(m)h
+-1(uc)h
+-1(h)h
+8(atten)h
+-1(tion)h
+295 1926(to)s
+14(this)h
+14(section.)h
+19(Y)h
+-3(ou)h
+13(don't)h
+13(need)h
+15(to)h
+14(kno)h
+-1(w)h
+13(T)h
+1054 1935(E)s
+1078 1926(X)s
+13(to)h
+14(use)h
+15(F)h
+-3(unnelW)h
+-3(eb.)h
+499 2003(F)s
+-3(unnelW)h
+-3(eb)h
+13(has)h
+14(merely)h
+14(transformed)h
+13(the)h
+14(input.)h
+18(It)h
+14(hasn't)h
+14(rearranged)h
+15(it.)h
+522 2080(Most)s
+15(of)h
+15(the)h
+16(free)h
+17(text)h
+16(has)h
+15(b)h
+1(een)h
+17(simply)h
+13(copied)h
+16(o)h
+-1(v)h
+-1(er.)h
+23(The)h
+16(T)h
+1580 2089(E)s
+1603 2080(X)s
+15(t)h
+-1(yp)h
+1(esetter)h
+295 2129(justi\014es)s
+14(and)h
+13(\014lls)h
+13(all)h
+11(paragraphs)h
+14(fed)h
+13(to)h
+13(it)h
+13(b)h
+-1(y)h
+12(default,)h
+13(so)h
+13(most)h
+12(of)h
+13(the)h
+13(text)h
+14(has)h
+13(just)h
+14(b)h
+1(een)h
+295 2179(copied)s
+14(v)h
+-1(erbatim.)h
+554 2256(The)s
+17(c)h
+-1(haracters)h
+19(and)h
+17(sequences)h
+19(whic)h
+-1(h)h
+17(T)h
+1263 2265(E)s
+1286 2256(X)s
+17(treats)h
+18(as)h
+17(sp)h
+1(ecial)h
+18(ha)h
+-1(v)h
+-1(e)h
+17(b)h
+1(een)h
+295 2306(neutralized)s
+12(in)h
+10(the)h
+12(do)h
+1(cumen)h
+-1(tation)h
+9(\014le.)h
+17(F)h
+-3(or)h
+11(example,)h
+9(\\)h
+22(")h
+11(has)h
+11(b)h
+1(ecome)h
+10(\\)h
+44(".)h
+16(By)h
+11(default,)h
+295 2356(F)s
+-3(unnelW)h
+-3(eb)h
+12(allo)h
+-1(ws)h
+11(the)h
+13(user)h
+13(to)h
+12(write)h
+12(an)h
+-1(y)h
+12(text)h
+13(as)h
+12(free)h
+13(text)h
+13(and)h
+12(not)h
+12(ha)h
+-1(v)h
+-1(e)h
+12(to)h
+12(w)h
+-1(orry)h
+12(ab)h
+1(out)h
+295 2405(acciden)s
+-1(tally)h
+14(in)h
+-1(v)h
+-1(oking)h
+12(t)h
+-1(yp)h
+1(esetter)h
+16(features.)h
+598 2482(The)s
+73(sequences)h
+17(\(e.g.)h
+300(\))h
+13(in)h
+-1(v)h
+-1(ok)h
+-1(e)h
+14(T)h
+1491 2491(E)s
+1514 2482(X)s
+15(macros)h
+14(de\014ned)h
+295 2532(earlier)s
+14(in)h
+14(the)h
+14(do)h
+1(cumen)h
+-1(tation)h
+13(\014le)h
+14(\(and)h
+14(not)h
+13(sho)h
+-1(wn)h
+14(here\).)h
+561 2609(The)s
+17(macro)h
+15(is)h
+17(t)h
+-1(yp)h
+1(eset)h
+18(using)h
+16(a)h
+16(set)h
+18(of)h
+16(prede\014ned)h
+18(T)h
+1460 2618(E)s
+1484 2609(X)s
+16(macros.)h
+26(See)h
+17(the)h
+295 2658(prin)s
+-1(ted)h
+15(do)h
+1(cumen)h
+-1(tation)h
+12(to)h
+14(see)h
+15(what)h
+14(this)h
+14(lo)h
+1(oks)h
+13(lik)h
+-1(e)h
+13(on)h
+14(pap)h
+1(er.)h
+774 2735(Unlik)s
+-1(e)h
+15(the)h
+16(T)h
+1002 2744(E)s
+1025 2735(X)s
+16(comm)h
+-1(and)h
+14(sequences)h
+18(\(whic)h
+-1(h)h
+16(w)h
+-1(ere)h
+17(neutral-)h
+295 2785(ized\),)s
+16(the)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(t)h
+-1(yp)h
+1(esetter)h
+17(directiv)h
+-1(es)h
+16(turn)h
+16(in)h
+-1(to)h
+14(T)h
+1286 2794(E)s
+1310 2785(X)s
+15(macro)h
+14(calls.)h
+22(F)h
+-3(or)h
+14(example,)h
+295 2835(\\)s
+218(")h
+11(b)h
+1(ecame)h
+14(\\)h
+305(".)h
+1042 2940(33)s
+34 @eop
+35 @bop0
+cmbx12.300 sf
+[<FFE01FE0FFE01FE00F8006000F8006000FC00E0007C00C0007E01C0003E0180003E018
+0001F0300001F0300000F8600000F86000007CC000007CC000007FC000003F8000003F80
+00001F0000001F0000000E0000000E0000000C0000000C00000018000078180000FC3800
+00FC300000FC60000069C000007F8000001F000000>
+32 32 -1 21 30] 121 dc
+[<FFFF83FFFEFFFF83FFFE07F0001FC007F0001FC007F0001FC007F0001FC007F0001FC0
+07F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007
+F0001FC007FFFFFFC007FFFFFFC007F0001FC007F0001FC007F0001FC007F0001FC007F0
+001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F000
+1FC007F0001FC007F0001FC007F0001FC0FFFF83FFFEFFFF83FFFE>
+40 34 -2 33 44] 72 dc
+[<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
+001F0000001F0000001F0000001F0000001F07E0001F1FF8001F307C001F403C001F803E
+001F803E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E
+001F003E001F003E001F003E001F003E001F003E001F003E00FFE1FFC0FFE1FFC0>
+32 35 -2 34 31] 104 dc
+35 @bop1
+cmcsc10.300 sf
+617 2406(a)s
+1182(a)h
+cmbx10.300 sf
+1737 585(t)s
+-1(yp)h
+1(esetter)h
+177 635(indep)s
+1(end)h
+-1(en)h
+-2(t)h
+cmbx12.300 sf
+177 333(1.7.2)s
+55(T)h
+-2(yp)h
+2(esetter)h
+17(Indep)h
+2(endence)h
+177 1885(1.7.3)s
+55(Hierarc)h
+-2(hical)h
+18(Structure)h
+cmtt10.300 sf
+177 1201(@p)s
+22(typesetter)h
+19(=)h
+22(tex)h
+364 2361(@A)s
+23(@B)h
+23(@C)h
+23(@D)h
+103(@E)h
+898(@A)h
+762 2411(\\chapter)s
+123(@E)h
+177 2461(\\subsubsubsec)s
+-1(tion)h
+1209 2635(@<)s
+98(@>)h
+440 2685(@A)s
+cmr10.300 sf
+177 42(In)s
+16(summ)h
+-1(ary)h
+-3(,)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+15(pro)h
+1(duces)h
+17(t)h
+-1(yp)h
+1(eset)h
+17(do)h
+1(cumen)h
+-1(tation)h
+14(that)h
+15(transforms,)h
+15(but)h
+15(do)h
+1(es)h
+16(not)h
+16(reorder,)h
+177 91(the)s
+14(input)h
+13(\014le.)h
+18(Macros)h
+14(are)h
+14(t)h
+-1(yp)h
+1(eset)h
+15(in)h
+13(a)h
+13(sp)h
+1(eci\014c)h
+15(st)h
+-1(yle.)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+13(t)h
+-1(yp)h
+1(esetter)h
+16(directiv)h
+-1(es)h
+15(ha)h
+-1(v)h
+-1(e)h
+13(partic-)h
+177 141(ular)s
+15(w)h
+-1(ell-de\014ned)h
+15(e\013ects.)h
+23(F)h
+-3(ree)h
+16(text)h
+16(is)h
+15(\014lled)h
+14(and)h
+15(justi\014ed,)h
+15(but)h
+15(will)h
+14(otherwise)h
+16(app)h
+1(ear)h
+15(in)h
+15(the)h
+15(prin)h
+-1(ted)h
+177 191(do)s
+1(cumen)h
+-1(tation)h
+13(exactly)h
+14(as)h
+14(it)h
+13(app)h
+1(ears)h
+15(in)h
+13(the)h
+15(input)h
+14(\014le.)h
+177 436(Although)s
+16(the)h
+17(curren)h
+-1(t)h
+18(v)h
+-1(ersion)h
+16(of)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(can)h
+17(only)h
+15(generate)h
+18(do)h
+1(cumen)h
+-1(tation)h
+15(\014les)h
+17(in)h
+16(T)h
+1783 445(E)s
+1806 436(X)s
+16(form,)h
+177 485(it)s
+18(encourages)h
+20(t)h
+-1(yp)h
+1(esetter)h
+21(indep)h
+1(endence)h
+21(b)h
+-1(y)h
+18(neutralizing)h
+18(all)h
+17(T)h
+1280 494(E)s
+1303 485(X)s
+19(con)h
+-1(trol)h
+18(sequences)h
+21(b)h
+1(efore)h
+20(writing)h
+177 535(them)s
+19(out.)h
+34(The)h
+20(result)h
+20(is)h
+19(that)h
+20(y)h
+-1(ou)h
+19(don't)h
+18(ha)h
+-1(v)h
+-1(e)h
+20(w)h
+-1(orry)h
+19(ab)h
+1(out)h
+19(upsetting)h
+20(or)h
+19(dep)h
+1(ending)h
+20(on)h
+19(T)h
+1831 544(E)s
+1855 535(X)s
+19(b)h
+-1(y)h
+177 585(acciden)s
+-1(tally)h
+11(including)h
+11(some)h
+11(sp)h
+1(ecial)h
+12(c)h
+-1(haracter)h
+13(or)h
+12(sequence.)h
+19(By)h
+12(default)h
+12(y)h
+-1(our)h
+11(input)h
+12(\014le)h
+12(is)h
+436 635(.)s
+177 710(This)s
+13(sc)h
+-1(heme)h
+13(di\013ers)h
+14(from)h
+11(other)h
+13(literate)h
+13(programm)h
+-1(ing)h
+11(to)h
+1(ols,)h
+12(including)h
+12(all)h
+11(earlier)h
+14(v)h
+-1(ersions)h
+13(of)h
+12(F)h
+-3(unnel-)h
+177 760(W)s
+-3(eb,)h
+13(whic)h
+-1(h)h
+13(cop)h
+-1(y)h
+13(their)h
+14(free)h
+14(text)h
+14(directly)h
+13(to)h
+13(the)h
+14(do)h
+1(cumen)h
+-1(tation)h
+12(\014le,)h
+13(the)h
+14(justi\014cation)h
+13(b)h
+1(eing)h
+13(that)h
+13(the)h
+177 810(programm)s
+-1(er)h
+11(can)h
+13(use)h
+13(the)h
+13(full)h
+11(p)h
+1(o)h
+-1(w)h
+-1(er)h
+12(of)h
+12(the)h
+13(t)h
+-1(yp)h
+1(esetter)h
+14(language)h
+12(to)h
+12(describ)h
+1(e)h
+14(the)h
+13(program.)h
+15(The)h
+13(disad-)h
+177 859(v)s
+-2(an)h
+-1(tages)h
+14(of)h
+13(doing)h
+13(this)h
+14(are)h
+14(\014rst)h
+15(that)h
+14(the)h
+14(programm)h
+-1(er)h
+13(is)h
+14(required)h
+14(to)h
+14(kno)h
+-1(w)h
+13(the)h
+15(t)h
+-1(yp)h
+1(esetting)h
+15(language)h
+177 909(and)s
+16(second)h
+17(that)h
+16(the)h
+16(input)h
+16(\014le)h
+16(b)h
+1(ecomes)h
+16(t)h
+-1(yp)h
+1(esetter)h
+18(dep)h
+1(enden)h
+-1(t.)h
+25(F)h
+-3(unnelW)h
+-3(eb)h
+16(a)h
+-1(v)h
+-1(oids)h
+14(these)h
+18(problems)h
+177 959(b)s
+-1(y)h
+14(knobbling)h
+12(the)h
+15(free)h
+15(text)h
+14(b)h
+1(e)h
+15(default.)h
+177 1034(Ho)s
+-1(w)h
+-1(ev)h
+-1(er,)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(do)h
+1(es)h
+14(pro)h
+-1(vide)h
+13(a)h
+12(trap)h
+1(do)h
+1(or)h
+14(for)h
+12(those)h
+14(who)h
+13(w)h
+-1(an)h
+-1(t)h
+13(their)h
+13(free)h
+14(text)h
+14(to)h
+13(b)h
+1(e)h
+13(fed)h
+13(directly)h
+177 1084(to)s
+14(T)h
+251 1093(E)s
+274 1084(X.)s
+13(T)h
+-3(o)h
+14(op)h
+1(en)h
+14(the)h
+14(trap)h
+1(do)h
+1(or,)h
+14(simply)h
+12(include)h
+14(the)h
+14(follo)h
+-1(wing)h
+11(pragma)h
+12(somewhere)h
+15(in)h
+13(y)h
+-1(our)h
+14(input)h
+13(\014le.)h
+177 1319(See)s
+15(Section)h
+14(3.11.2)h
+12(for)h
+14(more)h
+13(inform)h
+-1(ation.)h
+177 1394(F)s
+-3(unnelW)h
+-3(eb)h
+10(lea)h
+-1(v)h
+-1(es)h
+11(the)h
+12(degree)h
+12(to)h
+10(whic)h
+-1(h)h
+11(the)h
+11(user)h
+12(wishes)h
+12(to)h
+10(bind)h
+11(a)h
+10(particular)h
+11(do)h
+1(cumen)h
+-1(t)h
+10(to)h
+11(a)h
+10(particular)h
+177 1444(t)s
+-1(yp)h
+1(esetter)h
+15(up)h
+13(to)h
+12(the)h
+14(user.)h
+18(In)h
+13(some)h
+12(cases,)h
+13(the)h
+14(extra)h
+13(t)h
+-1(yp)h
+1(esetting)h
+13(p)h
+1(o)h
+-1(w)h
+-1(er)h
+13(ma)h
+-1(y)h
+11(comp)h
+1(ensate)h
+13(for)h
+12(the)h
+13(lac)h
+-1(k)h
+177 1493(of)s
+14(p)h
+1(ortabilit)h
+-1(y)h
+-3(.)h
+18(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+15(as)h
+14(a)h
+14(rule,)h
+15(it)h
+14(is)h
+14(b)h
+1(est)h
+16(to)h
+14(a)h
+-1(v)h
+-1(oid)h
+13(t)h
+-1(yp)h
+1(esetter-s)h
+1(p)h
+1(ec)h
+1(i\014c)h
+16(comma)h
+-1(nds,)h
+13(so)h
+15(as)h
+14(to)h
+14(allo)h
+-1(w)h
+177 1543(y)s
+-1(our)h
+17(input)h
+17(\014les)h
+18(to)h
+17(b)h
+1(e)h
+17(formatted)h
+16(at)h
+17(a)h
+17(later)h
+18(date)h
+17(for)h
+17(di\013eren)h
+-1(t)h
+18(t)h
+-1(yp)h
+1(esetter)h
+1(s.)h
+30(F)h
+-3(unnelW)h
+-3(eb)h
+16(includes)h
+18(a)h
+177 1593(n)s
+-1(um)h
+-1(b)h
+1(er)h
+14(of)h
+14(its)h
+14(o)h
+-1(wn)h
+15(t)h
+-1(yp)h
+1(esetter)h
+16(commands)h
+13(so)h
+14(as)h
+15(to)h
+14(supp)h
+1(ort)h
+16(t)h
+-1(yp)h
+1(esetter-indep)h
+1(e)h
+1(nden)h
+-1(t)h
+17(input)h
+14(\014les.)h
+20(The)h
+177 1643(follo)s
+-1(wing)h
+12(sections)h
+16(describ)h
+1(e)h
+16(some)h
+13(of)h
+14(these)h
+16(comm)h
+-1(ands.)h
+18(In)h
+15(particular,)h
+13(the)h
+16(next)h
+14(section)h
+16(describ)h
+1(es)h
+16(the)h
+177 1693(most)s
+15(p)h
+1(o)h
+-1(w)h
+-1(erful)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(t)h
+-1(yp)h
+1(esetting)h
+16(directiv)h
+-1(es)h
+17(whic)h
+-1(h)h
+15(allo)h
+-1(w)h
+14(the)h
+16(user)h
+17(to)h
+15(structure)h
+18(the)h
+16(do)h
+1(cumen)h
+-1(t)h
+177 1742(hierarc)s
+-1(hically)h
+-3(.)h
+177 1987(The)s
+19(tree)h
+20(structure)h
+20(is)h
+19(one)h
+18(of)h
+18(the)h
+19(most)h
+17(e\013ectiv)h
+-1(e)h
+20(structuring)h
+20(to)h
+1(ols)h
+18(that)h
+18(exists,)h
+20(deriving)h
+18(its)h
+18(p)h
+1(o)h
+-1(w)h
+-1(er)h
+177 2037(from)s
+13(the)h
+15(principal)h
+14(of)h
+14(divide)h
+15(and)h
+14(conquor.)h
+21(So)h
+14(e\013ectiv)h
+-1(e)h
+16(is)h
+15(it)h
+14(that)h
+15(the)h
+15(in)h
+-1(ternal)h
+14(organization)h
+14(of)h
+14(most)h
+177 2087(tec)s
+-1(hnical)h
+17(b)h
+1(o)h
+1(oks)h
+17(are)h
+18(tree)h
+18(structures)h
+19(whic)h
+-1(h)h
+17(are)h
+18(concisely)h
+17(summari)h
+-1(zed)h
+16(in)h
+17(the)h
+17(table)h
+17(of)h
+16(con)h
+-1(ten)h
+-1(ts.)h
+29(In)h
+177 2136(con)s
+-1(trast,)h
+14(computer)h
+12(programs)h
+12(are)h
+14(usually)h
+12(presen)h
+-1(ted)h
+15(as)h
+13(\015at)h
+13(sequences)h
+16(of)h
+12(text)h
+14(to)h
+13(b)h
+1(e)h
+13(consumed)h
+13(b)h
+-1(y)h
+13(an)h
+177 2186(anon)s
+-1(ymous)h
+12(compiler.)h
+177 2261(In)s
+20(order)h
+21(to)h
+19(bring)h
+20(program)h
+18(do)h
+1(cumen)h
+-1(tation)h
+19(up)h
+20(to)h
+19(the)h
+21(structural)h
+21(sophistication)h
+19(comm)h
+-1(onplace)h
+18(in)h
+177 2311(tec)s
+-1(hnical)h
+12(b)h
+1(o)h
+1(oks,)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(pro)h
+-1(vides)h
+11(\014v)h
+-1(e)h
+12(lev)h
+-1(els)h
+12(of)h
+10(section)h
+13(headings)h
+11(implem)h
+-1(en)h
+-1(ted)h
+10(b)h
+-1(y)h
+12(the)h
+12(\014v)h
+-1(e)h
+12(sp)h
+1(ecial)h
+177 2361(sequences)s
+59(,)h
+55(,)h
+55(,)h
+55(,)h
+12(and)h
+56(.)h
+11(These)h
+13(m)h
+-1(ust)h
+11(alw)h
+-1(a)h
+-1(ys)h
+12(app)h
+1(ear)h
+12(at)h
+12(the)h
+13(start)h
+13(of)h
+11(a)h
+12(line.)h
+73(is)h
+12(the)h
+12(highest)h
+177 2411(lev)s
+-1(el)h
+21(section)h
+21(\(e.g.)h
+20(lik)h
+-1(e)h
+20(L)h
+4(T)h
+659 2424(E)s
+683 2411(X's)s
+196(\))h
+20(and)h
+85(is)h
+20(the)h
+22(lo)h
+-1(w)h
+-1(est)h
+20(lev)h
+-1(el)h
+21(section)h
+21(\(e.g.)h
+20(lik)h
+-1(e)h
+20(L)h
+4(T)h
+1866 2424(E)s
+1890 2411(X's)s
+550 2461(\).)s
+31(Section)h
+19(headings)h
+19(can)h
+19(app)h
+1(ear)h
+19(an)h
+-1(ywhere)h
+20(in)h
+18(the)h
+19(free)h
+20(text)h
+20(of)h
+18(a)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+177 2510(input)s
+14(\014le)h
+14(\(i.e.)h
+13(an)h
+-1(ywhere)h
+14(except)h
+16(inside)h
+14(a)h
+13(macro)h
+13(de\014nition\).)h
+177 2586(Eac)s
+-1(h)h
+16(section)h
+16(heading)h
+15(in)h
+15(a)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(do)h
+1(cumen)h
+-1(t)h
+14(has)h
+16(an)h
+15(asso)h
+1(ciated)h
+16(name.)h
+21(The)h
+16(name)h
+14(of)h
+15(a)h
+15(section)h
+177 2635(can)s
+17(b)h
+1(e)h
+16(pro)h
+-1(vided)h
+17(explicitly)h
+15(b)h
+-1(y)h
+16(supplying)h
+15(it)h
+16(delimited)h
+15(b)h
+-1(y)h
+75(and)h
+76(imm)h
+-1(ediately)h
+14(after)h
+16(the)h
+17(section)h
+177 2685(sequence)s
+15(\(e.g.)h
+57(\),)h
+12(or)h
+13(impli)h
+-1(citly)h
+11(b)h
+-1(y)h
+12(not)h
+13(pro)h
+-1(viding)h
+12(an)h
+13(explicit)h
+12(name,)h
+12(in)h
+12(whic)h
+-1(h)h
+13(case)h
+14(the)h
+14(section)h
+13(tak)h
+-1(es)h
+177 2735(the)s
+11(name)h
+10(of)h
+10(the)h
+11(\014rst)h
+11(macro)h
+10(de\014ned)h
+11(b)h
+1(et)h
+-1(w)h
+-1(een)h
+12(the)h
+12(section)h
+11(header)h
+11(in)h
+11(question)h
+10(and)h
+11(the)h
+11(follo)h
+-1(wing)h
+8(section)h
+177 2785(header.)s
+18(An)h
+12(error)h
+13(is)h
+11(generated)h
+13(if)h
+11(a)h
+11(section)h
+12(has)h
+12(not)h
+11(b)h
+1(een)h
+13(giv)h
+-1(en)h
+11(an)h
+12(explicit)h
+11(name)h
+10(and)h
+11(do)h
+1(es)h
+13(not)h
+11(con)h
+-1(tain)h
+177 2835(an)s
+-1(y)h
+14(macro)h
+12(de\014nitions.)h
+18(Here)h
+15(are)h
+15(some)h
+13(example)h
+12(headings:)h
+1042 2940(34)s
+35 @eop
+36 @bop0
+cmsy10.300 sf
+[<FFFFFF80FFFFFF80>
+32 2 -3 10 32] 0 dc
+cmbx12.300 sf
+[<FFFF803FFCFFFF803FFC07F000018007F000018007F000018007F000018007F0000180
+07F000018007F000018007F000018007F000018007F000018007F000018007F000018007
+F000018007F000018007F000018007F000018007F000018007F000018007F000018007F0
+00018007F000018007F000018007F000018007F000018003F000030003F800030001F800
+060000FC000E00007E001C00003F80F800000FFFE0000001FF0000>
+40 34 -2 33 43] 85 dc
+[<03FC1E0FFF7F1F0F8F3E07CF3C03C07C03E07C03E07C03E07C03E07C03E03C03C03E07
+C01F0F801FFF0013FC003000003000003800003FFF801FFFF00FFFF81FFFFC3800FC7000
+3EF0001EF0001EF0001EF0001E78003C7C007C3F01F80FFFE001FF00>
+24 33 -2 21 28] 103 dc
+[<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F0003F0007F0001F8007F0000FC0
+07F00007E007F00007E007F00007F007F00003F007F00003F007F00003F007F00003F807
+F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F0
+0003F807F00003F007F00003F007F00003F007F00007E007F00007E007F0000FC007F000
+1F8007F0003F0007F0007E0007F003FC00FFFFFFF000FFFFFF8000>
+40 34 -2 33 43] 68 dc
+36 @bop1
+cmsy10.300 sf
+1752 1080(\000)s
+cmmi10.300 sf
+611 1080(n)s
+1084(n)h
+cmbx12.300 sf
+177 1869(1.7.4)s
+55(Understanding)h
+19(the)h
+18(Prin)h
+-2(ted)h
+19(Do)h
+2(cumen)h
+-2(tati)h
+-1(on)h
+cmtt10.300 sf
+177 42(@A@<Feed)s
+20(the)h
+21(Penguins)h
+21(and)h
+21(Save)h
+21(the)h
+21(World@>)h
+177 91(@B@<Feed)s
+20(the)h
+21(Penguins@>)h
+177 141(@C@<Feed)s
+20(the)h
+21(little)h
+21(penguins@>)h
+177 191(@C@<Feed)s
+20(the)h
+21(big)h
+22(penguins@>)h
+177 241(@B@<Save)s
+20(the)h
+21(World@>)h
+177 291(@C@<Save)s
+20(Europe@>)h
+177 340(@C@<Save)s
+20(Africa@>)h
+177 440(@C)s
+22(This)h
+21(heading)h
+20(hasn't)h
+20(been)h
+21(given)h
+21(an)h
+22(explicit)h
+20(name,)h
+20(but)h
+22(will)h
+21(inherit)h
+20(the)h
+177 490(name)s
+21(\\p{Save)h
+20(the)h
+22(rest)h
+21(of)h
+21(the)h
+21(world})h
+21(from)h
+21(the)h
+21(macro)h
+21(definition)h
+19(below.)h
+177 589(@$@<Save)s
+20(the)h
+21(rest)h
+21(of)h
+22(the)h
+21(world@>@Z==@{)h
+-1(...@)h
+-1(})h
+1406 1129(@C)s
+455(@A)h
+876 1179(@B)s
+177 1296(@A@<The)s
+21(Top)h
+21(Heading@>)h
+177 1346(@C@<Level)s
+20(C)h
+22(here)h
+21(is)h
+21(not)h
+21(allowed)h
+21(after)h
+20(an)h
+22(A)h
+21(and)h
+21(will)h
+21(cause)h
+21(an)h
+22(error@>)h
+177 1512(@A)s
+177 1628(This)s
+21(FunnelWeb)h
+20(input)h
+21(file)h
+21(is)h
+21(in)h
+22(error)h
+20(because)h
+21(its)h
+21(first)h
+21(section)h
+20(heading)h
+177 1678(is)s
+22(at)h
+21(level)h
+21(C)h
+21(rather)h
+21(than)h
+21(level)h
+21(A.)h
+177 1728(@C@<2@>)s
+177 2137(@A@<Table)s
+20(of)h
+21(Contents@>)h
+177 2237(@t)s
+22(table_of_c)h
+-1(onten)h
+-1(ts)h
+177 2337(@A@<Macros)s
+20(for)h
+21(Moral)h
+21(Support@>)h
+177 2436(The)s
+21(following)h
+20(macro)h
+21(contain)h
+20(comments)h
+21(that)h
+20(provide)h
+21(moral)h
+21(support)h
+20(in)h
+21(the)h
+177 2486(output)s
+21(code.)h
+177 2586(@$@<Programme)s
+-1(r's)h
+20(Cheer@>@M==)h
+-1(@{)h
+177 2635(--)s
+22(Shift)h
+20(to)h
+22(the)h
+21(left!)h
+177 2685(--)s
+22(Shift)h
+20(to)h
+22(the)h
+21(right!)h
+177 2735(--)s
+22(Pop)h
+21(up,)h
+21(push)h
+21(down!)h
+177 2785(--)s
+22(Byte!)h
+20(Byte!)h
+21(Byte!)h
+177 2835(--)s
+22(\(From)h
+20("The)h
+21(New)h
+21(Hacker's)h
+21(Dictionary")h
+-1(\).)h
+cmr10.300 sf
+177 706(The)s
+16(feature)h
+17(of)h
+15(ha)h
+-1(ving)h
+15(unnamed)h
+14(sections)h
+17(inherit)h
+16(the)h
+16(name)h
+15(of)h
+15(the)h
+16(\014rst)h
+17(macro)h
+15(de\014ned)h
+16(within)h
+15(their)h
+177 756(scop)s
+1(e)h
+14(is)h
+13(presen)h
+-1(t)h
+14(b)h
+1(ecause)h
+14(a)h
+13(comm)h
+-1(on)h
+10(st)h
+-1(yle)h
+13(of)h
+12(writing)h
+12(in)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(is)h
+12(to)h
+13(ha)h
+-1(v)h
+-1(e)h
+12(one)h
+13(section)h
+13(p)h
+1(er)h
+14(macro)h
+177 806(de\014nition.)s
+26(Because,)h
+19(under)h
+17(this)h
+17(st)h
+-1(yle,)h
+17(eac)h
+-1(h)h
+17(section)h
+17(describ)h
+1(es)h
+19(a)h
+16(single)h
+17(macro,)h
+15(it)h
+17(usually)h
+15(turns)h
+18(out)h
+177 855(that)s
+12(the)h
+13(macro)h
+11(name)h
+11(mak)h
+-1(es)h
+11(a)h
+12(go)h
+1(o)h
+1(d)h
+12(name)h
+11(for)h
+12(the)h
+13(section)h
+13(to)h
+1(o.)h
+17(The)h
+13(inheritance)h
+13(mec)h
+-1(hanism)h
+9(prev)h
+-1(en)h
+-1(ts)h
+177 905(duplication)s
+13(of)h
+13(the)h
+15(name.)h
+177 980(Apart)s
+12(from)h
+10(the)h
+12(requiremen)h
+-1(t)h
+12(that)h
+12(eac)h
+-1(h)h
+12(section)h
+12(ha)h
+-1(v)h
+-1(e)h
+12(an)h
+11(explicit)h
+11(or)h
+12(impli)h
+-1(cit)h
+10(name)h
+11(and)h
+11(that)h
+12(its)h
+12(sp)h
+1(ecial)h
+177 1030(sequence)s
+21(app)h
+1(ear)h
+19(at)h
+18(the)h
+19(start)h
+19(of)h
+18(a)h
+18(line,)h
+19(the)h
+19(only)h
+18(other)h
+19(restriction)h
+19(on)h
+19(section)h
+19(headings)h
+18(is)h
+19(that)h
+18(a)h
+177 1080(section)s
+14(heading)h
+12(at)h
+13(lev)h
+-1(el)h
+50(cannot)h
+13(app)h
+1(ear)h
+13(imm)h
+-1(ediately)h
+10(after)h
+13(a)h
+13(section)h
+13(heading)h
+13(at)h
+13(lev)h
+-1(el)h
+83(1)h
+13(or)h
+13(less.)h
+177 1129(In)s
+17(other)h
+17(w)h
+-1(ords,)h
+16(the)h
+17(hierarc)h
+-1(h)h
+-1(y)h
+17(cannot)h
+17(b)h
+1(e)h
+17(brok)h
+-1(en.)h
+26(F)h
+-3(or)h
+16(example,)h
+15(an)h
+76(cannot)h
+17(app)h
+1(ear)h
+16(after)h
+17(an)h
+177 1179(heading)s
+14(unless)h
+14(there)h
+16(is)h
+13(an)h
+14(in)h
+-1(terv)h
+-1(ening)h
+71(heading.)h
+177 1462(This)s
+14(rule)h
+14(extends)h
+16(to)h
+14(the)h
+15(start)h
+14(of)h
+14(the)h
+14(\014le;)h
+14(if)h
+13(there)h
+16(are)h
+14(an)h
+-1(y)h
+14(headings)h
+14(at)h
+14(all,)h
+12(the)h
+15(\014rst)h
+15(one)h
+14(m)h
+-1(ust)h
+13(b)h
+1(e)h
+15(an)h
+235 1512(heading.)s
+17(The)h
+15(follo)h
+-1(wi)h
+-1(ng)h
+12(\014le,)h
+13(while)h
+14(short,)h
+14(is)h
+13(in)h
+14(error.)h
+177 1971(T)s
+-1(yp)h
+1(e)h
+19(in)h
+18(the)h
+19(follo)h
+-1(wi)h
+-1(ng)h
+16(\014le,)h
+19(and)h
+19(use)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+18(and)h
+18(T)h
+1173 1980(E)s
+1196 1971(X)s
+18(to)h
+19(generate)h
+19(the)h
+19(corresp)h
+1(onding)h
+19(prin)h
+-1(ted)h
+177 2021(do)s
+1(cumen)h
+-1(tation.)h
+1042 2940(35)s
+36 @eop
+37 @bop0
+cmti10.300 sf
+[<03C4062C0C3C181C3838303870387038E070E070E070E070E0E0C0E0C0E061E063C03D
+C001C001C0038003800380038007803FF0>
+16 26 -5 17 19] 113 dc
+37 @bop1
+cmti10.300 sf
+1595 1931(hier)s
+-2(ar)h
+-2(chic)h
+-2(al)h
+2(ly)h
+326 1980(indep)s
+-2(endently)h
+585(se)h
+-2(quential)h
+2(ly)h
+835 2536(c)s
+-2(al)h
+2(l)h
+cmtt10.300 sf
+177 42(@})s
+177 141(The)s
+21(next)h
+21(macro)h
+21(is)h
+21(similar)h
+21(but)h
+21(is)h
+21(distributed)h
+20(throughout)h
+20(the)h
+21(program.)h
+177 191(@$@<Hacker's)s
+19(Cheer@>+=@{@+--)h
+19(Pointer)h
+21(to)h
+21(the)h
+21(left@+@})h
+177 291(@A@<An)s
+21(Extremely)h
+20(Imperative)h
+19(Stack)h
+21(Abstraction@>)h
+177 390(@B@<Define)s
+20(the)h
+21(Stack@>)h
+177 440(@$@<Hacker's)s
+19(Cheer@>+=@{--)h
+20(Pointer)h
+20(to)h
+21(the)h
+21(right@+@})h
+177 490(@$@<Stack)s
+20(Type@>@Z==@{t)h
+-1(ype)h
+20(stack)h
+20(=)h
+22(record)h
+20(...)h
+22(end;@})h
+177 589(@B@<Push)s
+20(the)h
+21(Stack@>)h
+177 639(@$@<Hacker's)s
+19(Cheer@>+=@{--)h
+20(Hack)h
+21(that)h
+21(code@+@})h
+177 689(@$@<Push)s
+20(Procedure@>@Z=)h
+-1(=@{@-)h
+177 739(procedure)s
+20(push\(var)h
+20(b:stack;)h
+20(v:value\);)h
+20(@<Programmer's)h
+19(Cheer@>)h
+21({...}@})h
+177 839(@B@<Pop)s
+21(the)h
+21(Stack@>)h
+177 888(@$@<Hacker's)s
+19(Cheer@>+=@{--)h
+20(Tight!)h
+20(Tight!)h
+21(Tight!@+@})h
+177 938(@$@<Pop)s
+21(Procedure@)h
+-1(>@Z==)h
+-1(@{@-)h
+177 988(procedure)s
+20(pop\(var)h
+20(b:stack\);)h
+20(@<Programmer's)h
+19(Cheer@>)h
+21({...}@})h
+177 1088(@B@<Rough)s
+20(the)h
+21(Stack)h
+21(Up)h
+21(a)h
+22(Bit@>)h
+177 1137(@$@<Hacker's)s
+19(Cheer@>+=@{--)h
+20(\(RNW,)h
+20(04-Jan-1991\).@)h
+-1(+@})h
+177 1187(@$@<Rough)s
+20(Procedure@>@Z)h
+-1(==@{@)h
+-1(-)h
+177 1237(procedure)s
+20(rough\(var)h
+20(b:stack\);)h
+20(@<Hacker's)h
+20(Cheer@>)h
+20({...}@})h
+177 1337(@O@<dummy.txt)s
+-1(@>==@)h
+-1({dumm)h
+-1(y@+@})h
+566 1678(@t)s
+177 2635(tt)s
+22(font)h
+cmr10.300 sf
+177 1525(An)s
+15(examination)h
+13(of)h
+14(the)h
+16(prin)h
+-1(ted)h
+15(do)h
+1(cumen)h
+-1(tation)h
+14(rev)h
+-1(eals)h
+16(a)h
+15(lot)h
+14(ab)h
+1(out)h
+15(ho)h
+-1(w)h
+15(F)h
+-3(unnelW)h
+-3(eb's)h
+14(presen)h
+-1(tation)h
+177 1574(w)s
+-1(orks.)h
+177 1678(First,)s
+13(notice)h
+13(ho)h
+-1(w)h
+13(the)h
+70(t)h
+-1(yp)h
+1(esetter)h
+15(directiv)h
+-1(e)h
+14(at)h
+12(the)h
+14(top)h
+13(of)h
+12(the)h
+13(\014le)h
+13(has)h
+13(caused)h
+14(a)h
+13(table)h
+13(of)h
+12(con)h
+-1(ten)h
+-1(ts)h
+14(to)h
+177 1728(app)s
+1(ear.)h
+24(This)h
+15(is)h
+16(one)h
+15(of)h
+15(F)h
+-3(unnelW)h
+-3(eb's)h
+15(t)h
+-1(yp)h
+1(esetting)h
+17(features)h
+16(and)h
+16(is)h
+15(discussed)h
+18(in)h
+15(a)h
+15(later)h
+16(section.)h
+23(The)h
+177 1777(table)s
+14(of)h
+13(con)h
+-1(ten)h
+-1(ts)h
+15(sho)h
+-1(ws)h
+14(that)h
+14(the)h
+15(sections)h
+15(ha)h
+-1(v)h
+-1(e)h
+14(b)h
+1(een)h
+15(n)h
+-1(um)h
+-1(b)h
+1(ered)h
+13(hierarc)h
+-1(hically)h
+-3(.)h
+177 1881(No)s
+-1(w)h
+18(tak)h
+-1(e)h
+19(a)h
+18(lo)h
+1(ok)h
+18(at)h
+18(the)h
+19(t)h
+-1(yp)h
+1(eset)h
+21(macro)h
+17(de\014nitions.)h
+32(Most)h
+19(imp)h
+1(ortan)h
+-1(t)h
+17(are)h
+19(the)h
+19(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+18(in)h
+18(square)h
+177 1931(brac)s
+-1(k)h
+-1(ets)h
+19(that)h
+18(follo)h
+-1(w)h
+16(eac)h
+-1(h)h
+18(macro)h
+17(name.)h
+28(As)h
+19(w)h
+-1(ell)h
+17(as)h
+18(n)h
+-1(um)h
+-1(b)h
+1(ering)h
+16(the)h
+18(headings)h
+259(,)h
+17(F)h
+-3(un-)h
+177 1980(nelW)s
+-3(eb)h
+276(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+15(the)h
+15(macro)h
+14(de\014nitions)h
+224(.)h
+21(The)h
+16(\014rst)h
+16(macro)h
+13(de\014nition)h
+15(\(for)h
+177 2030(\\Programm)s
+-1(er's)h
+17(Cheer"\))h
+19(is)h
+17(n)h
+-1(um)h
+-1(b)h
+1(ered)h
+18(1.)h
+30(The)h
+19(second)h
+19(\(for)h
+17(\\Hac)h
+-1(k)h
+-1(er's)h
+19(Cheer"\))h
+19(is)h
+18(n)h
+-1(um)h
+-1(b)h
+1(ered)h
+17(2)h
+18(and)h
+177 2080(so)s
+17(on.)h
+27(Note)h
+17(that)h
+17(it)h
+16(is)h
+17(not)h
+16(macros)h
+16(that)h
+17(are)h
+17(n)h
+-1(um)h
+-1(b)h
+1(ered,)h
+17(but)h
+17(macro)h
+16(de\014nitions.)h
+26(The)h
+18(distinction)h
+16(is)h
+177 2130(necessary)s
+14(b)h
+1(ecause)h
+14(some)h
+11(macros)h
+11(\(suc)h
+-1(h)h
+13(as)h
+12(the)h
+13(\\Hac)h
+-1(k)h
+-1(er's)h
+12(Cheer")h
+13(macro\))h
+11(are)h
+12(additiv)h
+-1(e.)h
+17(It)h
+12(is)h
+12(imp)h
+1(ortan)h
+-1(t)h
+177 2180(to)s
+16(realize)h
+16(that)h
+15(there)h
+17(is)h
+16(no)h
+15(relationship)h
+15(b)h
+1(et)h
+-1(w)h
+-1(een)h
+17(the)h
+16(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+16(of)h
+15(the)h
+16(headings)h
+15(and)h
+16(the)h
+16(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+15(of)h
+177 2229(the)s
+15(macro)h
+12(de\014nitions.)h
+177 2333(No)s
+-1(w)h
+13(tak)h
+-1(e)h
+13(a)h
+12(lo)h
+1(ok)h
+12(at)h
+13(the)h
+13(notes)h
+14(b)h
+1(eneath)h
+13(the)h
+14(b)h
+1(o)h
+1(dy)h
+13(of)h
+12(eac)h
+-1(h)h
+13(macro)h
+12(de\014nition.)h
+17(All)h
+12(macro)h
+12(de\014nitions)h
+12(are)h
+177 2383(follo)s
+-1(w)h
+-1(ed)h
+14(b)h
+-1(y)h
+16(a)h
+15(note)h
+16(indicating)h
+14(the)h
+17(de\014nitions)h
+15(in)h
+15(whic)h
+-1(h)h
+16(the)h
+16(macro)h
+14(is)h
+16(called.)h
+23(Additiv)h
+-1(e)h
+15(macros)h
+15(ha)h
+-1(v)h
+-1(e)h
+177 2432(an)s
+14(additional)h
+12(list,)h
+13(listing)h
+13(the)h
+14(de\014nitions)h
+14(in)h
+13(whic)h
+-1(h)h
+14(they)h
+15(are)h
+14(de\014ned.)h
+177 2536(Finally)s
+-3(,)h
+20(tak)h
+-1(e)h
+20(a)h
+20(lo)h
+1(ok)h
+19(at)h
+21(the)h
+21(macro)h
+101(of)h
+19(\\Programm)h
+-1(er's)h
+19(Cheer")h
+21(in)h
+20(section)h
+21(3.2)h
+20(of)h
+19(the)h
+21(prin)h
+-1(ted)h
+177 2586(do)s
+1(cumen)h
+-1(tation.)h
+18(Macro)h
+15(calls)h
+14(are)h
+14(set)h
+15(in)h
+14(slan)h
+-1(ted)h
+15(roman)h
+12(\(so)h
+15(that)h
+14(they)h
+15(can)h
+15(b)h
+1(e)h
+14(distinguished)h
+15(from)h
+12(the)h
+344 2635(co)s
+1(de\))h
+16(and)h
+14(are)h
+15(follo)h
+-1(w)h
+-1(ed)h
+13(b)h
+-1(y)h
+14(the)h
+15(n)h
+-1(um)h
+-1(b)h
+1(er)h
+14(of)h
+14(the)h
+15(de\014ning)h
+15(macro)h
+13(de\014nition.)h
+20(In)h
+14(this)h
+15(case,)h
+15(the)h
+177 2685(macro)s
+12(w)h
+-1(as)h
+13(de\014ned)h
+14(in)h
+12(de\014nition)h
+13(1.)h
+17(F)h
+-3(urther)h
+14(do)h
+-1(wn,)h
+12(the)h
+14(call)h
+12(to)h
+13(the)h
+14(\\Hac)h
+-1(k)h
+-1(er's)h
+13(Cheer")h
+14(macro)h
+11(indicates)h
+177 2735(that)s
+12(the)h
+13(macro)h
+11(w)h
+-1(as)h
+12(de\014ned)h
+13(in)h
+12(de\014nition)h
+11(2.)h
+18(In)h
+12(fact)h
+12(the)h
+12(macro)h
+11(is)h
+12(additiv)h
+-1(e)h
+12(and)h
+11(de\014nition)h
+12(2)h
+12(is)h
+12(just)h
+12(the)h
+177 2785(\014rst)s
+12(of)h
+10(man)h
+-1(y)h
+9(de\014nitions.)h
+17(T)h
+-3(o)h
+10(list)h
+11(all)h
+10(de\014nitions)h
+10(in)h
+11(a)h
+10(call)h
+11(to)h
+10(an)h
+11(additiv)h
+-1(e)h
+10(macro)h
+10(w)h
+-1(ould)h
+10(b)h
+1(e)h
+12(unnecessarily)h
+177 2835(messy)s
+-3(.)h
+1042 2940(36)s
+37 @eop
+38 @bop0
+cmbx12.300 sf
+[<FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F0000007F0000007F000
+0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
+0007F0000007F0000007F0000007F0001807F0001807F0001807F0001807F0003807F000
+3807F0007007F0007007F000F007F001F007F007F0FFFFFFF0FFFFFFF0>
+32 34 -2 33 34] 76 dc
+cmtt10.300 sf
+[<3FFFC07FFFC07FFFC0700780700F00701E00003C0000780001F00003E0000780000F00
+001E01C03C01C07801C0FFFFC0FFFFC0FFFFC0>
+24 18 -1 17 22] 122 dc
+38 @bop1
+cmsy10.300 sf
+1346 469(f)s
+88(g)h
+470 518(f)s
+88(g)h
+cmbx12.300 sf
+177 42(1.7.5)s
+55(Literals)h
+17(and)h
+20(Emphasis)h
+177 1055(1.7.6)s
+55(Adding)h
+19(a)h
+19(Header)h
+18(P)h
+-2(age)h
+177 2632(1.7.7)s
+55(Commen)h
+-2(ts)h
+cmtt10.300 sf
+618 244(topval)s
+339(stack)h
+15(pop)h
+1324 469(@)s
+21(...@)h
+115(@/...@/)h
+448 518(@)s
+21(...@)h
+574 568(@/...@/)s
+177 812(The)s
+21(following)h
+20(procedure)h
+20(@{put_sloth@})h
+19(writes)h
+21(the)h
+21(@{sloth@})h
+20(variable)h
+20(to)h
+177 861(the)s
+21(output)h
+21(file.)h
+21(Note:)h
+20(@/The)h
+21(output)h
+21(file)h
+21(must)h
+21(be)h
+21(opened)h
+21(for)h
+21(writing)h
+177 911(at)s
+22(this)h
+21(point)h
+20(or)h
+22(the)h
+21(program)h
+20(will)h
+21(crash!@/)h
+1423 1307(@t)s
+177 1524(@t)s
+22(vskip)h
+20(40)h
+22(mm)h
+177 1574(@t)s
+22(title)h
+20(titlefont)h
+20(centre)h
+21("Hairy)h
+20(Wombat")h
+177 1624(@t)s
+22(title)h
+20(titlefont)h
+20(centre)h
+21("Simulation")h
+177 1674(@t)s
+22(vskip)h
+20(10)h
+22(mm)h
+177 1723(@t)s
+22(title)h
+20(smalltitlefont)h
+19(centre)h
+21("A)h
+21(Program)h
+20(in)h
+22(Six)h
+21(Parts")h
+177 1773(@t)s
+22(title)h
+20(smalltitlefont)h
+19(centre)h
+21("Simulating)h
+19(the)h
+21(Life)h
+21(of)h
+22(Some)h
+21(Hairy)h
+21(Wombats")h
+177 1823(@t)s
+22(vskip)h
+20(20)h
+22(mm)h
+177 1873(@t)s
+22(title)h
+20(normalfont)h
+20(left)h
+21("By)h
+21(Zqitzypbuswap)h
+-1(zra)h
+20(Ypongtatosl)h
+-1(rtzz")h
+177 1923(@t)s
+22(new_page)h
+177 1973(@t)s
+22(table_of_c)h
+-1(onten)h
+-1(ts)h
+177 2022(@t)s
+22(new_page)h
+262 2140(@t)s
+1534(vskip)h
+1840 2190(title)s
+1182 2290(title)s
+639 2340(titlefont)s
+26(smalltitlefon)h
+-1(t)h
+110(normalfont)h
+177 2389(title)s
+1092(left)h
+27(right)h
+108(centre)h
+177 2439(new)s
+15(page)h
+1245(table)h
+14(of)h
+15(contents)h
+1002 2735(@!)s
+651 2835(@i)s
+168(@p)h
+256(@t)h
+cmr10.300 sf
+177 144(When)s
+17(writing)h
+16(ab)h
+1(out)h
+17(program)h
+15(co)h
+1(de,)h
+18(it)h
+17(is)h
+17(often)h
+17(desirable)h
+17(to)h
+17(b)h
+1(e)h
+17(able)h
+17(to)h
+17(indicate)h
+16(that)h
+17(a)h
+17(particular)h
+177 194(w)s
+-1(ord)h
+11(or)h
+11(phrase)h
+12(b)h
+1(e)h
+12(t)h
+-1(yp)h
+1(eset)h
+13(in)h
+10(the)h
+12(same)h
+10(manner)h
+10(as)h
+11(the)h
+12(co)h
+1(de)h
+12(b)h
+1(eing)h
+11(discussed.)h
+19(F)h
+-3(or)h
+11(example,)h
+10(one)h
+11(migh)h
+-1(t)h
+177 244(talk)s
+16(ab)h
+1(out)h
+17(the)h
+17(v)h
+-2(ariable)h
+163(or)h
+16(the)h
+18(pro)h
+1(cedure)h
+225(and)h
+16(wish)h
+17(for)h
+16(them)h
+16(to)h
+16(b)h
+1(e)h
+18(t)h
+-1(yp)h
+1(eset)h
+18(as)h
+177 294(they)s
+15(are)h
+14(in)h
+13(this)h
+15(sen)h
+-1(tence.)h
+20(This,)h
+13(of)h
+14(course,)h
+15(is)h
+13(simple)h
+13(to)h
+14(do)h
+13(using)h
+14(T)h
+1355 303(E)s
+1378 294(X)s
+14(macros,)h
+13(but)h
+14(use)h
+15(of)h
+13(the)h
+15(\(more)h
+177 343(general\))s
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(t)h
+-1(yp)h
+1(esetting)h
+16(directiv)h
+-1(es)h
+16(to)h
+16(do)h
+15(the)h
+16(same)h
+14(w)h
+-1(ork)h
+15(has)h
+16(the)h
+16(added)h
+15(b)h
+1(ene\014t)h
+17(of)h
+15(k)h
+-1(eeping)h
+177 393(the)s
+15(do)h
+1(cumen)h
+-1(t)h
+13(p)h
+1(ortable)h
+14(to)h
+14(other)h
+14(t)h
+-1(yp)h
+1(esetter)h
+1(s.)h
+177 469(F)s
+-3(unnelW)h
+-3(eb)h
+14(pro)h
+-1(vides)h
+15(t)h
+-1(w)h
+-1(o)h
+14(in-text)h
+14(t)h
+-1(yp)h
+1(e)h
+15(mo)h
+1(di\014cation)h
+13(constructs:)h
+186(and)h
+181(where)h
+16(.)h
+7(.)h
+7(.)h
+13(is)h
+177 518(ra)s
+-1(w)h
+15(text.)h
+20(The)h
+180(construct)h
+16(sets)h
+16(the)h
+16(enclosed)h
+15(text)h
+15(in)h
+14(the)h
+16(same)h
+13(manner)h
+14(as)h
+15(the)h
+15(text)h
+15(of)h
+14(macro)h
+177 568(de\014nitions)s
+10(is)h
+10(set.)h
+18(The)h
+173(construct)h
+12(emphasises)h
+10(its)h
+11(enclosed)h
+11(text)h
+11(in)h
+9(some)h
+10(t)h
+-1(yp)h
+1(esetter-de)h
+1(p)h
+1(ende)h
+1(n)h
+-1(t)h
+177 618(fashion.)s
+17(T)h
+-1(ypically)h
+13(the)h
+14(emphasised)h
+14(text)h
+14(is)h
+14(set)h
+15(in)h
+13(italics.)h
+177 693(Here)s
+15(is)h
+14(an)h
+14(example)h
+12(of)h
+14(ho)h
+-1(w)h
+13(these)h
+15(constructs)h
+16(migh)h
+-1(t)h
+12(b)h
+1(e)h
+15(used:)h
+177 1157(F)s
+-3(unnelW)h
+-3(eb)h
+19(pro)h
+-1(vides)h
+20(a)h
+19(few)h
+20(t)h
+-1(yp)h
+1(esetter-indep)h
+1(e)h
+1(nden)h
+-1(t)h
+22(t)h
+-1(yp)h
+1(esetting)h
+21(constructs)h
+21(whic)h
+-1(h)h
+20(are)h
+20(sp)h
+1(eci\014cally)h
+177 1207(designed)s
+14(for)h
+13(the)h
+13(construction)h
+15(of)h
+12(header)h
+14(pages.)h
+18(These)h
+15(constructs)h
+15(are)h
+13(usually)h
+13(b)h
+1(est)h
+14(placed)h
+13(at)h
+13(the)h
+14(top)h
+177 1257(of)s
+12(y)h
+-1(our)h
+11(input)h
+12(\014le,)h
+12(but)h
+13(can)h
+12(b)h
+1(e)h
+13(placed)h
+12(an)h
+-1(ywhere)h
+13(the)h
+12(do)h
+1(cumen)h
+-1(t)h
+12(if)h
+11(desired)h
+13(to)h
+12(create)h
+14(header)h
+13(pages)h
+12(righ)h
+-1(t)h
+177 1307(through.)s
+24(The)h
+16(t)h
+-1(w)h
+-1(o)h
+15(main)h
+14(restrictions)h
+17(on)h
+15(these)h
+17(constructs)h
+18(is)h
+16(that)h
+16(the)h
+75(m)h
+-1(ust)h
+15(start)h
+16(at)h
+16(the)h
+16(start)h
+16(of)h
+177 1356(a)s
+17(line)h
+16(\(whic)h
+-1(h)h
+17(cannot)h
+17(con)h
+-1(tain)h
+16(comm)h
+-1(en)h
+-1(ts\),)h
+16(and)h
+17(that)h
+17(the)h
+17(constructs)h
+19(cannot)h
+17(app)h
+1(ear)h
+17(inside)h
+17(a)h
+16(macro)h
+177 1406(de\014nition.)s
+18(Here)h
+15(is)h
+14(what)h
+13(the)h
+15(top)h
+14(of)h
+13(an)h
+14(input)h
+13(\014le)h
+14(migh)h
+-1(t)h
+12(lo)h
+1(ok)h
+13(lik)h
+-1(e:)h
+177 2140(The)s
+70(at)h
+13(the)h
+14(start)h
+14(of)h
+12(eac)h
+-1(h)h
+14(line)h
+12(indicates)h
+14(that)h
+13(eac)h
+-1(h)h
+13(en)h
+-1(tire)h
+14(line)h
+13(is)h
+13(a)h
+13(t)h
+-1(yp)h
+1(esetter)h
+15(directiv)h
+-1(e.)h
+18(The)h
+177 2190(directiv)s
+-1(e)h
+16(instructs)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+15(to)h
+16(skip)h
+15(some)h
+15(v)h
+-1(ertical)h
+15(space)h
+17(\(measured)h
+16(in)h
+15(mil)h
+-1(li)h
+-1(m)h
+-1(etres\).)h
+23(The)h
+177 2240(directiv)s
+-1(e)h
+15(instructs)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+14(to)h
+15(p)h
+1(osition)h
+14(a)h
+14(string)h
+14(of)h
+14(text)h
+16(on)h
+14(a)h
+14(single)h
+14(line)h
+14(of)h
+14(its)h
+15(o)h
+-1(wn.)h
+20(Options)h
+14(are)h
+177 2290(pro)s
+-1(vided)h
+16(for)h
+16(fon)h
+-1(t)h
+15(and)h
+16(alignmen)h
+-1(t.)h
+23(The)h
+16(\014rst)h
+17(w)h
+-1(ord)h
+16(after)h
+141(is)h
+16(the)h
+17(fon)h
+-1(t)h
+15(whic)h
+-1(h)h
+16(can)h
+17(b)h
+1(e)h
+16(one)h
+17(of)h
+15(\(in)h
+177 2340(decreasing)s
+18(order)h
+17(of)h
+15(size\))h
+216(,)h
+321(,)h
+15(and)h
+236(.)h
+23(The)h
+17(second)h
+17(w)h
+-1(ord)h
+17(after)h
+301 2389(is)s
+16(the)h
+16(desired)h
+16(alignm)h
+-1(en)h
+-1(t)h
+14(of)h
+15(the)h
+16(text.)h
+23(The)h
+16(options)h
+15(here)h
+16(are)h
+104(,)h
+125(,)h
+14(and)h
+147(.)h
+21(The)h
+362 2439(directiv)s
+-1(e)h
+16(instructs)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+15(to)h
+16(skip)h
+16(to)h
+16(a)h
+16(new)h
+17(page.)h
+25(Finally)h
+-3(,)h
+14(the)h
+177 2489(directiv)s
+-1(e)h
+15(instructs)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(to)h
+14(insert)h
+15(a)h
+13(table)h
+14(of)h
+13(con)h
+-1(ten)h
+-1(ts)h
+15(at)h
+14(that)h
+14(p)h
+1(oin)h
+-1(t)h
+13(in)h
+14(the)h
+14(text.)h
+177 2735(A)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(comm)h
+-1(en)h
+-1(t)h
+12(commences)h
+13(with)h
+14(the)h
+77(sequence)h
+16(and)h
+13(con)h
+-1(tin)h
+-1(ues)h
+15(up)h
+14(to,)h
+13(but)h
+14(not)h
+14(including,)h
+177 2785(the)s
+15(end)h
+14(of)h
+14(line)h
+14(mark)h
+-1(er)h
+13(at)h
+14(the)h
+14(end)h
+15(of)h
+13(the)h
+15(line)h
+14(that)h
+14(the)h
+15(comm)h
+-1(en)h
+-1(t)h
+12(sequence)h
+17(is)h
+14(on.)h
+18(Comm)h
+-1(en)h
+-1(ts)h
+13(can)h
+14(b)h
+1(e)h
+177 2835(placed)s
+14(on)h
+14(an)h
+-1(y)h
+13(line)h
+14(except)h
+73(include,)h
+70(pragma,)h
+12(and)h
+71(t)h
+-1(yp)h
+1(esetter)h
+16(directiv)h
+-1(e)h
+15(lines.)h
+1042 2940(37)s
+14 2 1202 244 r
+14 2 246 2439 r
+14 2 1704 2439 r
+14 2 1762 2439 r
+38 @eop
+39 @bop0
+cmbx10.432 sf
+[<003FC00001FFF00003FFFC000FC07E000F003F001F001F001E001F803E000F803E000F
+803F000F803F800F803FC01F803FF01F003FFC3F001FFE7E001FFFF8000FFFE00007FFF8
+0001FFFC0001FFFF0007FFFF801F8FFF803F03FFC07E01FFC07C007FE0FC001FE0F8000F
+E0F80007E0F80003E0F80003E0F80003E0FC0003C07C0007C07E0007803F000F801FC03F
+000FFFFC0003FFF800007FC000>
+32 39 -3 38 34] 56 dc
+[<00003FF001800003FFFE0780000FFFFF8F80003FF007FF8000FF8001FF8001FE00007F
+8007FC00003F8007F800001F800FF000000F801FE000000F803FE0000007803FC0000007
+807FC0000003807FC0000003807FC000000380FF8000000000FF8000000000FF80000000
+00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
+00FF8000000000FF80000000007FC0000000007FC0000003807FC0000003803FC0000003
+803FE0000003801FE0000007800FF00000070007F800000F0007FC00001E0001FE00003C
+0000FF8000F800003FF007F000000FFFFFC0000003FFFF000000003FF80000>
+48 41 -4 40 50] 67 dc
+[<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC001FE003FC0007F003FC0001F003FC0001F0
+03FC0000F003FC00007003FC00007003FC00007003FC01C07803FC01C03803FC01C03803
+FC01C03803FC03C00003FC03C00003FC0FC00003FFFFC00003FFFFC00003FFFFC00003FC
+0FC00003FC03C00003FC03C00003FC01C00E03FC01C00E03FC01C00E03FC01C01C03FC00
+001C03FC00001C03FC00001C03FC00003C03FC00003803FC00007803FC0000F803FC0001
+F803FC0003F803FC001FF8FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0>
+40 41 -3 40 45] 69 dc
+[<FFFC0FFF00FFFC0FFF00FFFC0FFF0007F003C00003F807800001FC07800000FE0F0000
+00FF1E0000007F3C0000003FF80000001FF00000000FF00000000FF000000007F0000000
+07F80000000FFC0000001FFE0000001EFE0000003C7F000000783F800000F01FC00001E0
+1FE00001C00FE00003C007F000FFF01FFF80FFF01FFF80FFF01FFF80>
+40 27 -1 26 36] 120 dc
+cmtt10.300 sf
+[<0FE03FF87FFCF01EF00EF00E601E007C00F801F003E003C00380038003800380030000
+000000000000000300078007800300>
+16 25 -3 24 22] 63 dc
+39 @bop1
+cmbx10.432 sf
+177 564(1.8)s
+70(A)h
+23(Com)h
+-1(pl)h
+-1(et)h
+-1(e)h
+21(Exampl)h
+-1(e)h
+cmr10.300 sf
+177 42(The)s
+17(text)h
+16(follo)h
+-1(wing)h
+14(the)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+15(comm)h
+-1(en)h
+-1(t)h
+15(sequence)h
+87(will)h
+15(not)h
+16(app)h
+1(ear)h
+16(in)h
+16(the)h
+16(pro)h
+1(duct)h
+17(\014les)h
+17(or)h
+177 91(the)s
+13(do)h
+1(cumen)h
+-1(tation)h
+11(\014le.)h
+17(It)h
+12(is)h
+12(only)h
+12(for)h
+11(the)h
+13(ey)h
+-1(es)h
+13(of)h
+12(those)h
+13(who)h
+11(b)h
+1(other)h
+13(to)h
+12(lo)h
+1(ok)h
+12(at)h
+12(the)h
+12(original)h
+88(input)h
+177 141(\014le.)s
+18(T)h
+-1(ypically)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+14(comm)h
+-1(en)h
+-1(ts)h
+13(are)h
+14(used)h
+15(to)h
+13(describ)h
+1(e)h
+16(the)h
+14(w)h
+-1(a)h
+-1(y)h
+14(in)h
+13(whic)h
+-1(h)h
+14(particular)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+177 191(constructs)s
+16(are)h
+14(b)h
+1(eing)h
+14(used.)h
+19(Example:)h
+177 679(T)s
+-3(o)h
+16(\014nish)h
+17(o\013)h
+16(the)h
+17(c)h
+-1(hapter,)h
+18(a)h
+16(complete)h
+16(example)h
+15(of)h
+16(a)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(input)h
+16(\014le)h
+17(is)h
+16(presen)h
+-1(ted.)h
+28(Although)h
+177 729(unrealistically)s
+13(short,)h
+14(it)h
+13(giv)h
+-1(es)h
+14(a)h
+14(b)h
+1(etter)h
+15(idea)h
+14(of)h
+13(what)h
+14(a)h
+13(t)h
+-1(ypical)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+93(\014le)h
+14(lo)h
+1(oks)h
+13(lik)h
+-1(e.)h
+1042 2940(38)s
+cmtt10.300 sf
+1179 42(@!)s
+1775 91(.fw)s
+177 304(@!)s
+22(This)h
+21(macro)h
+20(is)h
+22(really)h
+20(revolting.)h
+20(Please)h
+20(forgive)h
+21(me.)h
+21(I)h
+22(had)h
+21(to)h
+21(do)h
+22(it!)h
+177 354(@$@<Revolt)s
+20(Me@>==@{@-)h
+177 404(@#X@\(@#Y@\(@#Z)s
+-1(@,@"@)h
+-1(#Z@"@)h
+-1(\)=6@,)h
+-1(Teapo)h
+-1(t@,@")h
+-1(@#Q@)h
+-1(\(45@\))h
+-1(@"@,T)h
+-1(iger@)h
+-1(\)@})h
+1490 729(.fw)s
+177 842(@!-----------)s
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(---!)h
+177 892(@!)s
+43(Start)h
+21(of)h
+21(FunnelWeb)h
+20(Example)h
+21(.fw)h
+21(File)h
+43(!)h
+177 942(@!-----------)s
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(---!)h
+177 1041(@t)s
+22(vskip)h
+20(40)h
+22(mm)h
+177 1091(@t)s
+22(title)h
+20(titlefont)h
+20(centre)h
+21("Powers:")h
+177 1141(@t)s
+22(title)h
+20(titlefont)h
+20(centre)h
+21("An)h
+21(Example)h
+20(of")h
+177 1191(@t)s
+22(title)h
+20(titlefont)h
+20(centre)h
+21("A)h
+21(Short")h
+177 1241(@t)s
+22(title)h
+20(titlefont)h
+20(centre)h
+21("FunnelWeb)h
+20(.fw)h
+21(File")h
+177 1290(@t)s
+22(vskip)h
+20(10)h
+22(mm)h
+177 1340(@t)s
+22(title)h
+20(smalltitlefont)h
+19(centre)h
+21("by)h
+21(Ross)h
+21(Williams")h
+177 1390(@t)s
+22(title)h
+20(smalltitlefont)h
+19(centre)h
+21("26)h
+21(January)h
+20(1992")h
+177 1440(@t)s
+22(vskip)h
+20(20)h
+22(mm)h
+177 1490(@t)s
+22(table_of_c)h
+-1(onten)h
+-1(ts)h
+177 1589(@A@<FunnelWeb)s
+19(Example)h
+21(Program@>)h
+177 1689(This)s
+43(program)h
+20(writes)h
+43(out)h
+21(each)h
+43(of)h
+21(the)h
+43(first)h
+21(@{p@})h
+42(powers)h
+21(of)h
+43(the)h
+21(first)h
+43(@{n@})h
+177 1739(integers.)s
+20(These)h
+43(constant)h
+20(parameters)h
+20(are)h
+21(located)h
+42(here)h
+21(so)h
+21(that)h
+21(they)h
+43(are)h
+21(easy)h
+21(to)h
+177 1789(change.)s
+177 1888(@$@<Constants)s
+-1(@>==@)h
+-1({@-)h
+177 1938(n)s
+22(:)h
+21(constant)h
+20(natural)h
+21(:=)h
+21(10;)h
+109(--)h
+21(How)h
+21(many)h
+21(numbers?)h
+20(\(Ans:)h
+21([1,n]\).)h
+177 1988(p)s
+22(:)h
+21(constant)h
+20(natural)h
+21(:=)h
+43(5;)h
+109(--)h
+21(How)h
+21(many)h
+21(powers?)h
+42(\(Ans:)h
+21([1,p]\).@})h
+177 2087(@B)s
+22(Here)h
+21(is)h
+43(the)h
+21(outline)h
+20(of)h
+22(the)h
+43(program.)h
+20(This)h
+21(FunnelWeb)h
+20(file)h
+42(generates)h
+20(a)h
+22(single)h
+177 2137(Ada)s
+21(output)h
+21(file)h
+43(called)h
+20(@{Power.ada@}.)h
+19(The)h
+21(main)h
+21(program)h
+21(consists)h
+42(of)h
+21(a)h
+21(loop)h
+21(that)h
+177 2187(iterates)s
+20(once)h
+21(for)h
+21(each)h
+21(number)h
+21(to)h
+21(be)h
+22(written)h
+20(out.)h
+177 2287(@O@<Power.ada)s
+-1(@>==@)h
+-1({@-)h
+177 2337(@<Pull)s
+21(in)h
+21(packages@>)h
+177 2436(procedure)s
+20(example)h
+20(is)h
+243 2486(@<Constant)s
+-1(s@>)h
+177 2536(begin)s
+21(--)h
+21(example)h
+243 2586(for)s
+21(i)h
+21(in)h
+22(1..n)h
+21(loop)h
+308 2635(@<Write)s
+20(out)h
+21(the)h
+22(first)h
+20(p)h
+22(powers)h
+21(of)h
+21(i)h
+21(on)h
+22(a)h
+21(single)h
+21(line@>)h
+243 2685(end)s
+21(loop;)h
+177 2735(end)s
+21(example;)h
+177 2785(@})s
+39 @eop
+40 @bop0
+cmbx10.432 sf
+[<007F800001FFF00007FFF8000FE0FE001FC07E003F803F007F003F807F003F80FF001F
+C0FF001FC0FF001FC0FF001FC0FF001FE0FF001FE0FF001FE0FF001FE07F003FE07F003F
+E07F003FE03F807FE01F80FFE00FE1DFE003FF9FE0007E1FE000001FE000001FC000001F
+C000001FC000003FC01F003F803F803F803F807F003F807F003F80FE003F01FC001E03F8
+000FFFE00007FF800001FE0000>
+32 39 -3 38 34] 57 dc
+[<007F806003FFF0E00FFFFFE01F807FE03F001FE07E0007E07E0003E07C0003E0FC0001
+E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFE00007FFFE0003FFFFC
+003FFFFF001FFFFF8007FFFFC003FFFFE000FFFFF00007FFF000007FF000000FF8000007
+F8000003F8E00003F8E00001F8E00001F8E00001F8F00001F8F00001F0F80003F0FC0003
+E0FF0007E0FFE01FC0FFFFFF00E0FFFE00C01FF000>
+32 41 -4 40 38] 83 dc
+cmtt10.300 sf
+[<03800007E0000FE0001E70001C70001C70001C70001C77E01CE7E01DE7E00FC7000F8E
+000F0E001E0E003F1C007F1C00739C00E3F800E1F800E0F1C0E0F1C071F9C07FFFC03F9F
+801E0700>
+24 25 -1 24 22] 38 dc
+40 @bop1
+cmbx10.432 sf
+177 1399(1.9)s
+70(Sum)h
+-1(m)h
+-2(ary)h
+cmr10.300 sf
+177 1515(This)s
+17(c)h
+-1(hapter)h
+18(has)h
+17(pro)h
+-1(vided)h
+17(an)h
+17(in)h
+-1(tro)h
+1(duction)h
+17(to)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(and)h
+17(a)h
+17(tutorial)h
+16(that)h
+18(co)h
+-1(v)h
+-1(ers)h
+17(most)h
+16(of)h
+17(its)h
+177 1565(features.)s
+18(F)h
+-3(unnelW)h
+-3(eb's)h
+11(functionalit)h
+-1(y)h
+10(can)h
+11(b)h
+1(e)h
+12(split)h
+11(in)h
+-1(to)h
+11(t)h
+-1(w)h
+-1(o)h
+11(parts:)h
+17(a)h
+11(macro)h
+10(prepro)h
+1(cess)h
+1(or,)h
+13(and)h
+11(supp)h
+1(ort)h
+177 1615(for)s
+12(t)h
+-1(yp)h
+1(esetting.)h
+18(The)h
+13(reader)h
+13(should)h
+12(b)h
+1(e)h
+12(a)h
+-1(w)h
+-1(are)h
+12(that)h
+12(the)h
+13(examples)h
+11(in)h
+11(this)h
+12(c)h
+-1(hapter,)h
+13(constructed)h
+14(as)h
+12(they)h
+177 1664(w)s
+-1(ere)h
+13(to)h
+11(demonstrate)h
+11(particular)h
+11(features)h
+13(of)h
+11(F)h
+-3(unnelW)h
+-3(eb,)h
+11(do)h
+11(not)h
+11(presen)h
+-1(t)h
+13(a)h
+11(realistic)h
+12(picture)h
+12(of)h
+11(the)h
+12(b)h
+1(est)h
+177 1714(use)s
+15(of)h
+14(the)h
+15(to)h
+1(ol.)h
+19(Only)h
+14(the)h
+15(\014nal)h
+14(example)h
+13(of)h
+14(this)h
+15(c)h
+-1(hapter)h
+15(comes)h
+14(close.)h
+20(The)h
+15(reader)h
+16(should)h
+14(study)h
+15(this)h
+177 1764(last)s
+15(example)h
+14(carefully)h
+15(and)h
+15(then)h
+16(write)h
+15(some)h
+14(real)h
+15(programs)h
+14(using)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(b)h
+1(efore)h
+16(pro)h
+1(ceeding)h
+16(to)h
+177 1814(Chapter)s
+12(2)h
+11(whic)h
+-1(h)h
+11(pro)h
+-1(vides)h
+11(more)h
+10(adv)h
+-2(anced)h
+11(information.)h
+15(A)h
+-1(t)h
+11(this)h
+11(stage)h
+12(it)h
+10(do)h
+1(es)h
+12(not)h
+11(particularly)h
+10(matter)h
+177 1864(exactly)s
+12(ho)h
+-1(w)h
+10(y)h
+-1(ou)h
+11(use)h
+12(F)h
+-3(unnelw)h
+-1(eb,)h
+12(as)h
+11(ev)h
+-1(ery)h
+-1(one)h
+12(dev)h
+-1(elops)h
+12(their)h
+11(o)h
+-1(wn)h
+11(st)h
+-1(yle)h
+12(an)h
+-1(yw)h
+-1(a)h
+-1(y)h
+-3(.)h
+15(The)h
+12(imp)h
+1(ortan)h
+-1(t)h
+9(thing)h
+177 1914(is)s
+14(to)h
+14(try)h
+14(it.)h
+1042 2940(39)s
+cmtt10.300 sf
+177 42(@B)s
+22(In)h
+21(this)h
+21(section,)h
+42(we)h
+21(pull)h
+21(in)h
+22(the)h
+21(packages)h
+20(that)h
+21(this)h
+21(program)h
+42(needs)h
+21(to)h
+21(run.)h
+21(In)h
+177 91(fact,)s
+21(all)h
+21(we)h
+21(need)h
+21(is)h
+22(the)h
+21(IO)h
+21(package)h
+21(so)h
+21(that)h
+21(we)h
+21(can)h
+22(write)h
+20(out)h
+22(the)h
+21(results.)h
+20(To)h
+21(use)h
+177 141(the)s
+21(IO)h
+22(package,)h
+20(we)h
+21(first)h
+21(of)h
+21(all)h
+22(need)h
+42(to)h
+22(haul)h
+21(it)h
+21(in)h
+21(\(@{with)h
+21(text_io@}\))h
+19(and)h
+22(then)h
+177 191(we)s
+22(need)h
+21(to)h
+21(make)h
+21(all)h
+21(its)h
+21(identifiers)h
+20(visible)h
+20(at)h
+21(the)h
+22(top)h
+21(level)h
+21(\(@{use)h
+20(text_io@}\).)h
+177 291(@$@<Pull)s
+20(in)h
+22(packages@>=)h
+-1(=@{wi)h
+-1(th)h
+20(text_io;)h
+20(use)h
+21(text_io;@})h
+177 390(@B)s
+22(Here)h
+21(is)h
+43(the)h
+21(bit)h
+21(that)h
+21(writes)h
+21(out)h
+43(the)h
+21(first)h
+20(@{p@})h
+21(powers)h
+21(of)h
+43(@{i@}.)h
+20(The)h
+22(power)h
+177 440(values)s
+43(are)h
+42(calculated)h
+42(incrementally)h
+41(in)h
+43(@{ip@})h
+42(to)h
+44(avoid)h
+42(the)h
+43(use)h
+43(of)h
+43(the)h
+177 490(exponentiatio)s
+-1(n)h
+20(operator.)h
+177 589(@$@<Write)s
+20(out)h
+21(the)h
+21(first)h
+21(p)h
+22(powers)h
+20(of)h
+22(i)h
+21(on)h
+22(a)h
+21(single)h
+21(line@>==@{@-)h
+177 639(declare)s
+243 689(ip)s
+21(:)h
+22(natural)h
+20(:=)h
+21(1;)h
+177 739(begin)s
+243 789(for)s
+21(power)h
+20(in)h
+22(1..p)h
+21(loop)h
+308 839(ip:=ip*i;)s
+308 888(put\(natural')s
+-1(image)h
+-1(\(ip\))h
+19(&)h
+22(")h
+22("\);)h
+243 938(end)s
+21(loop;)h
+243 988(new_line;)s
+177 1038(end;@})s
+177 1137(@!-----------)s
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(---!)h
+177 1187(@!)s
+65(End)h
+21(of)h
+22(FunnelWeb)h
+20(Example)h
+20(.fw)h
+21(File)h
+65(!)h
+177 1237(@!-----------)s
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(---!)h
+40 @eop
+41 @bop0
+41 @bop1
+cmr10.300 sf
+1042 2940(40)s
+41 @eop
+42 @bop0
+cmbx10.622 sf
+[<0007FE0000007FFFE00001FFFFF80003FFFFFE000FF01FFF001FC007FFC03F0003FFE0
+7E0001FFE07FC000FFF07FE000FFF8FFF0007FF8FFF0007FF8FFF0003FFCFFF0003FFCFF
+F0003FFCFFF0003FFC7FE0003FFC7FE0003FFC1F80003FFC0000003FFC0000003FF80000
+007FF80000007FF80000007FF0000000FFE0000000FFE0000001FFC0000003FF80000003
+FF00000007FE0000000FF80000001FF00000001FE00000003F800000007F00000000FE00
+000001FC00000003F0003C0007E0003C000FC0003C001F800078003F000078007C000078
+00F80000F800F00000F801FFFFFFF803FFFFFFF007FFFFFFF00FFFFFFFF01FFFFFFFF03F
+FFFFFFF07FFFFFFFF0FFFFFFFFF0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0>
+40 56 -5 55 49] 50 dc
+cmbx10.746 sf
+[<FFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFFC
+00FFFFFFFFFFFFFFFE00001FFFC00003FFFE00001FFFC000003FFE00001FFFC000000FFE
+00001FFFC0000003FE00001FFFC0000001FE00001FFFC0000000FE00001FFFC0000000FE
+00001FFFC00000007E00001FFFC00000007F00001FFFC00000003F00001FFFC00000003F
+00001FFFC00000001F00001FFFC00000001F00001FFFC00000001F00001FFFC00000001F
+00001FFFC0007C001F00001FFFC0007C000F80001FFFC0007C000F80001FFFC0007C000F
+80001FFFC0007C000F80001FFFC0007C000000001FFFC000FC000000001FFFC000FC0000
+00001FFFC000FC000000001FFFC001FC000000001FFFC003FC000000001FFFC01FFC0000
+00001FFFFFFFFC000000001FFFFFFFFC000000001FFFFFFFFC000000001FFFFFFFFC0000
+00001FFFFFFFFC000000001FFFC01FFC000000001FFFC003FC000000001FFFC001FC0000
+00001FFFC000FC000000001FFFC000FC000000001FFFC000FC000000001FFFC0007C0000
+00001FFFC0007C000000001FFFC0007C000000001FFFC0007C000000001FFFC0007C0000
+00001FFFC0007C000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
+00001FFFC00000000000FFFFFFFFFF00000000FFFFFFFFFF00000000FFFFFFFFFF000000
+00FFFFFFFFFF00000000FFFFFFFFFF00000000>
+72 70 -4 69 75] 70 dc
+[<FFFFFFFFC03FFFFFFFF0001FFFFFF0FFFFFFFFC03FFFFFFFF0001FFFFFF0FFFFFFFFC0
+3FFFFFFFF0001FFFFFF0FFFFFFFFC03FFFFFFFF0001FFFFFF0FFFFFFFFC03FFFFFFFF000
+1FFFFFF0007FFF0000001FFFE00000000FF800007FFF0000000FFFE000000003E000007F
+FF8000000FFFE000000007E000003FFF8000000FFFF000000007C000003FFFC0000007FF
+F000000007C000003FFFC0000007FFF80000000FC000001FFFC0000003FFF80000000F80
+00001FFFE0000003FFF80000001F8000000FFFE0000003FFFC0000001F0000000FFFE000
+0001FFFC0000001F0000000FFFF0000001FFFE0000003F00000007FFF0000001FFFE0000
+003E00000007FFF8000001FFFE0000007E00000003FFF8000003FFFF0000007C00000003
+FFF8000003FFFF0000007C00000003FFFC000003FFFF000000FC00000001FFFC000007FF
+FF800000F800000001FFFE000007FFFF800000F800000001FFFE000007FFFFC00001F800
+000000FFFE00000F9FFFC00001F000000000FFFF00000F9FFFC00003F0000000007FFF00
+001F9FFFE00003E0000000007FFF00001F0FFFE00003E0000000007FFF80001F0FFFE000
+07E0000000003FFF80003F0FFFF00007C0000000003FFFC0003E07FFF00007C000000000
+1FFFC0007E07FFF8000F80000000001FFFC0007C03FFF8000F80000000001FFFE0007C03
+FFF8001F80000000000FFFE000FC03FFFC001F00000000000FFFE000F801FFFC001F0000
+0000000FFFF000F801FFFE003F000000000007FFF001F801FFFE003E000000000007FFF8
+01F000FFFE007E000000000003FFF803F000FFFF007C000000000003FFF803E0007FFF00
+7C000000000003FFFC03E0007FFF00FC000000000001FFFC07E0007FFF80F80000000000
+01FFFE07C0003FFF80F8000000000001FFFE0FC0003FFFC1F8000000000000FFFE0F8000
+1FFFC1F0000000000000FFFF0F80001FFFC3F00000000000007FFF1F80001FFFE3E00000
+000000007FFF1F00000FFFE3E00000000000007FFF9F00000FFFF7E00000000000003FFF
+BF00000FFFF7C00000000000003FFFFE000007FFFFC00000000000001FFFFE000007FFFF
+800000000000001FFFFC000003FFFF800000000000001FFFFC000003FFFF800000000000
+000FFFFC000003FFFF000000000000000FFFF8000001FFFF000000000000000FFFF80000
+01FFFF0000000000000007FFF0000000FFFE0000000000000007FFF0000000FFFE000000
+0000000003FFF0000000FFFC0000000000000003FFE00000007FFC0000000000000003FF
+E00000007FFC0000000000000001FFE00000007FF80000000000000001FFC00000003FF8
+0000000000000001FFC00000003FF80000000000000000FF800000001FF0000000000000
+0000FF800000001FF000000000000000007F800000001FE000000000000000007F000000
+000FE000000000000000007F000000000FE000000000000000003E0000000007C0000000
+00>
+120 72 -3 70 123] 87 dc
+[<007FC00000000000FFFFC00000000000FFFFC00000000000FFFFC00000000000FFFFC0
+0000000000FFFFC0000000000003FFC0000000000001FFC0000000000001FFC000000000
+0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0
+000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000000000
+0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0
+000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00FFC0000
+0001FFC07FFFC0000001FFC3FFFFF0000001FFCFFFFFFC000001FFDFF00FFF000001FFFF
+8003FF800001FFFE0001FFC00001FFF800007FE00001FFF000007FF00001FFE000003FF8
+0001FFE000001FFC0001FFE000001FFC0001FFE000001FFE0001FFE000001FFE0001FFE0
+00000FFF0001FFE000000FFF0001FFE000000FFF0001FFE000000FFF0001FFE000000FFF
+8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE0
+00000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF
+8001FFE000000FFF0001FFE000000FFF0001FFE000000FFF0001FFE000001FFE0001FFE0
+00001FFE0001FFE000001FFC0001FFE000001FFC0001FFE000003FF80001FFF000003FF8
+0001FFF800007FF00001FFFC0000FFE00001FFFE0001FFC00001FFBF0007FF800001FF1F
+E01FFE000001FE0FFFFFFC000001FC03FFFFF0000001F800FFFF80000001F0001FF80000
+00>
+64 72 -4 71 66] 98 dc
+[<FFFFFFFFF801FFFFFFFFF0FFFFFFFFF801FFFFFFFFF0FFFFFFFFF801FFFFFFFFF0FFFF
+FFFFF801FFFFFFFFF0FFFFFFFFF801FFFFFFFFF0001FFFC00000003FFF8000001FFFC000
+00003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003F
+FF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000
+001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFF
+C00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000
+003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF
+8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF800000
+1FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC0
+0000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFFFFFFFFF
+FFFF8000001FFFFFFFFFFFFFFF8000001FFFFFFFFFFFFFFF8000001FFFFFFFFFFFFFFF80
+00001FFFFFFFFFFFFFFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001F
+FFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC000
+00003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003F
+FF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000
+001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFF
+C00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000
+003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF
+8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF800000
+1FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC00000003FFF8000001FFFC0
+0000003FFF8000FFFFFFFFF801FFFFFFFFF0FFFFFFFFF801FFFFFFFFF0FFFFFFFFF801FF
+FFFFFFF0FFFFFFFFF801FFFFFFFFF0FFFFFFFFF801FFFFFFFFF0>
+88 71 -4 70 93] 72 dc
+cmtt10.300 sf
+[<1C303F78FFF8F7E061C0>
+16 5 -4 24 22] 126 dc
+42 @bop1
+cmbx10.622 sf
+177 373(Chapter)s
+34(2)h
+cmbx10.432 sf
+177 1363(2.1)s
+70(Macro)h
+24(Nam)h
+-1(es)h
+cmti10.300 sf
+1738 838(this)s
+611 1744(identic)s
+-2(al)h
+cmbx10.746 sf
+177 602(F)s
+-10(unnelW)h
+-10(eb)h
+41(Hin)h
+-3(ts)h
+cmbx10.300 sf
+295 1645(Names)s
+16(are)h
+15(case)h
+16(sensiti)h
+-1(v)h
+-1(e)h
+14(and)h
+15(exact)h
+15(matc)h
+-1(hing:)h
+295 1815(Names)s
+13(can)h
+12(con)h
+-1(tain)h
+11(an)h
+-1(y)h
+12(prin)h
+-1(t)h
+-1(abl)h
+-1(e)h
+11(c)h
+-1(haracter:)h
+295 2665(Names)s
+16(m)h
+-1(ust)h
+13(b)h
+1(e)h
+15(no)h
+15(more)h
+14(than)h
+14(a)h
+16(maxim)h
+-1(um)h
+13(limit)h
+13(in)h
+14(length)h
+-1(:)h
+cmtt10.300 sf
+1032 1157(/fwdir/tests)s
+-1(/)h
+479(hi01.fw)h
+334 1207(hi10.fw)s
+352 2115(@<This)s
+20(macro)h
+21(expands)h
+20(to)h
+22(some)h
+21(really)h
+20(bad)h
+21(code@>)h
+352 2165(@<@>)s
+352 2215(@<453)s
+20(#$)h
+22(%&#)h
+21(--===~~1">>>)h
+-1(@>)h
+352 2265(@<<@>)s
+352 2314(@<<>@>)s
+352 2364(@<a)s
+21(b)h
+21(c)h
+22(d)h
+21(e)h
+22(f)h
+22(g@>)h
+352 2414(@<)s
+152(!)h
+108(@>)h
+352 2464(@<??)s
+20(...@>)h
+352 2514(@<"Who's)s
+20(been)h
+21(hacking)h
+20(MY)h
+21(program")h
+20(said)h
+21(Father)h
+21(Bear.@>)h
+352 2564(@<Update)s
+20(the)h
+21(maximum)h
+20(and)h
+21(return)h
+21(for)h
+21(more)h
+21(data@>)h
+cmr10.300 sf
+177 838(Whereas)s
+12(Chapter)h
+11(1)h
+11(pro)h
+-1(vides)h
+11(an)h
+10(in)h
+-1(tro)h
+1(duction)h
+11(to)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+10(and)h
+10(Chapter)h
+12(3)h
+10(a)h
+11(de\014nition,)h
+86(c)h
+-1(hapter)h
+177 888(con)s
+-1(tains)h
+13(hin)h
+-1(ts)h
+13(ab)h
+1(out)h
+12(ho)h
+-1(w)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(can)h
+13(b)h
+1(e)h
+13(used.)h
+19(This)h
+12(c)h
+-1(hapter)h
+14(probably)h
+12(should)h
+12(not)h
+13(b)h
+1(e)h
+13(read)h
+14(un)h
+-1(til)h
+177 938(the)s
+17(reader)h
+17(has)h
+16(already)h
+16(commenced)h
+15(using)h
+16(F)h
+-3(unnelW)h
+-3(eb,)h
+16(or)h
+16(at)h
+15(the)h
+17(v)h
+-1(ery)h
+17(least,)h
+16(tried)h
+16(out)h
+16(some)h
+16(of)h
+15(the)h
+177 987(examples)s
+14(in)h
+15(Chapter)h
+16(1.)h
+21(Those)h
+15(who)h
+15(\014nd)h
+15(themselv)h
+-1(es)h
+16(using)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+15(frequen)h
+-1(tly)h
+15(should)h
+15(read)h
+16(this)h
+177 1037(c)s
+-1(hapter)h
+15(at)h
+14(some)h
+13(stage)h
+14(so)h
+14(as)h
+14(to)h
+14(ensure)h
+15(that)h
+14(they)h
+15(are)h
+14(getting)h
+14(the)h
+14(most)h
+13(out)h
+14(of)h
+13(it.)h
+177 1108(Most)s
+19(of)h
+18(the)h
+19(examples)h
+18(in)h
+18(this)h
+19(c)h
+-1(hapter)h
+20(ha)h
+-1(v)h
+-1(e)h
+18(b)h
+1(een)h
+20(placed)h
+19(in)h
+18(the)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+19(regression)h
+20(test)h
+19(suite)h
+177 1157(whic)s
+-1(h)h
+14(should)h
+14(b)h
+1(e)h
+14(a)h
+-1(v)h
+-2(ailabl)h
+-1(e)h
+13(in)h
+13(a)h
+14(directory)h
+14(called)h
+299(.)h
+16(The)h
+14(\014les)h
+15(to)h
+13(examine)h
+13(are)h
+177 1207(through)s
+168(.)h
+177 1475(When)s
+17(using)h
+16(F)h
+-3(unnelW)h
+-3(eb,)h
+16(the)h
+17(c)h
+-1(hoice)h
+17(of)h
+16(macro)h
+15(names)h
+16(can)h
+16(b)h
+1(e)h
+17(as)h
+17(imp)h
+1(ortan)h
+-1(t)h
+15(to)h
+16(the)h
+17(readabilit)h
+-1(y)h
+15(of)h
+16(a)h
+177 1525(program)s
+13(as)h
+14(the)h
+15(c)h
+-1(hoice)h
+15(of)h
+14(program)h
+13(iden)h
+-1(ti\014ers,)h
+14(and)h
+14(it)h
+14(is)h
+15(imp)h
+1(ortan)h
+-1(t)h
+12(that)h
+15(the)h
+15(user)h
+15(kno)h
+-1(w)h
+14(the)h
+15(range)h
+14(of)h
+177 1574(options)s
+14(a)h
+-1(v)h
+-2(aila)h
+-1(ble.)h
+1267 1645(Macro)s
+13(names)h
+13(are)h
+14(case)h
+15(sensitiv)h
+-1(e)h
+295 1695(and)s
+13(are)h
+12(matc)h
+-1(hed)h
+12(exactly)h
+-3(.)h
+17(The)h
+13(strings)h
+13(used)h
+13(as)h
+13(a)h
+12(macro)h
+11(name)h
+11(at)h
+12(the)h
+13(p)h
+1(oin)h
+-1(t)h
+12(of)h
+12(de\014nition)h
+295 1744(and)s
+14(call)h
+13(m)h
+-1(ust)h
+13(b)h
+1(e)h
+180(for)h
+14(the)h
+14(connection)h
+15(to)h
+13(b)h
+1(e)h
+15(made.)h
+1208 1815(F)s
+-3(unnelW)h
+-3(eb)h
+10(is)h
+11(less)h
+12(restrictiv)h
+-1(e)h
+12(ab)h
+1(out)h
+295 1865(its)s
+19(macro)h
+16(names)h
+18(than)h
+18(most)h
+17(programm)h
+-1(ing)h
+16(languages)h
+17(are)h
+19(ab)h
+1(out)h
+18(their)h
+19(iden)h
+-1(ti\014ers.)h
+32(A)h
+295 1914(F)s
+-3(unnelW)h
+-3(eb)h
+15(macro)h
+13(name)h
+14(can)h
+15(con)h
+-1(tain)h
+15(an)h
+-1(y)h
+14(sequence)h
+17(of)h
+15(prin)h
+-1(table)h
+14(c)h
+-1(haracters,)h
+17(including)h
+295 1964(blanks)s
+12(and)h
+11(punctuation.)h
+18(Names)h
+11(can)h
+12(start)h
+12(and)h
+12(end)h
+12(with)h
+11(an)h
+-1(y)h
+12(c)h
+-1(haracter.)h
+18(Names)h
+11(cannot)h
+295 2014(cross)s
+15(line)h
+14(b)h
+1(oundaries.)h
+18(The)h
+15(follo)h
+-1(wi)h
+-1(ng)h
+12(are)h
+14(all)h
+13(legal)h
+13(macro)h
+12(names:)h
+1521 2665(Names)s
+12(can)h
+14(b)h
+1(e)h
+14(no)h
+295 2714(longer)s
+12(than)h
+13(a)h
+12(prede\014ned)h
+14(maxim)h
+-2(um)h
+9(length.)h
+17(Curren)h
+-1(tly)h
+13(this)h
+12(length)h
+13(cannot)h
+12(b)h
+1(e)h
+14(mo)h
+1(di\014ed.)h
+177 2785(T)s
+-1(ypically)h
+-3(,)h
+8(macro)h
+9(names)h
+9(will)h
+8(consist)h
+11(of)h
+9(a)h
+10(short)h
+10(English)h
+10(phrase)h
+10(or)h
+10(sen)h
+-1(tence)h
+12(that)h
+10(describ)h
+1(es)h
+12(the)h
+11(con)h
+-1(ten)h
+-1(ts)h
+177 2835(of)s
+13(the)h
+15(macro.)h
+1042 2940(41)s
+42 @eop
+43 @bop0
+cmbx10.432 sf
+[<0000FFE000000007FFFC0000003FC07F8000007F001FC00001FC0007F00003F80003F8
+0007F00001FC000FF00001FE001FE00000FF001FE00000FF003FC000007F803FC000007F
+807FC000007FC07FC000007FC07F8000003FC07F8000003FC0FF8000003FE0FF8000003F
+E0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003F
+E0FF8000003FE0FF8000003FE07F8000003FC07F8000003FC07FC000007FC03FC000007F
+803FC000007F801FE00000FF001FE01F00FF000FF07FC1FE0007F0E0E1FC0003F8C073F8
+0001FCC077F00000FFC03FE000003FE07F8000000FFFFE00000000FFFE00600000001F00
+600000001F00E00000001FC1E00000000FFFE00000000FFFE00000000FFFC00000000FFF
+C000000007FFC000000007FF8000000003FF0000000001FE00000000007800>
+48 53 -4 40 52] 81 dc
+[<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE000000FE000
+000FE000000FE000000FE000000FE000000FE000000FE000000FE01FFC0FE01FFC0FE01F
+FC0FE007C00FE00F800FE01E000FE07C000FE0F8000FE1F0000FE3E0000FE7C0000FEFE0
+000FFFF0000FFFF0000FFFF8000FF3FC000FE1FE000FC0FE000FC0FF000FC07F800FC03F
+800FC03FC00FC01FE00FC00FF0FFFC3FFEFFFC3FFEFFFC3FFE>
+32 42 -2 41 36] 107 dc
+cmtt10.300 sf
+[<03000F803FE0FDF8F0784010>
+16 6 -4 24 22] 94 dc
+43 @bop1
+cmti10.300 sf
+1385 863(same)s
+16(name)h
+1474 1540(input)s
+cmbx10.432 sf
+177 42(2.2)s
+70(Quic)h
+-2(k)h
+22(Nam)h
+-1(es)h
+177 1200(2.3)s
+70(F)h
+-6(unnelW)h
+-6(eb)h
+22(the)h
+23(Martinet)h
+cmtt10.300 sf
+507 257(@<@>)s
+1319 481(#)s
+177 647(@#A)s
+109(@#|)h
+108(@#&)h
+108(@#m)h
+1189 863(@#A)s
+719 913(@<A@>)s
+1570 988(@>)s
+1603 1540(.fw)s
+549 2511(.fw)s
+1181 2660(@^)s
+1367 2785(@Z)s
+293(@M)h
+cmbx10.300 sf
+1709 381(quic)s
+-1(k)h
+17(name)h
+295 1490(T)s
+-4(railing)h
+14(blanks)h
+15(in)h
+15(the)h
+16(input)h
+14(\014le:)h
+295 1714(Input)s
+19(line)h
+18(length)h
+-1(:)h
+295 1888(Pro)s
+1(duct)h
+18(\014le)h
+19(line)h
+18(length)h
+-1(:)h
+295 2262(Con)s
+-1(trol)h
+15(c)h
+-1(haracters:)h
+295 2735(Num)s
+-1(b)h
+1(er)h
+16(of)h
+16(in)h
+-1(v)h
+-1(o)h
+1(catio)h
+-1(ns:)h
+cmr10.300 sf
+177 157(Sometim)s
+-1(es)h
+15(a)h
+16(particular)h
+16(macro)h
+16(m)h
+-1(ust)h
+15(b)h
+1(e)h
+17(used)h
+17(extremely)h
+16(often.)h
+25(When)h
+17(this)h
+16(happ)h
+1(ens)h
+17(it)h
+16(is)h
+16(desirable)h
+177 207(to)s
+14(mak)h
+-1(e)h
+13(the)h
+15(macro's)h
+13(name)h
+13(as)h
+14(short)h
+15(as)h
+14(p)h
+1(ossible.)h
+20(The)h
+15(shortest)h
+15(ordinary)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(macro)h
+13(name)h
+13(is)h
+177 257(the)s
+14(empt)h
+-1(y)h
+13(name)h
+13(\\)h
+88(",)h
+12(whic)h
+-1(h)h
+13(is)h
+14(four)h
+13(c)h
+-1(haracters)h
+16(long.)h
+17(Single-c)h
+-1(haracter)h
+14(names)h
+13(are)h
+14(\014v)h
+-1(e)h
+14(c)h
+-1(haracters)h
+177 307(long.)s
+177 381(T)s
+-3(o)h
+15(cater)h
+17(for)h
+15(the)h
+16(cases)h
+17(where)h
+17(really)h
+15(short)h
+16(names)h
+15(are)h
+16(needed,)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+15(pro)h
+-1(vides)h
+16(a)h
+177 431(syn)s
+-1(tax)h
+13(that)h
+14(allo)h
+-1(ws)h
+12(one-c)h
+-1(haracter)h
+14(macro)h
+12(names)h
+13(to)h
+13(b)h
+1(e)h
+14(sp)h
+1(eci\014ed)h
+14(in)h
+13(t)h
+-1(w)h
+-1(o)h
+13(less)h
+14(c)h
+-1(haracters.)h
+19(Quic)h
+-1(k)h
+14(names)h
+177 481(tak)s
+-1(e)h
+20(the)h
+21(form)h
+18(of)h
+20(the)h
+21(sp)h
+1(ecial)h
+20(c)h
+-1(haracter,)h
+22(follo)h
+-1(w)h
+-1(ed)h
+19(b)h
+-1(y)h
+20(a)h
+20(hash)h
+20(\()h
+22(\))h
+20(follo)h
+-1(w)h
+-1(ed)h
+18(b)h
+-1(y)h
+20(a)h
+20(single)h
+20(c)h
+-1(haracter.)h
+177 531(Examples:)s
+177 763(This)s
+17(form)h
+14(of)h
+16(macro)h
+15(name)h
+16(has)h
+16(the)h
+17(same)h
+16(syn)h
+-1(tactic)h
+17(functionalit)h
+-1(y)h
+15(as)h
+17(an)h
+16(ordinary)h
+16(name)h
+15(and)h
+16(can)h
+17(b)h
+1(e)h
+177 813(substituted)s
+17(wherev)h
+-1(er)h
+17(an)h
+16(ordinary)h
+15(name)h
+15(can)h
+15(b)h
+1(e.)h
+24(In)h
+16(fact)h
+16(quic)h
+-1(k)h
+15(names)h
+15(liv)h
+-1(e)h
+15(in)h
+15(the)h
+16(same)h
+15(namespace)h
+177 863(as)s
+15(ordinary)h
+15(macro)h
+13(names.)h
+21(F)h
+-3(or)h
+15(example)h
+13(the)h
+16(quic)h
+-1(kname)h
+94(is)h
+14(the)h
+236(\(refers)h
+16(to)h
+15(the)h
+16(same)h
+177 913(macro\))s
+13(as)h
+14(the)h
+14(ordinary)h
+14(name)h
+123(.)h
+177 988(Because)s
+13(quic)h
+-1(k)h
+10(names)h
+10(lo)h
+1(ok)h
+10(syn)h
+-1(tactically)h
+10(\\op)h
+1(en")h
+11(\(i.e.)h
+10(they)h
+11(do)h
+11(not)h
+10(ha)h
+-1(v)h
+-1(e)h
+11(a)h
+11(closing)h
+53(as)h
+11(ordinary)h
+11(names)h
+177 1037(do\),)s
+13(it)h
+14(is)h
+14(b)h
+1(est)h
+15(to)h
+14(a)h
+-1(v)h
+-1(oid)h
+12(them)h
+13(except)h
+15(where)h
+15(a)h
+14(macro)h
+13(m)h
+-1(ust)h
+13(b)h
+1(e)h
+14(called)h
+14(v)h
+-1(ery)h
+14(often.)h
+177 1315(There)s
+13(are)h
+13(man)h
+-1(y)h
+10(w)h
+-1(a)h
+-1(ys)h
+12(in)h
+12(whic)h
+-1(h)h
+12(a)h
+12(macro)h
+11(prepro)h
+1(cessor)h
+14(can)h
+13(cause)h
+13(unexp)h
+1(ected)h
+14(di\016culties.)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+177 1365(seeks)s
+17(to)h
+14(a)h
+-1(v)h
+-1(oid)h
+14(man)h
+-1(y)h
+13(of)h
+14(these)h
+17(problems)h
+14(b)h
+-1(y)h
+14(p)h
+1(erforming)h
+14(a)h
+14(n)h
+-1(um)h
+-1(b)h
+1(er)h
+14(of)h
+15(c)h
+-1(hec)h
+-1(ks.)h
+22(This)h
+15(section)h
+16(describ)h
+1(es)h
+177 1415(some)s
+13(of)h
+13(the)h
+15(c)h
+-1(hec)h
+-1(ks)h
+15(that)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(p)h
+1(erforms.)h
+986 1490(T)s
+-3(railing)h
+12(blanks)h
+14(are)h
+15(usually)h
+14(not)h
+14(dangerous,)h
+14(but)h
+295 1540(F)s
+-3(unnelW)h
+-3(eb)h
+19(disallo)h
+-1(ws)h
+17(them)h
+19(an)h
+-1(yw)h
+-1(a)h
+-1(y)h
+-3(.)h
+31(All)h
+18(trailing)h
+18(blanks)h
+18(in)h
+19(the)h
+132(\()h
+84(\014le\))h
+19(are)h
+295 1589(\015agged)s
+16(as)h
+17(errors)h
+17(b)h
+-1(y)h
+16(F)h
+-3(unnelW)h
+-3(eb.)h
+25(F)h
+-3(unnelW)h
+-3(eb)h
+15(do)h
+1(es)h
+17(not)h
+16(\015ag)h
+16(trailing)h
+15(blanks)h
+16(in)h
+16(an)h
+-1(y)h
+15(of)h
+295 1639(its)s
+14(output)h
+14(\014les.)h
+697 1714(F)s
+-3(unnelW)h
+-3(eb)h
+17(has)h
+17(a)h
+18(maxim)h
+-3(um)h
+14(input)h
+18(line)h
+17(length.)h
+29(If)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+295 1764(reads)s
+18(an)h
+16(input)h
+17(line)h
+16(longer)h
+16(than)h
+17(this)h
+16(length,)h
+17(it)h
+16(\015ags)h
+17(the)h
+17(line)h
+16(with)h
+16(an)h
+17(error)h
+17(message.)h
+295 1813(The)s
+15(maxi)h
+-1(m)h
+-2(um)h
+10(length)h
+14(can)h
+14(b)h
+1(e)h
+15(c)h
+-1(hanged)h
+14(using)h
+14(a)h
+13(pragma)h
+12(\(see)h
+16(Chapter)h
+14(3\).)h
+831 1888(F)s
+-3(unnelW)h
+-3(eb)h
+16(w)h
+-1(atc)h
+-1(hes)h
+18(the)h
+18(length)h
+18(of)h
+16(output)h
+18(lines)h
+17(and)h
+17(all)h
+295 1938(output)s
+18(lines)h
+17(longer)h
+17(than)h
+18(the)h
+18(lim)h
+-1(it)h
+15(are)h
+18(\015agged)h
+17(with)h
+17(error)h
+18(messages.)h
+29(The)h
+18(maxim)h
+-3(um)h
+295 1988(length)s
+19(can)h
+19(b)h
+1(e)h
+19(c)h
+-1(hanged)h
+20(using)h
+18(a)h
+19(pragma)h
+16(\(see)h
+21(Chapter)h
+19(3\).)h
+33(That)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+18(p)h
+1(olices)h
+295 2038(output)s
+14(lines)h
+13(is)h
+14(v)h
+-1(ery)h
+13(imp)h
+1(ortan)h
+-1(t.)h
+16(Some)h
+13(programs)h
+12(can)h
+14(b)h
+1(eha)h
+-1(v)h
+-1(e)h
+13(v)h
+-1(ery)h
+14(strangely)h
+14(if)h
+12(they)h
+14(get)h
+295 2087(an)s
+16(input)h
+16(line)h
+16(that)h
+16(is)h
+17(to)h
+1(o)h
+16(long)h
+15(\(e.g.)h
+16(F)h
+-3(ortran)h
+16(compilers)h
+15(can)h
+16(simply)h
+15(ignore)h
+16(text)h
+16(past)h
+17(a)h
+295 2137(certain)s
+15(column!\))h
+17(and)h
+14(once)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(starts)h
+15(expanding)h
+14(macros)h
+13(using)h
+14(inden)h
+-1(tation,)h
+13(it)h
+295 2187(is)s
+14(sometim)h
+-1(es)h
+13(not)h
+14(ob)h
+-1(vious)h
+13(ho)h
+-1(w)h
+14(wide)h
+13(the)h
+15(pro)h
+1(duct)h
+15(\014le)h
+14(will)h
+12(b)h
+1(e.)h
+718 2262(The)s
+16(presence)h
+17(of)h
+15(con)h
+-1(trol)h
+15(c)h
+-1(haracters)h
+17(in)h
+14(a)h
+15(text)h
+16(\014le)h
+15(can)h
+15(result)h
+16(in)h
+295 2312(some)s
+11(confusing)h
+11(b)h
+1(eha)h
+-1(viour)h
+12(do)h
+-1(wnstream)h
+11(when)h
+12(the)h
+12(\014le)h
+12(is)h
+11(presen)h
+-1(ted)h
+14(to)h
+11(v)h
+-2(arious)h
+11(programs.)h
+295 2361(Unfortunately)s
+-3(,)h
+13(some)h
+12(text)h
+14(editors)h
+14(allo)h
+-1(w)h
+12(con)h
+-1(trol)h
+13(c)h
+-1(haracters)h
+15(to)h
+14(b)h
+1(e)h
+14(inserted)h
+14(in)h
+-1(to)h
+13(the)h
+14(text)h
+295 2411(rather)s
+16(to)h
+1(o)h
+16(easily)h
+-3(,)h
+14(and)h
+15(it)h
+15(is)h
+15(all)h
+14(to)h
+1(o)h
+15(easy)h
+16(to)h
+15(b)h
+1(e)h
+16(tripp)h
+1(ed)h
+16(up.)h
+23(F)h
+-3(unnelW)h
+-3(eb)h
+15(prev)h
+-1(en)h
+-1(ts)h
+16(these)h
+295 2461(problems)s
+14(b)h
+-1(y)h
+14(\015agging)h
+13(with)h
+15(diagnostics)h
+14(all)h
+13(non-end-of-line)h
+14(con)h
+-1(trol)h
+14(c)h
+-1(haracters)h
+17(detected)h
+295 2511(in)s
+16(the)h
+17(input)h
+16(\()h
+66(\))h
+16(\014le)h
+17(\(ev)h
+-1(en)h
+17(T)h
+-3(ABs\).)h
+26(The)h
+17(result)h
+17(is)h
+16(that)h
+17(the)h
+17(user)h
+17(is)h
+17(guaran)h
+-1(teed)h
+17(that)h
+295 2561(pro)s
+1(duct)h
+15(\014les)h
+14(generated)h
+15(from)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(con)h
+-1(tain)h
+14(no)h
+13(unin)h
+-1(ten)h
+-1(tional)h
+13(con)h
+-1(trol)h
+13(c)h
+-1(haracters.)h
+295 2610(This)s
+13(said,)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(do)h
+1(es)h
+14(allo)h
+-1(w)h
+11(the)h
+14(insertion)h
+13(of)h
+13(con)h
+-1(trol)h
+12(c)h
+-1(haracters)h
+15(in)h
+13(the)h
+13(output)h
+14(\014le)h
+295 2660(b)s
+-1(y)h
+14(explicitly)h
+13(sp)h
+1(ecifying)h
+14(them)h
+13(in)h
+13(the)h
+15(text)h
+14(using)h
+14(a)h
+71(con)h
+-1(trol)h
+13(sequence)h
+1(.)h
+805 2735(F)s
+-3(unnelW)h
+-3(eb)h
+14(c)h
+-1(hec)h
+-1(ks)h
+16(the)h
+15(n)h
+-1(um)h
+-1(b)h
+1(er)h
+14(of)h
+14(times)h
+13(that)h
+15(eac)h
+-1(h)h
+15(macro)h
+295 2785(is)s
+18(called)h
+17(and)h
+17(issues)h
+19(an)h
+17(error)h
+19(if)h
+16(the)h
+19(total)h
+16(is)h
+18(not)h
+17(one.)h
+29(The)h
+80(\(for)h
+17(zero\))h
+18(and)h
+79(\(for)h
+295 2835(man)s
+-1(y\))h
+12(macro)h
+13(attributes)h
+15(can)h
+14(b)h
+1(e)h
+14(used)h
+15(to)h
+14(b)h
+-1(ypass)h
+14(these)h
+15(c)h
+-1(hec)h
+-1(ks.)h
+1042 2940(42)s
+43 @eop
+44 @bop0
+cmbx10.432 sf
+[<0007F0003FFC00FE3E01FC7F03F87F03F87F07F07F07F03E07F00007F00007F00007F0
+0007F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F0
+0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
+0007F00007F00007F0007FFF807FFF807FFF80>
+24 42 -2 41 21] 102 dc
+44 @bop1
+cmr7.300 sf
+1483 76(1)s
+cmr6.300 sf
+223 2783(1)s
+cmsy10.300 sf
+1459 733(f)s
+331(g)h
+471 2675(g)s
+cmbx10.300 sf
+295 42(Recursion:)s
+cmbx10.432 sf
+177 399(2.4)s
+70(Fiddling)h
+21(With)h
+22(End)h
+24(of)h
+23(Lines)h
+cmti10.300 sf
+981 141(static)s
+177 733(the)s
+17(b)h
+-2(o)h
+-2(dy)h
+17(of)h
+17(a)h
+17(macr)h
+-2(o)h
+16(c)h
+-2(onsists)h
+17(of)h
+17(exactly)h
+17(the)h
+16(text)h
+17(b)h
+-2(etwe)h
+-2(en)h
+17(the)h
+16(op)h
+-2(ening)h
+77(and)h
+18(the)h
+17(closing)h
+cmr8.300 sf
+241 2795(A)s
+13(sp)h
+1(ecial)h
+12(case)h
+12(exists)h
+12(where)h
+13(there)h
+11(is)h
+13(recursion)h
+11(but)h
+12(no)h
+13(con)h
+-1(ten)h
+-1(t.)h
+18(In)h
+12(this)h
+13(case,)h
+12(the)h
+13(expansi)h
+-1(on)h
+11(is)h
+13(\014nite)h
+12(\(the)h
+12(empt)h
+-1(y)h
+177 2835(string\))s
+10(ev)h
+-1(en)h
+10(though)h
+10(the)h
+11(op)h
+1(eratio)h
+-1(n)h
+10(of)h
+11(expandi)h
+-1(ng)h
+9(is)h
+12(in\014nite.)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+10(do)h
+1(es)h
+10(not)h
+11(treat)h
+10(this)h
+11(case)h
+11(sp)h
+1(ecially)h
+-4(.)h
+cmtt10.300 sf
+1437 733(@)s
+330(@)h
+177 961(while)s
+21(the_walrus_i)h
+-1(s_sle)h
+-1(epy)h
+20(do)h
+243 1011(begin)s
+243 1061(writeln\('z)s
+-1(zzzzz)h
+-1(z'\);)h
+243 1111(@<Wake)s
+20(up)h
+21(the)h
+22(walrus@>)h
+243 1161(writeln\('U)s
+-1(mphar)h
+-1(umpha)h
+-1(...'\))h
+-1(;)h
+243 1211(end;)s
+297 1317(<wake)s
+21(up)h
+21(the)h
+22(walrus>)h
+177 1423(@$@<Wake)s
+20(up)h
+22(the)h
+21(walrus@>==@{)h
+177 1473(wake_up_the_w)s
+-1(alrus)h
+-1(\(the_)h
+-1(walru)h
+-1(s\);)h
+177 1523(@})s
+380 1629(<Wake)s
+21(up)h
+21(the)h
+21(walrus>)h
+177 1736(while)s
+21(the_walrus_i)h
+-1(s_sle)h
+-1(epy)h
+20(do)h
+243 1786(begin)s
+243 1835(writeln\("z)s
+-1(zzzzz)h
+-1(z"\);)h
+243 1935(wake_up_th)s
+-1(e_wal)h
+-1(rus\(t)h
+-1(he_wa)h
+-1(lrus\))h
+-1(;)h
+243 2035(writeln\("U)s
+-1(mphar)h
+-1(umpha)h
+-1(..."\))h
+-1(;)h
+243 2085(end;)s
+1774 2191(<Wake)s
+21(up)h
+177 2241(the)s
+21(walrus>)h
+177 2397(@$@<Wake)s
+20(up)h
+22(the)h
+21(walrus@>==@{)h
+-1(@-)h
+177 2447(wake_up_the_w)s
+-1(alrus)h
+-1(\(the_)h
+-1(walru)h
+-1(s\);@})h
+449 2675(@)s
+cmr10.300 sf
+546 42(Because)s
+21(F)h
+-3(unnelW)h
+-3(eb)h
+19(do)h
+1(es)h
+20(not)h
+20(pro)h
+-1(vide)h
+19(an)h
+-1(y)h
+19(conditional)h
+18(constructs,)h
+23(all)h
+295 91(recursiv)s
+-1(ely)h
+17(de\014ned)h
+17(macros)h
+15(m)h
+-1(ust,)h
+15(b)h
+-1(y)h
+15(de\014nition,)h
+16(expand)h
+16(in\014nitely)h
+-3(,)h
+33(and)h
+16(are)h
+16(therefore)h
+295 141(unacceptable.)s
+37(F)h
+-3(unnelW)h
+-3(eb)h
+20(p)h
+1(erforms)h
+137(c)h
+-1(hec)h
+-1(ks)h
+21(to)h
+20(detect)h
+21(recursion,)h
+22(detecting)h
+21(it)h
+295 191(b)s
+1(efore)h
+13(macro)h
+10(expansion)h
+12(comm)h
+-1(ences.)h
+17(The)h
+13(user)h
+12(need)h
+13(not)h
+12(fear)h
+12(that)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(will)h
+10(lo)h
+1(c)h
+-1(k)h
+295 241(up)s
+14(or)h
+14(sp)h
+1(ew)h
+15(forth)h
+14(if)h
+13(a)h
+13(recursiv)h
+-1(e)h
+16(macro)h
+12(is)h
+14(acciden)h
+-1(tally)h
+13(sp)h
+1(eci\014ed.)h
+177 512(One)s
+13(of)h
+12(the)h
+13(\014ddly)h
+12(asp)h
+1(ects)h
+15(of)h
+11(programm)h
+-1(ing)h
+10(with)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(is)h
+13(coping)h
+12(with)h
+12(end)h
+13(of)h
+12(lines.)h
+17(If)h
+12(y)h
+-1(ou)h
+12(w)h
+-1(an)h
+-1(t)h
+177 562(y)s
+-1(our)h
+17(pro)h
+1(duct)h
+18(\014le)h
+16(to)h
+17(b)h
+1(e)h
+18(w)h
+-1(ell)h
+16(inden)h
+-1(ted)h
+17(without)h
+17(m)h
+-1(ulti)h
+-1(ple)h
+15(blank)h
+16(lines)h
+17(or)h
+17(co)h
+1(de)h
+17(run-ons,)h
+18(y)h
+-1(ou)h
+16(ha)h
+-1(v)h
+-1(e)h
+17(to)h
+177 612(sp)s
+1(end)h
+15(a)h
+14(little)h
+13(time)h
+12(w)h
+-1(orking)h
+13(out)h
+14(ho)h
+-1(w)h
+14(the)h
+14(end)h
+15(of)h
+13(line)h
+13(mark)h
+-1(ers)h
+14(get)h
+14(mo)h
+-1(v)h
+-1(ed)h
+12(around.)h
+177 684(The)s
+16(rule)h
+16(to)h
+15(remem)h
+-1(b)h
+1(er)h
+15(is)h
+15(that,)h
+15(disregarding)h
+16(the)h
+16(e\013ects)h
+17(of)h
+15(sp)h
+1(ecial)h
+16(sequences)h
+18(within)h
+14(a)h
+15(macro)h
+15(b)h
+1(o)h
+1(dy)h
+-3(,)h
+1832 733(.)s
+24(This)h
+177 783(text)s
+15(includes)h
+14(end)h
+14(of)h
+14(line)h
+13(mark)h
+-1(ers.)h
+177 855(If)s
+14(for)h
+13(example)h
+13(y)h
+-1(ou)h
+13(call)h
+13(a)h
+14(macro)h
+13(in)h
+13(a)h
+14(sequence)h
+16(of)h
+13(co)h
+1(de.)h
+7(.)h
+7(.)h
+177 1317(where)s
+465(is)h
+14(de\014ned)h
+15(as)h
+14(follo)h
+-1(ws)h
+177 1629(then)s
+15(when)h
+464(is)h
+14(expanded)h
+14(y)h
+-1(ou)h
+14(will)h
+12(get)h
+177 2191(The)s
+13(blank)h
+12(lines)h
+13(w)h
+-1(ere)h
+13(in)h
+-1(tro)h
+1(duced)h
+14(b)h
+-1(y)h
+12(the)h
+14(end)h
+13(on)h
+12(line)h
+13(mark)h
+-1(ers)h
+12(included)h
+13(in)h
+12(the)h
+13(de\014nition)h
+12(of)h
+418 2241(.)s
+19(A)h
+15(go)h
+1(o)h
+1(d)h
+14(solution)h
+13(to)h
+15(this)h
+15(problem)h
+13(is)h
+14(to)h
+15(suppress)h
+16(the)h
+15(end)h
+15(of)h
+14(line)h
+15(mark)h
+-1(ers)h
+13(b)h
+-1(y)h
+15(de\014ning)h
+177 2291(the)s
+15(macro)h
+12(as)h
+14(follo)h
+-1(ws)h
+177 2553(This)s
+14(is)h
+14(the)h
+14(usual)h
+14(form)h
+12(of)h
+13(macro)h
+13(de\014nitions)h
+14(in)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(\014les.)h
+177 2625(In)s
+14(additiv)h
+-1(e)h
+13(macros,)h
+13(this)h
+14(format)h
+12(do)h
+1(es)h
+15(not)h
+14(w)h
+-1(ork)h
+13(prop)h
+1(erly)h
+15(b)h
+1(ecause)h
+15(the)h
+15(end)h
+15(of)h
+13(line)h
+13(that)h
+14(is)h
+14(suppresse)h
+1(d)h
+177 2675(b)s
+-1(y)h
+13(the)h
+14(trailing)h
+67(do)h
+1(es)h
+14(not)h
+13(get)h
+13(replaced)h
+15(b)h
+-1(y)h
+12(the)h
+14(end)h
+14(of)h
+12(line)h
+13(at)h
+13(the)h
+14(end)h
+13(of)h
+13(the)h
+14(macro)h
+12(in)h
+-1(v)h
+-1(o)h
+1(cation.)h
+16(F)h
+-3(or)h
+177 2725(example)s
+13(the)h
+14(de\014nition)h
+1042 2940(43)s
+709 2 177 2757 r
+44 @eop
+45 @bop0
+45 @bop1
+cmsy10.300 sf
+570 759(g)s
+cmbx10.432 sf
+177 1950(2.5)s
+70(F)h
+-6(udging)h
+24(Conditionals)h
+cmtt10.300 sf
+177 42(@$@<Wake)s
+20(up)h
+22(the)h
+21(walrus@>+=@{)h
+-1(@-)h
+177 91(wake_up_the_w)s
+-1(alrus)h
+-1(_once)h
+-1(\(the_)h
+-1(walru)h
+-1(s\);@})h
+177 318(@$@<Wake)s
+20(up)h
+22(the)h
+21(walrus@>+=@{)h
+-1(@-)h
+177 368(wake_up_the_w)s
+-1(alrus)h
+-1(_agai)h
+-1(n\(the)h
+-1(_walr)h
+-1(us\);@)h
+-1(})h
+177 595(@$@<Wake)s
+20(up)h
+22(the)h
+21(walrus@>==@{)h
+-1(@-)h
+177 645(wake_up_the_w)s
+-1(alrus)h
+-1(_once)h
+-1(\(the_)h
+-1(walru)h
+-1(s\);wa)h
+-1(ke_u)h
+-1(p_the)h
+-1(_walr)h
+-1(us_ag)h
+-1(ain\(t)h
+-1(he_wa)h
+-1(lrus)h
+-1(\);@})h
+548 759(@)s
+177 922(@$@<Wake)s
+20(up)h
+22(the)h
+21(walrus@>+=@{)h
+-1(@-)h
+177 972(wake_up_the_w)s
+-1(alrus)h
+-1(_once)h
+-1(\(the_)h
+-1(walru)h
+-1(s\);)h
+177 1022(@})s
+177 1249(@$@<Wake)s
+20(up)h
+22(the)h
+21(walrus@>+=@{)h
+-1(@-)h
+177 1299(wake_up_the_w)s
+-1(alrus)h
+-1(_agai)h
+-1(n\(the)h
+-1(_walr)h
+-1(us\);@)h
+-1(})h
+177 1526(@$@<Wake)s
+20(up)h
+22(the)h
+21(walrus@>==@{)h
+-1(@-)h
+177 1576(wake_up_the_w)s
+-1(alrus)h
+-1(_once)h
+-1(\(the_)h
+-1(walru)h
+-1(s\);)h
+177 1625(wake_up_the_w)s
+-1(alrus)h
+-1(_agai)h
+-1(n\(the)h
+-1(_walr)h
+-1(us\);@)h
+-1(})h
+421 2115(#ifdef)s
+1804 2685(--)s
+1169 2835(--)s
+cmr10.300 sf
+177 205(later)s
+14(follo)h
+-1(w)h
+-1(ed)h
+12(b)h
+-1(y)h
+177 482(is)s
+14(equiv)h
+-2(alen)h
+-1(t)h
+13(to)h
+14(the)h
+14(single)h
+14(de\014nition)h
+177 759(Putting)s
+14(the)h
+15(trailing)h
+70(on)h
+14(a)h
+14(new)h
+15(line)h
+14(at)h
+14(the)h
+15(end)h
+15(of)h
+14(the)h
+14(macro)h
+14(\(except)h
+15(for)h
+14(the)h
+15(last)h
+15(de\014nition)h
+13(part\))h
+177 809(solv)s
+-1(es)h
+14(the)h
+15(problem.)h
+177 1135(later)s
+14(follo)h
+-1(w)h
+-1(ed)h
+12(b)h
+-1(y)h
+177 1412(is)s
+14(equiv)h
+-2(alen)h
+-1(t)h
+13(to)h
+14(the)h
+14(single)h
+14(de\014nition)h
+177 1739(Managing)s
+12(end)h
+14(of)h
+13(line)h
+13(mark)h
+-1(ers)h
+13(is)h
+13(tric)h
+-1(ky)h
+-3(,)h
+13(but)h
+14(once)h
+14(y)h
+-1(ou)h
+13(establish)h
+13(a)h
+14(con)h
+-1(v)h
+-1(en)h
+-1(tion)h
+13(for)h
+13(coping)h
+13(with)h
+13(them,)h
+177 1789(the)s
+15(problem)h
+12(disapp)h
+1(ears)h
+15(in)h
+-1(to)h
+13(the)h
+15(bac)h
+-1(kground.)h
+177 2065(As)s
+13(a)h
+13(macro)h
+11(prepro)h
+1(cess)h
+1(or,)h
+14(the)h
+13(facilit)h
+-1(y)h
+11(that)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(most)h
+12(ob)h
+-1(viously)h
+11(lac)h
+-1(ks)h
+12(is)h
+13(a)h
+12(conditional)h
+11(facilit)h
+-1(y)h
+177 2115(\(suc)s
+-1(h)h
+19(as)h
+17(C's)h
+150(\).)h
+28(It)h
+18(migh)h
+-1(t,)h
+16(therefore,)h
+20(come)h
+16(as)h
+18(a)h
+17(surprise)h
+19(to)h
+18(kno)h
+-1(w)h
+17(that)h
+18(the)h
+18(\014rst)h
+19(v)h
+-1(ersion)h
+17(of)h
+177 2164(F)s
+-3(unnelW)h
+-3(eb)h
+17(actually)h
+17(had)h
+17(a)h
+17(built)h
+17(in)h
+17(conditional)h
+17(facilit)h
+-1(y)h
+-4(.)h
+27(The)h
+18(facilit)h
+-1(y)h
+16(allo)h
+-1(w)h
+-1(ed)h
+17(the)h
+18(programm)h
+-1(er)h
+16(to)h
+177 2214(sp)s
+1(ecify)h
+14(a)h
+12(construct)h
+14(that)h
+13(w)h
+-1(ould)h
+12(select)h
+14(from)h
+11(one)h
+13(of)h
+13(a)h
+12(n)h
+-1(um)h
+-1(b)h
+1(er)h
+12(of)h
+12(macro)h
+12(expressions)h
+14(dep)h
+1(ending)h
+14(on)h
+12(the)h
+177 2264(v)s
+-2(alue)h
+13(of)h
+14(a)h
+13(con)h
+-1(trolling)h
+13(macro)h
+12(expression.)h
+177 2338(In)s
+14(three)h
+15(y)h
+-1(ears)h
+15(the)h
+14(construct)h
+16(w)h
+-1(as)h
+14(nev)h
+-1(er)h
+14(used.)h
+177 2412(The)s
+13(reason)h
+13(w)h
+-1(as)h
+12(that)h
+13(conditional)h
+11(constructs)h
+14(could)h
+12(b)h
+1(e)h
+14(fudged)h
+12(nearly)h
+12(as)h
+13(easily)h
+12(as)h
+12(they)h
+13(could)h
+12(b)h
+1(e)h
+13(used.)h
+177 2462(Because)s
+16(of)h
+14(this,)h
+13(the)h
+15(in)h
+-1(built)h
+13(conditional)h
+12(feature)h
+15(w)h
+-1(as)h
+14(remo)h
+-1(v)h
+-1(ed)h
+13(in)h
+14(the)h
+15(curren)h
+-1(t)h
+15(v)h
+-1(ersion)h
+14(of)h
+14(F)h
+-3(unnelW)h
+-3(eb.)h
+177 2512(Not)s
+12(only)h
+10(did)h
+11(this)h
+12(simpli)h
+-1(fy)h
+9(the)h
+12(program,)h
+10(but)h
+11(is)h
+12(also)h
+10(allo)h
+-1(w)h
+-1(ed)h
+11(recursiv)h
+-1(e)h
+12(macros)h
+11(to)h
+11(b)h
+1(e)h
+12(detected)h
+14(through)h
+177 2561(static)s
+14(analysis)h
+14(rather)h
+14(than)h
+14(during)h
+14(macro)h
+12(expansion.)h
+177 2635(There)s
+18(are)h
+18(t)h
+-1(w)h
+-1(o)h
+16(basic)h
+17(w)h
+-1(a)h
+-1(ys)h
+17(to)h
+17(fudge)h
+17(a)h
+16(conditional.)h
+26(First,)h
+18(the)h
+17(commen)h
+-1(t)h
+15(facilit)h
+-1(y)h
+16(of)h
+16(the)h
+17(target)h
+18(pro-)h
+177 2685(gramm)s
+-1(ing)h
+12(language)h
+13(ma)h
+-1(y)h
+12(b)h
+1(e)h
+15(emplo)h
+-1(y)h
+-1(ed.)h
+17(F)h
+-3(or)h
+13(example,)h
+13(in)h
+13(Ada,)h
+14(comm)h
+-1(en)h
+-1(ts)h
+13(commence)h
+13(with)h
+14(\\)h
+44(")h
+13(and)h
+177 2735(terminate)s
+13(at)h
+14(the)h
+15(end)h
+14(of)h
+14(the)h
+14(line.)h
+18(Using)h
+14(this)h
+14(fact,)h
+14(it)h
+13(is)h
+14(easy)h
+15(to)h
+13(construct)h
+16(macros)h
+13(that)h
+14(can)h
+14(b)h
+1(e)h
+15(called)h
+177 2785(at)s
+12(the)h
+12(start)h
+13(of)h
+11(eac)h
+-1(h)h
+12(target)h
+12(line)h
+12(and)h
+11(whic)h
+-1(h)h
+12(turn)h
+12(on)h
+12(and)h
+11(o\013)h
+12(the)h
+12(lines)h
+12(so)h
+12(mark)h
+-1(ed)h
+10(b)h
+-1(y)h
+12(de\014ning)h
+12(the)h
+12(macro)h
+177 2835(to)s
+14(b)h
+1(e)h
+14(the)h
+15(empt)h
+-1(y)h
+13(string)h
+14(\(ON\))h
+14(or)h
+14(the)h
+15(comm)h
+-1(en)h
+-1(t)h
+12(sym)h
+-1(b)h
+1(ol)h
+12(\()h
+44(\))h
+14(\(OFF\).)h
+14(F)h
+-3(or)h
+14(example:)h
+1042 2940(44)s
+45 @eop
+46 @bop0
+46 @bop1
+cmr10.300 sf
+177 1051(The)s
+16(other)h
+15(w)h
+-1(a)h
+-1(y)h
+14(to)h
+15(fudge)h
+15(a)h
+14(conditional)h
+14(is)h
+15(to)h
+15(de\014ne)h
+15(a)h
+15(macro)h
+14(with)h
+14(a)h
+15(single)h
+15(parameter.)h
+20(A)h
+15(call)h
+14(to)h
+15(the)h
+177 1101(macro)s
+15(is)h
+15(then)h
+17(wrapp)h
+1(ed)h
+17(around)h
+15(all)h
+15(the)h
+16(conditional)h
+15(co)h
+1(de)h
+17(in)h
+15(the)h
+16(program.)h
+23(The)h
+16(macro)h
+15(can)h
+16(then)h
+16(b)h
+1(e)h
+177 1151(de\014ned)s
+15(to)h
+14(presen)h
+-1(t)h
+15(or)h
+14(ignore)h
+14(the)h
+14(co)h
+1(de)h
+15(of)h
+13(its)h
+14(argumen)h
+-1(t.)h
+17(F)h
+-3(or)h
+14(example:)h
+177 2223(In)s
+16(languages)h
+16(that)h
+16(allo)h
+-1(w)h
+15(m)h
+-1(ulti)h
+-1(-li)h
+-1(ne)h
+15(comm)h
+-1(en)h
+-1(ts)h
+15(\(e.g.)h
+16(C)h
+16(with)h
+75(and)h
+60(\),)h
+16(commen)h
+-1(ts)h
+15(can)h
+16(b)h
+1(e)h
+17(used)h
+17(to)h
+177 2273(eliminate)s
+12(the)h
+15(conditioned)h
+13(co)h
+1(de)h
+15(rather)h
+15(than)h
+14(absence.)h
+19(F)h
+-3(or)h
+14(example:)h
+177 2499(\(Note:)s
+22(If)h
+15(this)h
+16(example)h
+14(w)h
+-1(ere)h
+17(ev)h
+-1(er)h
+16(actually)h
+15(used,)h
+16(the)h
+17(programm)h
+-1(er)h
+14(w)h
+-1(ould)h
+15(ha)h
+-1(v)h
+-1(e)h
+15(to)h
+15(b)h
+1(e)h
+17(careful)h
+15(not)h
+16(to)h
+177 2548(place)s
+14(commen)h
+-1(ts)h
+12(in)h
+14(the)h
+14(argumen)h
+-1(t)h
+13(co)h
+1(de.)h
+19(Nested)h
+15(commen)h
+-1(ts)h
+12(in)h
+14(C)h
+14(are)h
+14(non-p)h
+1(ortable.\))h
+177 2622(The)s
+13(parameterized)h
+12(macro)h
+11(idea)h
+11(can)h
+13(b)h
+1(e)h
+12(generalized)h
+13(to)h
+12(supp)h
+1(ort)h
+13(the)h
+12(c)h
+-1(hoice)h
+13(of)h
+11(more)h
+11(than)h
+12(one)h
+12(m)h
+-1(utually)h
+177 2672(exclusiv)s
+-1(e)h
+15(alternativ)h
+-1(e.)h
+17(F)h
+-3(or)h
+14(example:)h
+1042 2940(45)s
+cmtt10.300 sf
+177 42(@A@<Debug)s
+20(Macro@>)h
+177 141(The)s
+21(following)h
+20(macro)h
+21(determines)h
+20(whether)h
+20(debug)h
+21(code)h
+21(will)h
+21(be)h
+21(included)h
+20(in)h
+22(the)h
+177 191(program.)s
+20(All)h
+21(lines)h
+21(of)h
+22(debug)h
+20(code)h
+21(commence)h
+20(with)h
+21(a)h
+22(call)h
+21(to)h
+21(this)h
+21(macro)h
+21(and)h
+21(so)h
+177 241(we)s
+22(can)h
+21(turn)h
+21(all)h
+21(that)h
+21(code)h
+21(on)h
+21(or)h
+22(off)h
+21(here)h
+21(by)h
+21(defining)h
+20(this)h
+21(macro)h
+21(to)h
+21(be)h
+22(either)h
+177 291(empty)s
+21(or)h
+21(the)h
+21(single-line)h
+20(comment)h
+20(symbol)h
+21(\(\\p{--}\).)h
+20(Note)h
+21(the)h
+21(use)h
+21(of)h
+22(a)h
+177 340(quick)s
+21(macro)h
+21(name.)h
+177 440(@$@#D@M==@{@})s
+106(@!)h
+22(Turns)h
+21(the)h
+21(debug)h
+21(code)h
+20(ON.)h
+177 490(@!)s
+22(Use)h
+21(this)h
+21(definition)h
+19(to)h
+22(turn)h
+21(the)h
+21(debug)h
+21(code)h
+21(OFF:)h
+21(@$@#D==@{--)h
+-1(@})h
+177 589(...)s
+21(then)h
+21(later)h
+21(in)h
+21(the)h
+22(file...)h
+177 689(@$@<Sloth)s
+20(incrementing)h
+19(loop@>==@{@-)h
+177 739(while)s
+21(sloth<walrus)h
+19(loop)h
+243 789(@#D)s
+21(assert\(slot)h
+-1(h<wal)h
+-1(rus,")h
+-1(AWK!)h
+19(sloth>=walrus!)h
+-1(!!!!!)h
+-1(!"\);)h
+243 839(@#D)s
+21(assert\(time)h
+-1(r<tim)h
+-1(ermax)h
+-1(,"AWK)h
+-1(!)h
+20(timer>=timer)h
+-1(max!!)h
+-1(!"\);)h
+243 888(inc\(sloth\))s
+-1(;)h
+177 938(end)s
+21(loop@})h
+177 1263(@A@<Debug)s
+20(Macro@>)h
+177 1363(The)s
+21(following)h
+20(macro)h
+21(determines)h
+20(whether)h
+20(debug)h
+21(code)h
+21(will)h
+21(be)h
+21(included)h
+20(in)h
+22(the)h
+177 1413(program.)s
+20(All)h
+21(debug)h
+21(code)h
+21(is)h
+22(wrapped)h
+20(by)h
+21(a)h
+22(call)h
+21(to)h
+21(this)h
+21(macro)h
+21(and)h
+21(so)h
+177 1463(we)s
+22(can)h
+21(turn)h
+21(all)h
+21(the)h
+21(debug)h
+21(code)h
+21(on)h
+21(or)h
+22(off)h
+21(here)h
+21(by)h
+21(defining)h
+20(this)h
+21(macro)h
+21(to)h
+21(be)h
+177 1513(either)s
+21(empty)h
+20(or)h
+22(its)h
+21(parameter.)h
+177 1612(@$@#D@\(@1@\)@M)s
+-1(==@{@)h
+-1(1@})h
+107(@!)h
+21(Turns)h
+21(the)h
+21(debug)h
+21(code)h
+21(ON.)h
+177 1662(@!)s
+22(Use)h
+21(this)h
+21(definition)h
+19(to)h
+22(turn)h
+21(the)h
+21(debug)h
+21(code)h
+21(OFF:)h
+21(@$@#D@\(@1@\))h
+-1(==@{@)h
+-1(})h
+177 1762(...)s
+21(then)h
+21(later)h
+21(in)h
+21(the)h
+22(file...)h
+177 1861(@$@<Sloth)s
+20(incrementing)h
+19(loop@>==@{@-)h
+177 1911(while)s
+21(sloth<walrus)h
+19(loop)h
+243 1961(@#D@\(asser)s
+-1(t\(slo)h
+-1(th<wa)h
+-1(lrus,)h
+-1("AWK!)h
+19(sloth>=walrus)h
+-1(!!!!!)h
+-1(!!"\);)h
+352 2011(assert\(tim)s
+-1(er<ti)h
+-1(merma)h
+-1(x,"AW)h
+-1(K!)h
+20(timer>=time)h
+-1(rmax!)h
+-1(!!"\);)h
+-1(@\))h
+243 2060(inc\(sloth\))s
+-1(;)h
+177 2110(end)s
+21(loop@})h
+1250 2223(/*)s
+98(*/)h
+177 2386(@$@#D@\(@1@\)@M)s
+-1(==@{/)h
+-1(*)h
+20(@1)h
+21(*/@})h
+87(@!)h
+21(Comments)h
+20(out)h
+21(the)h
+22(debug)h
+20(code)h
+177 2785(@A)s
+22(This)h
+21(module)h
+20(contains)h
+20(non-portable)h
+20(code)h
+20(that)h
+21(must)h
+21(execute)h
+21(on)h
+21(Hewlett)h
+177 2835(Packard,)s
+20(Sun,)h
+21(and)h
+21(DEC)h
+22(workstation)h
+-1(s.)h
+20(The)h
+21(following)h
+20(FunnelWeb)h
+20(macro)h
+21(is)h
+46 @eop
+47 @bop0
+47 @bop1
+cmbx10.432 sf
+177 1099(2.6)s
+70(Changing)h
+23(the)h
+22(Strength)h
+24(of)h
+23(Headings)h
+cmtt10.300 sf
+177 42(defined)s
+21(to)h
+21(choose)h
+20(between)h
+21(these)h
+21(three.)h
+20(The)h
+21(first)h
+21(parameter)h
+20(is)h
+21(the)h
+22(HP)h
+21(code,)h
+177 91(the)s
+21(second)h
+21(is)h
+21(the)h
+21(Sun)h
+22(code,)h
+20(and)h
+22(the)h
+21(third)h
+20(is)h
+22(the)h
+21(DEC)h
+21(code.)h
+21(Whichever)h
+177 141(parameter)s
+20(constitutes)h
+20(the)h
+21(body)h
+21(of)h
+21(this)h
+21(macro)h
+21(determines)h
+20(which)h
+177 191(machine)s
+21(the)h
+21(code)h
+21(is)h
+21(being)h
+21(targeted\\not)h
+-1(e{Di)h
+-1(ction)h
+-1(ary)h
+20(says)h
+21(only)h
+21(one)h
+21(t)h
+177 241(in)s
+22(targeted.})h
+19(for.)h
+177 340(@$@<Machine)s
+20(specific)h
+20(code@>@\(@3@\))h
+-1(@M==@)h
+-1({@1@)h
+-1(})h
+42(@!)h
+21(Configure)h
+20(for)h
+21(HP.)h
+177 440(...then)s
+21(later)h
+20(in)h
+22(the)h
+21(file...)h
+177 540(@<Machine)s
+20(specific)h
+20(code@>@\()h
+177 589(@"get_command)s
+-1(_line)h
+-1(\(coml)h
+-1(ine\)@)h
+-1(")h
+238(@,)h
+21(@!)h
+22(HP.)h
+177 639(@"scan_comman)s
+-1(d_lin)h
+-1(e\(128)h
+-1(,coml)h
+-1(ine\);)h
+-1(@")h
+107(@,)h
+21(@!)h
+22(Sun.)h
+177 689(@"dcl_get_com)s
+-1(mand_)h
+-1(line\()h
+-1(comli)h
+-1(ne,25)h
+-1(6\);@")h
+41(@\))h
+21(@!)h
+22(DEC.)h
+941 1211(@A)s
+29(@B)h
+29(@C)h
+29(@D)h
+114(@E)h
+1274 1261(@A)s
+753 1752(fwliba)s
+47(fwlibe)h
+323 1851(fwseca)s
+48(fwsece)h
+177 2005(\\def\\fwseca#1)s
+-1(#2{\\f)h
+-1(wliba)h
+-1({#1}{)h
+-1(#2}})h
+177 2055(\\def\\fwsecb#1)s
+-1(#2{\\f)h
+-1(wlibb)h
+-1({#1}{)h
+-1(#2}})h
+177 2104(\\def\\fwsecc#1)s
+-1(#2{\\f)h
+-1(wlibc)h
+-1({#1}{)h
+-1(#2}})h
+177 2154(\\def\\fwsecd#1)s
+-1(#2{\\f)h
+-1(wlibd)h
+-1({#1}{)h
+-1(#2}})h
+177 2204(\\def\\fwsece#1)s
+-1(#2{\\f)h
+-1(wlibe)h
+-1({#1}{)h
+-1(#2}})h
+177 2461(@p)s
+22(typesetter)h
+19(=)h
+22(tex)h
+177 2511(\\def\\fwseca#1)s
+-1(#2{\\f)h
+-1(wlibc)h
+-1({#1}{)h
+-1(#2}})h
+356 2614(@A)s
+1009(@C)h
+278(typesetter)h
+1370 2785(@D)s
+93(@E)h
+388 2835(@E)s
+cmr10.300 sf
+177 793(Of)s
+13(course,)h
+13(this)h
+13(could)h
+12(also)h
+12(b)h
+1(e)h
+13(p)h
+1(erformed)h
+12(using)h
+13(three)h
+14(separate)h
+13(macros.)h
+17(The)h
+13(main)h
+10(adv)h
+-2(an)h
+-1(tage)h
+12(of)h
+12(using)h
+177 842(a)s
+15(single)h
+15(macro)h
+15(is)h
+15(that)h
+15(the)h
+17(m)h
+-1(utual)h
+13(exclusivit)h
+-1(y)h
+15(is)h
+15(enforced.)h
+24(Also,)h
+15(b)h
+1(ecause)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+15(ensures)h
+18(that)h
+177 892(the)s
+15(n)h
+-1(um)h
+-1(b)h
+1(er)h
+14(of)h
+14(formal)h
+12(and)h
+15(actual)h
+14(parameters)h
+15(are)h
+15(the)h
+15(same,)h
+13(this)h
+15(metho)h
+1(d)h
+14(lessens)h
+16(the)h
+15(c)h
+-1(hance)h
+15(that)h
+15(a)h
+177 942(mac)s
+-1(hine)h
+13(will)h
+12(b)h
+1(e)h
+15(forgotten)h
+14(in)h
+13(some)h
+13(places.)h
+177 1211(F)s
+-3(unnelW)h
+-3(eb)h
+18(pro)h
+-1(vides)h
+18(\014v)h
+-1(e)h
+18(heading)h
+18(lev)h
+-1(els:)h
+70(,)h
+61(,)h
+61(,)h
+61(,)h
+18(and)h
+79(to)h
+18(whic)h
+-1(h)h
+18(it)h
+17(binds)h
+19(\014v)h
+-1(e)h
+18(di\013eren)h
+-1(t)h
+177 1261(t)s
+-1(yp)h
+1(ographical)h
+16(strengths.)h
+28(These)h
+17(bindings)h
+16(are)h
+17(static;)h
+18(a)h
+17(lev)h
+-1(el)h
+76(heading)h
+16(will)h
+15(alw)h
+-1(a)h
+-1(ys)h
+16(b)h
+1(e)h
+17(t)h
+-1(yp)h
+1(eset)h
+18(in)h
+177 1311(a)s
+16(particular)h
+16(fon)h
+-1(t)h
+16(size)h
+17(regardless)h
+18(of)h
+16(the)h
+16(size)h
+18(of)h
+15(the)h
+17(do)h
+1(cumen)h
+-1(t.)h
+25(The)h
+17(fon)h
+-1(t)h
+16(sizes)h
+17(ha)h
+-1(v)h
+-1(e)h
+16(b)h
+1(een)h
+18(preset)h
+18(to)h
+177 1361(b)s
+1(e)h
+17(\\reasonable")h
+15(for)h
+16(a)h
+15(range)h
+16(of)h
+15(do)h
+1(cumen)h
+-1(t)h
+16(sizes,)h
+17(but)h
+16(ma)h
+-1(y)h
+13(b)h
+1(e)h
+17(inappropriate)h
+15(for)h
+16(v)h
+-1(ery)h
+16(small)h
+13(or)h
+16(large)h
+177 1410(do)s
+1(cumen)h
+-1(ts.)h
+177 1482(F)s
+-3(unnelW)h
+-3(eb)h
+13(do)h
+1(es)h
+14(not)h
+13(curren)h
+-1(tly)h
+14(pro)h
+-1(vide)h
+14(an)h
+13(\\o\016cial")h
+11(w)h
+-1(a)h
+-1(y)h
+13(\(e.g.)h
+12(a)h
+13(pragma\))h
+12(to)h
+13(c)h
+-1(hange)h
+14(the)h
+14(t)h
+-1(yp)h
+1(esetting)h
+177 1531(strength)s
+13(of)h
+12(headings.)h
+17(This)h
+12(feature)h
+12(migh)h
+-1(t)h
+10(b)h
+1(e)h
+13(added)h
+12(in)h
+11(later)h
+12(v)h
+-1(ersions.)h
+18(Mean)h
+-1(while,)h
+12(a)h
+11(hac)h
+-1(k)h
+12(is)h
+12(a)h
+-1(v)h
+-2(ailabl)h
+-1(e)h
+177 1581(that)s
+17(will)h
+15(do)h
+16(the)h
+18(job,)h
+16(pro)h
+-1(viding)h
+15(that)h
+17(y)h
+-1(ou)h
+16(do)h
+17(not)h
+16(mind)h
+15(the)h
+17(hac)h
+-1(k)h
+17(b)h
+1(eing)h
+17(T)h
+1490 1590(E)s
+1513 1581(X-sp)s
+1(eci\014c)h
+18(and)h
+16(probably)h
+177 1631(F)s
+-3(unnelW)h
+-3(eb-v)h
+-1(ersion)h
+14(sp)h
+1(eci\014c.)h
+177 1702(Inside)s
+14(the)h
+15(set)h
+14(of)h
+13(T)h
+504 1711(E)s
+528 1702(X)s
+13(macro)h
+13(de\014nitions)h
+13(that)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(writes)h
+15(at)h
+13(the)h
+15(top)h
+13(of)h
+14(ev)h
+-1(ery)h
+14(do)h
+1(cumen)h
+-1(tation)h
+177 1752(\014le)s
+11(are)h
+12(\014v)h
+-1(e)h
+11(\\library")h
+10(de\014nitions)h
+143(.)h
+7(.)h
+7(.)h
+139(whic)h
+-1(h)h
+11(pro)h
+-1(vide)h
+11(\014v)h
+-1(e)h
+11(di\013eren)h
+-1(t)h
+12(t)h
+-1(yp)h
+1(esetting)h
+12(strengths)h
+177 1802(for)s
+15(headings.)h
+23(Near)h
+16(the)h
+17(end)h
+16(of)h
+15(the)h
+16(set)h
+16(of)h
+15(de\014nitions,)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(binds)h
+15(these)h
+17(macros)h
+15(to)h
+15(\014v)h
+-1(e)h
+16(other)h
+177 1851(macros)s
+150(.)h
+7(.)h
+7(.)h
+147(whic)h
+-1(h)h
+19(are)h
+20(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+18(directly)h
+20(in)h
+18(the)h
+20(generated)h
+20(T)h
+1511 1860(E)s
+1535 1851(X)s
+19(co)h
+1(de)h
+20(to)h
+19(t)h
+-1(yp)h
+1(eset)h
+20(the)h
+177 1901(headings.)s
+177 2308(This)s
+10(means)h
+10(that)h
+11(the)h
+11(t)h
+-1(yp)h
+1(esetting)h
+11(strength)h
+12(of)h
+9(the)h
+11(headings)h
+11(in)h
+10(a)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+10(do)h
+1(cumen)h
+-1(t)h
+10(can)h
+10(b)h
+1(e)h
+11(c)h
+-1(hanged)h
+177 2357(b)s
+-1(y)h
+14(rede\014ning)h
+14(these)h
+16(macros)h
+13(at)h
+13(the)h
+15(top)h
+14(of)h
+13(a)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(do)h
+1(cumen)h
+-1(t.)h
+17(F)h
+-3(or)h
+14(example:)h
+177 2614(w)s
+-1(ould)h
+10(set)h
+65(headings)h
+10(at)h
+11(the)h
+10(same)h
+10(strength)h
+12(as)h
+10(the)h
+11(default)h
+10(strength)h
+12(of)h
+63(headings.)h
+17(The)h
+177 2664(directiv)s
+-1(e)h
+15(is)h
+13(necessary)h
+16(to)h
+14(ensure)h
+15(that)h
+14(the)h
+14(T)h
+935 2673(E)s
+958 2664(X)s
+14(con)h
+-1(trol)h
+14(sequences)h
+16(get)h
+14(through)h
+14(to)h
+14(the)h
+14(do)h
+1(cumen)h
+-1(tation)h
+177 2714(\014le)s
+14(un\014ltered.)h
+177 2785(The)s
+14(follo)h
+-1(wing)h
+11(will)h
+12(tone)h
+14(do)h
+-1(wn)h
+13(all)h
+12(headings)h
+13(b)h
+-1(y)h
+13(t)h
+-1(w)h
+-1(o)h
+13(lev)h
+-1(els)h
+14(\(with)h
+13(the)h
+71(and)h
+70(lev)h
+-1(els)h
+14(b)h
+1(eing)h
+13(allo)h
+1(cated)h
+177 2835(the)s
+15(default)h
+71(t)h
+-1(yp)h
+1(esetting)h
+14(strength)h
+16(b)h
+1(ecause)h
+15(there)h
+15(is)h
+14(nothing)h
+13(w)h
+-1(eak)h
+-1(er\).)h
+1042 2940(46)s
+47 @eop
+48 @bop0
+/cmmi8.300 127 @newfont
+cmmi8.300 sf
+[<383C0044C6004702004602008E06000C06000C06000C0C00180C00180C401818401818
+80300880300F00>
+24 14 -1 13 21] 110 dc
+cmbx10.432 sf
+[<0001FF803FE000001FFFE3FFF800007F80FFF01E0000FE007FC01F0003FC01FF803F80
+03F801FF007F8007F001FE007F8007F001FE007F8007F001FE007F8007F001FE003F0007
+F000FE001E0007F000FE00000007F000FE00000007F000FE00000007F000FE000000FFFF
+FFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF8007F000FE003F8007F000FE003F8007F000
+FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE
+003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE00
+3F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F
+8007F000FE003F8007F000FE003F8007F000FE003F807FFF0FFFE3FFF87FFF0FFFE3FFF8
+7FFF0FFFE3FFF8>
+56 42 -1 41 57] 14 dc
+[<FFFFFCFFFFFCFFFFFC01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
+0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
+0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
+0001FE0001FE00FFFFFCFFFFFCFFFFFC>
+24 41 -2 40 26] 73 dc
+[<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F000700007F800F00003F800E000
+03FC01E00001FC01C00001FC01C00000FE03800000FE038000007F070000007F07000000
+7F8F0000003F8E0000003FDE0000001FDC0000001FDC0000000FF80000000FF80000000F
+F800000007F000000007F000000003E000000003E000000001C00000>
+40 27 -1 26 36] 118 dc
+48 @bop1
+cmr7.300 sf
+919 849(2)s
+cmr6.300 sf
+223 2823(2)s
+cmmi8.300 sf
+539 2835(n)s
+395(n)h
+cmbx10.300 sf
+295 814(Memory:)s
+295 1039(Sp)s
+1(eed:)h
+295 1612(Macro)s
+17(expansion:)h
+cmbx10.432 sf
+177 622(2.7)s
+70(E\016ciency)h
+21(Notes)h
+177 2025(2.8)s
+70(In)h
+-2(teractiv)h
+-2(e)h
+21(Mo)h
+2(de)h
+cmr8.300 sf
+241 2835(If)s
+11(a)h
+11(\014le)h
+11(is)h
+12(include)h
+-1(d)h
+43(times,)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+10(k)h
+-1(eeps)h
+43(copies)h
+10(in)h
+11(memory)h
+-3(.)h
+cmtt10.300 sf
+177 42(@p)s
+22(typesetter)h
+19(=)h
+22(tex)h
+177 91(\\def\\fwseca#1)s
+-1(#2{\\f)h
+-1(wlibc)h
+-1({#1}{)h
+-1(#2}})h
+177 141(\\def\\fwsecb#1)s
+-1(#2{\\f)h
+-1(wlibd)h
+-1({#1}{)h
+-1(#2}})h
+177 191(\\def\\fwsecc#1)s
+-1(#2{\\f)h
+-1(wlibe)h
+-1({#1}{)h
+-1(#2}})h
+177 241(\\def\\fwsecd#1)s
+-1(#2{\\f)h
+-1(wlibe)h
+-1({#1}{)h
+-1(#2}})h
+177 291(\\def\\fwsece#1)s
+-1(#2{\\f)h
+-1(wlibe)h
+-1({#1}{)h
+-1(#2}})h
+391 1238(@+)s
+286 2709(!)s
+327(-)h
+21(Comment.)h
+21(Ignores)h
+20(the)h
+21(whole)h
+21(line.)h
+286 2759(EXECUTE)s
+20(fn)h
+131(-)h
+21(Execute)h
+21(the)h
+21(specified)h
+20(file.)h
+cmr10.300 sf
+177 408(These)s
+17(de\014nitions)h
+16(a\013ect)h
+16(only)h
+15(the)h
+16(headings)h
+15(that)h
+16(follo)h
+-1(w)h
+14(them,)h
+14(and)h
+16(so)h
+15(they)h
+16(should)h
+16(b)h
+1(e)h
+16(placed)h
+16(at)h
+15(the)h
+177 458(top)s
+14(of)h
+13(the)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(input)h
+14(\014le.)h
+177 739(The)s
+14(follo)h
+-1(wing)h
+12(notes)h
+14(are)h
+15(w)h
+-1(orth)h
+14(k)h
+-1(eeping)h
+13(in)h
+14(mind)h
+12(when)h
+14(using)h
+14(F)h
+-3(unnelW)h
+-3(eb.)h
+501 814(When)s
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(pro)h
+1(cesses)h
+14(an)h
+11(input)h
+11(\014le,)h
+11(it)h
+11(reads)h
+12(the)h
+12(en)h
+-1(tire)h
+12(input)h
+11(\014le,)h
+12(and)h
+295 864(all)s
+14(the)h
+15(included)h
+15(\014les)h
+15(in)h
+-1(to)h
+15(mem)h
+-1(ory)h
+-3(.)h
+37(This)h
+15(organization)h
+13(do)h
+1(es)h
+16(not)h
+15(p)h
+1(ose)h
+15(a)h
+15(constrain)h
+-1(t)h
+15(on)h
+295 914(mac)s
+-1(hines)h
+13(with)h
+14(large)h
+13(memo)h
+-1(ries,)h
+12(but)h
+14(could)h
+14(presen)h
+-1(t)h
+15(a)h
+14(problem)h
+12(on)h
+14(the)h
+14(smaller)h
+13(mac)h
+-1(hines)h
+295 964(suc)s
+-1(h)h
+15(as)h
+14(the)h
+14(PC.)h
+451 1039(F)s
+-3(unnelW)h
+-3(eb)h
+12(is)h
+12(not)h
+12(a)h
+12(slo)h
+-1(w)h
+12(program.)h
+16(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+12(it)h
+12(is)h
+12(not)h
+13(particularly)h
+11(fast)h
+12(either.)h
+295 1089(If)s
+17(the)h
+17(sp)h
+1(eed)h
+18(at)h
+17(whic)h
+-1(h)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(runs)h
+17(is)h
+17(imp)h
+1(ortan)h
+-1(t)h
+15(to)h
+17(y)h
+-1(ou,)h
+16(then)h
+18(the)h
+17(thing)h
+16(to)h
+17(k)h
+-1(eep)h
+295 1138(in)s
+15(mind)h
+12(is)h
+15(that)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(has)h
+15(b)h
+1(een)h
+16(optimi)h
+-1(zed)h
+14(to)h
+15(deal)h
+14(e\016cien)h
+-1(tly)h
+15(with)h
+14(large)h
+14(slabs)h
+15(of)h
+295 1188(text.)s
+23(F)h
+-3(unnelW)h
+-3(eb)h
+15(treats)h
+16(input)h
+15(\014les)h
+15(as)h
+16(a)h
+15(sequence)h
+17(of)h
+15(text)h
+15(slabs)h
+16(and)h
+15(sp)h
+1(ecial)h
+15(sequences)h
+295 1238(\(e.g.)s
+61(\))h
+18(and)h
+17(whenev)h
+-1(er)h
+19(it)h
+17(hits)h
+18(a)h
+18(sp)h
+1(ecial)h
+18(sequence,)h
+20(it)h
+17(has)h
+18(to)h
+17(stop)h
+18(and)h
+18(think.)h
+29(Th)h
+-1(us,)h
+295 1288(while)s
+19(a)h
+18(ten)h
+19(megab)h
+-1(yte)h
+18(text)h
+20(slab)h
+18(w)h
+-1(ould)h
+18(b)h
+1(e)h
+19(manipulated)h
+17(as)h
+19(a)h
+19(single)h
+18(tok)h
+-1(en,)h
+20(in)h
+18(a)h
+19(few)h
+295 1338(mill)s
+-1(iseconds,)h
+12(a)h
+13(simila)h
+-1(r)h
+12(ten)h
+14(megab)h
+-1(yte)h
+12(c)h
+-1(h)h
+-1(unk)h
+13(\014lled)h
+13(with)h
+12(sp)h
+1(ecial)h
+14(sequences)h
+15(w)h
+-1(ould)h
+13(tak)h
+-1(e)h
+13(a)h
+295 1388(lot)s
+16(longer.)h
+25(If)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(is)h
+16(running)h
+16(slo)h
+-1(wly)h
+-3(,)h
+15(lo)h
+1(ok)h
+15(to)h
+16(see)h
+18(if)h
+15(the)h
+17(input)h
+16(con)h
+-1(tains)h
+16(a)h
+16(high)h
+295 1437(densit)s
+-1(y)h
+14(of)h
+13(sp)h
+1(ecial)h
+14(sequences)h
+1(.)h
+20(This)h
+13(can)h
+14(sometim)h
+-1(es)h
+13(happ)h
+1(en)h
+14(if)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(is)h
+13(b)h
+1(eing)h
+14(used)h
+295 1487(as)s
+13(a)h
+12(bac)h
+-1(k)h
+-1(end)h
+13(macro)h
+11(pro)h
+1(cessor)h
+14(and)h
+13(its)h
+12(input)h
+12(is)h
+13(b)h
+1(eing)h
+12(generated)h
+14(automatical)h
+-1(ly)h
+10(b)h
+-1(y)h
+13(some)h
+295 1537(other)s
+15(program.)h
+684 1612(When)s
+15(tangling)h
+13(\(expanding)h
+15(macros\),)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(nev)h
+-1(er)h
+16(expands)h
+295 1662(a)s
+11(macro)h
+10(expression)h
+12(in)h
+-1(to)h
+10(memo)h
+-1(ry;)h
+10(it)h
+10(alw)h
+-1(a)h
+-1(ys)h
+10(writes)h
+12(it)h
+11(to)h
+10(the)h
+12(pro)h
+1(duct)h
+12(\014le)h
+11(as)h
+11(it)h
+10(go)h
+1(es.)h
+18(This)h
+295 1712(is)s
+10(a)h
+11(p)h
+1(o)h
+-1(w)h
+-1(erful)h
+9(fact,)h
+11(b)h
+1(ecause)h
+12(it)h
+10(means)h
+9(that)h
+11(y)h
+-1(ou)h
+10(can)h
+10(write)h
+11(macros)h
+9(con)h
+-1(taining)h
+10(an)h
+10(unlimi)h
+-1(ted)h
+295 1762(amoun)s
+-1(t)h
+11(of)h
+12(text,)h
+13(and)h
+12(pass)h
+13(suc)h
+-1(h)h
+13(macros)h
+12(as)h
+13(parameters)h
+12(to)h
+13(other)h
+13(macros)h
+11(without)h
+12(b)h
+1(ecom-)h
+295 1812(ing)s
+15(concerned)h
+18(ab)h
+1(out)h
+16(o)h
+-1(v)h
+-1(er\015o)h
+-1(wing)h
+15(some)h
+15(kind)h
+15(of)h
+16(bu\013er)h
+17(mem)h
+-1(ory)h
+-3(.)h
+22(In)h
+16(short,)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+295 1861(do)s
+1(es)h
+15(not)h
+14(imp)h
+1(ose)h
+12(an)h
+-1(y)h
+14(limi)h
+-1(ts)h
+12(on)h
+14(the)h
+15(size)h
+14(of)h
+13(macro)h
+13(b)h
+1(o)h
+1(dies)h
+14(or)h
+14(their)h
+15(expansions.)h
+177 2142(As)s
+15(w)h
+-1(ell)h
+13(as)h
+15(ha)h
+-1(ving)h
+13(a)h
+14(comm)h
+-1(and)h
+12(line)h
+14(in)h
+-1(terface)h
+15(with)h
+14(lots)h
+14(of)h
+14(options,)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(also)h
+14(pro)h
+-1(vides)h
+14(a)h
+14(com-)h
+177 2192(mand)s
+10(language)h
+11(and)h
+11(a)h
+12(mo)h
+1(de)h
+10(\(\\in)h
+-1(teractiv)h
+-1(e)h
+12(mo)h
+1(de"\))h
+10(in)h
+12(whic)h
+-1(h)h
+11(comm)h
+-1(ands)h
+10(in)h
+11(the)h
+13(language)h
+10(can)h
+12(b)h
+1(e)h
+12(t)h
+-1(yp)h
+1(ed)h
+177 2242(in)s
+-1(teractiv)h
+-1(ely)h
+-3(.)h
+26(The)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(comma)h
+-1(nd)h
+15(in)h
+-1(terpreter)h
+19(w)h
+-1(as)h
+16(created)h
+18(primarily)h
+15(to)h
+16(supp)h
+1(ort)h
+18(regression)h
+177 2292(testing,)s
+14(but)h
+14(can)h
+14(also)h
+13(b)h
+1(e)h
+15(useful)h
+14(to)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(users.)h
+177 2367(F)s
+-3(unnelW)h
+-3(eb's)h
+10(comm)h
+-1(and)h
+8(in)h
+-1(terpreter)h
+12(reads)h
+11(one)h
+10(comm)h
+-1(and)h
+8(p)h
+1(er)h
+11(line)h
+10(and)h
+10(can)h
+10(read)h
+10(a)h
+10(stream)h
+10(of)h
+9(comma)h
+-1(nds)h
+177 2417(either)s
+12(from)h
+10(a)h
+11(text)h
+12(\014le,)h
+11(or)h
+12(from)h
+9(the)h
+12(console.)h
+18(The)h
+12(in)h
+-1(terpreter)h
+13(can)h
+11(understand)h
+13(o)h
+-1(v)h
+-1(er)h
+11(t)h
+-1(w)h
+-1(en)h
+-1(t)h
+-1(y)h
+12(comm)h
+-1(ands.)h
+177 2466(See)s
+17(Chapter)h
+16(3)h
+15(for)h
+15(a)h
+15(full)h
+14(list.)h
+22(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+16(most)h
+14(of)h
+15(them)h
+15(w)h
+-1(ere)h
+16(designed)h
+16(to)h
+15(supp)h
+1(ort)h
+17(regression)h
+16(testing)h
+177 2516(and)s
+14(will)h
+12(not)h
+14(b)h
+1(e)h
+15(of)h
+13(use)h
+15(to)h
+13(the)h
+15(casual)h
+14(user.)h
+177 2592(The)s
+14(commands)h
+12(that)h
+14(are)h
+14(of)h
+13(greatest)h
+16(use)h
+14(to)h
+14(the)h
+15(casual)h
+13(user)h
+15(are:)h
+1042 2940(47)s
+709 2 177 2796 r
+48 @eop
+49 @bop0
+49 @bop1
+cmti10.300 sf
+1884 654(any)s
+cmbx10.300 sf
+676 423(F)s
+-4(unnelW)h
+-4(eb)h
+13(prop)h
+1(er)h
+cmtt10.300 sf
+286 42(FW)s
+22(options)h
+129(-)h
+21(Invoke)h
+21(FunnelWeb-pr)h
+-1(oper)h
+19(once.)h
+286 91(SET)s
+21(options)h
+108(-)h
+21(Sets)h
+21(options.)h
+286 141(SHOW)s
+261(-)h
+21(Displays)h
+21(currently)h
+19(active)h
+21(options.)h
+286 191(TRACE)s
+21(ON)h
+174(-)h
+21(Turns)h
+21(command)h
+21(tracing)h
+20(ON.)h
+286 241(QUIT)s
+261(-)h
+21(Quits)h
+21(FunnelWeb.)h
+1202 423(FW)s
+1472 523(+F)s
+282 654(SET)s
+741(FW)h
+283 785(SHOW)s
+1754 866(TRACE)s
+20(ON)h
+713 1047(typeset.fws)s
+177 1179(trace)s
+21(on)h
+177 1229(!This)s
+21(script)h
+20(typesets)h
+21(the)h
+21(whole)h
+21(program.)h
+177 1279(!)s
+22(Set)h
+21(no)h
+21(listing)h
+21(file,)h
+20(no)h
+22(product)h
+20(files,)h
+21(but)h
+21(specify)h
+20(a)h
+22(documentatio)h
+-1(n)h
+20(file)h
+177 1328(!)s
+22(and)h
+21(specify)h
+20(the)h
+21(directory)h
+20(into)h
+21(which)h
+21(it)h
+21(should)h
+21(be)h
+21(placed.)h
+177 1378(set)s
+21(-L)h
+22(-O)h
+21(+T/usr/ross/t)h
+-1(ypese)h
+-1(t/)h
+177 1428(fw)s
+22(prog1)h
+177 1478(fw)s
+22(prog2)h
+177 1528(fw)s
+22(prog3)h
+177 1578(fw)s
+22(prog4)h
+1885 1710(+X)s
+1442 1760(<current)s
+14(directory>)h
+198 1810(.fws)s
+177 1942(fw)s
+22(+xtypeset)h
+177 2207(fw)s
+22(+k)h
+177 2472(execute)s
+21(typeset)h
+cmr10.300 sf
+177 373(T)s
+-3(o)h
+16(distinguish)h
+17(here)h
+18(b)h
+1(et)h
+-1(w)h
+-1(een)h
+18(in)h
+-1(v)h
+-1(o)h
+1(cations)h
+16(of)h
+16(the)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+16(program)h
+15(and)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(runs)h
+18(inside)h
+177 423(the)s
+14(shell,)h
+14(w)h
+-1(e)h
+14(call)h
+13(the)h
+14(latter)h
+405(.)h
+17(The)h
+14(\\)h
+44(")h
+12(command)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(es)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(prop)h
+1(er)h
+177 473(with)s
+14(the)h
+14(sp)h
+1(eci\014ed)h
+15(options)h
+14(whic)h
+-1(h)h
+13(tak)h
+-1(e)h
+14(the)h
+15(same)h
+12(syn)h
+-1(tax)h
+14(as)h
+14(they)h
+14(do)h
+14(on)h
+13(the)h
+15(comm)h
+-1(and)h
+12(line.)h
+17(The)h
+15(only)h
+177 523(restriction)s
+15(is)h
+14(that)h
+14(none)h
+14(of)h
+14(the)h
+14(action)h
+14(options)h
+13(can)h
+15(b)h
+1(e)h
+14(turned)h
+15(on)h
+14(except)h
+15(\\)h
+44(")h
+13(whic)h
+-1(h)h
+14(m)h
+-1(ust)h
+13(b)h
+1(e)h
+15(turned)h
+177 572(on.)s
+177 654(The)s
+13(\\)h
+66(")h
+12(comma)h
+-1(nd)h
+11(has)h
+13(the)h
+14(same)h
+12(syn)h
+-1(tax)h
+12(as)h
+13(the)h
+14(\\)h
+44(")h
+12(comm)h
+-1(and)h
+11(except)h
+14(that)h
+13(it)h
+13(do)h
+1(es)h
+13(not)h
+13(allo)h
+-1(w)h
+177 703(action)s
+13(options)h
+13(to)h
+13(b)h
+1(e)h
+14(sp)h
+1(eci\014ed.)h
+19(It's)h
+14(sole)h
+13(e\013ect)h
+15(is)h
+13(to)h
+13(set)h
+15(default)h
+12(option)h
+13(v)h
+-2(alues)h
+13(for)h
+13(the)h
+14(rest)h
+14(of)h
+13(the)h
+14(run.)h
+177 785(The)s
+14(\\)h
+88(")h
+13(comm)h
+-1(and)h
+12(displa)h
+-1(ys)h
+13(the)h
+15(curren)h
+-1(t)h
+15(default)h
+14(options.)h
+177 866(By)s
+12(default,)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(do)h
+1(es)h
+13(not)h
+12(ec)h
+-1(ho)h
+13(the)h
+12(comma)h
+-1(nds)h
+11(that)h
+12(it)h
+11(pro)h
+1(cesse)h
+1(s)h
+14(in)h
+12(a)h
+11(script.)h
+19(The)h
+12(\\)h
+174(")h
+177 916(comma)s
+-1(nd)h
+12(turns)h
+15(on)h
+14(suc)h
+-1(h)h
+14(tracing.)h
+177 997(These)s
+17(comm)h
+-1(ands)h
+13(can)h
+16(b)h
+1(e)h
+15(com)h
+-1(bined)h
+14(to)h
+15(streamline)h
+14(the)h
+16(use)h
+16(of)h
+15(F)h
+-3(unnelW)h
+-3(eb.)h
+21(F)h
+-3(or)h
+15(example,)h
+13(y)h
+-1(ou)h
+15(migh)h
+-1(t)h
+177 1047(wish)s
+14(to)h
+14(create)h
+15(a)h
+14(script)h
+14(called)h
+267(to)h
+14(pro)h
+1(cess)h
+16(a)h
+13(whole)h
+14(group)h
+14(of)h
+13(\014les.)h
+177 1710(There)s
+12(are)h
+10(a)h
+10(few)h
+11(w)h
+-1(a)h
+-1(ys)h
+10(in)h
+9(whic)h
+-1(h)h
+11(this)h
+10(script)h
+11(can)h
+11(b)h
+1(e)h
+10(run.)h
+18(The)h
+10(simplest)h
+10(is)h
+10(simply)h
+8(to)h
+10(sp)h
+1(ecify)h
+11(it)h
+10(in)h
+10(the)h
+11(\\)h
+44(")h
+177 1760(option)s
+11(of)h
+10(a)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+11(in)h
+-1(v)h
+-1(o)h
+1(cation.)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+11(shellscripts)h
+12(default)h
+11(to)h
+11(\\)h
+410(")h
+9(and)h
+177 1810(\\)s
+88(".)h
+177 2074(The)s
+14(second)h
+15(alternativ)h
+-1(e)h
+14(is)h
+14(to)h
+14(en)h
+-1(ter)h
+15(in)h
+-1(teractiv)h
+-1(e)h
+14(mo)h
+1(de.)h
+177 2339(F)s
+-3(rom)h
+12(there,)h
+15(y)h
+-1(ou)h
+13(can)h
+14(execute)h
+16(the)h
+15(script)h
+14(using:)h
+177 2604(In)s
+-1(teractiv)h
+-1(e)h
+13(mo)h
+1(de)h
+11(could)h
+12(b)h
+1(e)h
+13(v)h
+-1(ery)h
+12(useful)h
+12(to)h
+12(those)h
+13(with)h
+12(m)h
+-1(ultipl)h
+-1(e-windo)h
+-1(w)h
+10(w)h
+-1(orkstations.)h
+17(The)h
+13(user)h
+13(could)h
+177 2654(create)s
+12(a)h
+11(windo)h
+-1(w)h
+9(con)h
+-1(taining)h
+10(an)h
+10(in)h
+-1(teractiv)h
+-1(e)h
+11(session)h
+12(of)h
+10(F)h
+-3(unnelW)h
+-3(eb,)h
+10(and)h
+10(then)h
+12(switc)h
+-1(h)h
+11(b)h
+1(et)h
+-1(w)h
+-1(een)h
+12(windo)h
+-1(ws,)h
+177 2704(editing,)s
+13(and)h
+14(executing)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(prop)h
+1(er)h
+15(and)h
+13(other)h
+15(programs.)h
+177 2785(If)s
+11(y)h
+-1(ou)h
+10(\014nd)h
+12(y)h
+-1(ourself)h
+11(using)h
+10(the)h
+12(comm)h
+-1(and)h
+9(in)h
+-1(terpreter)h
+13(a)h
+11(lot,)h
+11(b)h
+1(e)h
+11(sure)h
+12(to)h
+11(read)h
+12(ab)h
+1(out)h
+11(the)h
+11(other)h
+12(comma)h
+-1(nds)h
+177 2835(that)s
+14(are)h
+14(a)h
+-1(v)h
+-2(ailable)h
+12(in)h
+13(Chapter)h
+15(3.)h
+1042 2940(48)s
+14 2 1621 1760 r
+49 @eop
+50 @bop0
+cmbx10.300 sf
+[<040100180600200800200800401000401000802000802000BC2F00FE3F80FE3F807E1F
+807E1F803C0F00>
+24 14 -5 28 25] 92 dc
+[<781E00FC3F00FC3F00FE3F80FE3F807A1E800200800200800401000401000802000802
+00300C00401000>
+24 14 -2 28 25] 34 dc
+cmbx10.432 sf
+[<FFFFF001FFFCFFFFF001FFFCFFFFF001FFFC03FC0000070003FC0000070003FC000007
+0003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC000007
+0003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC000007
+0003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC000007
+0003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC000007
+0003FC00000F0001FC00000E0001FE00000E0000FE00001E0000FF00003C00007F800078
+00003FC000F800001FF007E0000007FFFFC0000001FFFF000000001FF80000>
+48 41 -3 40 53] 85 dc
+[<0000FFE000000007FFFC0000003FC07F8000007F001FC00001FC0007F00003F80003F8
+0007F00001FC000FF00001FE001FE00000FF001FE00000FF003FC000007F803FC000007F
+807FC000007FC07F8000003FC07F8000003FC07F8000003FC0FF8000003FE0FF8000003F
+E0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003F
+E0FF8000003FE0FF8000003FE07F8000003FC07FC000007FC07FC000007FC03FC000007F
+803FC000007F801FE00000FF001FE00000FF000FF00001FE0007F00001FC0003F80003F8
+0001FC0007F00000FF001FE000003FC07F8000000FFFFE00000000FFE00000>
+48 41 -4 40 52] 79 dc
+[<003F800001FFF00007E0FC000FC07E001F803F001F803F003F001F803F001F807F001F
+C07F001FC07F001FC07F001FC0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001F
+E0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001F
+E07F001FC07F001FC07F001FC07F001FC03F001F803F001F801F803F001F803F000FC07E
+0007E0FC0001FFF000003F8000>
+32 39 -3 38 34] 48 dc
+cmti10.300 sf
+[<1E06270E470E4706870287020E020E021C041C041C041C0818083808181018200C4007
+80>
+16 18 -4 17 19] 118 dc
+[<00C001E001E001E001C003C003C003800380038003000700070006000600060004000C
+000C00080008000000000000000000000030007800F0006000>
+16 30 -4 29 13] 33 dc
+50 @bop1
+cmbx10.300 sf
+295 284(De\014ne)s
+12(an)h
+13(\\alias":)h
+295 460(Create)s
+18(a)h
+17(script)h
+16(called)h
+16(\\)h
+220(":)h
+cmbx10.432 sf
+177 42(2.9)s
+70(Setting)h
+21(Up)h
+23(Default)h
+22(Options)h
+177 1219(2.10)s
+70(F)h
+-6(unnelW)h
+-6(eb)h
+23(and)h
+23(Mak)h
+-2(e)h
+cmti10.300 sf
+295 709(after)s
+1733 2235(even)s
+17(though)h
+177 2285(it)s
+14(may)h
+15(b)h
+-2(e)h
+14(identic)h
+-2(al)h
+14(to)h
+14(the)h
+15(pr)h
+-2(evious)h
+14(version!)h
+1755 2609(exactly)s
+1380 2659(never)s
+15(write)h
+13(the)h
+15(pr)h
+-2(o)h
+-2(duct)h
+14(\014le)h
+cmtt10.300 sf
+1188 284(alias)s
+791 460(fwinit.fws)s
+543 510(fwinit.fws)s
+693 609(set)s
+1257 659(set)s
+177 1053(alias)s
+21(fw)h
+21(fw)h
+22(-L)h
+21(-O)h
+21(+T)h
+358 1336(Make)s
+177 1436(Make)s
+715 1535(.fw)s
+697(Make)h
+1352 1661(.fw)s
+796 1711(.fw)s
+790 1760(.fw)s
+1483 1860(.fw)s
+667 1986(prog.fw)s
+485(proc.spec)h
+260 2035(prog.body)s
+1468 2135(prog.fw)s
+1459 2460(D)s
+521 2510(+D)s
+1113 2609(x.dat)s
+694 2659(x.dat)s
+244 2709(x.dat)s
+893(Make)h
+cmr10.300 sf
+177 159(If)s
+14(y)h
+-1(ou)h
+15(do)h
+14(not)h
+15(lik)h
+-1(e)h
+14(F)h
+-3(unnelW)h
+-3(eb's)h
+14(default)h
+14(settings)h
+16(for)h
+14(its)h
+15(comm)h
+-1(and)h
+13(line)h
+14(options,)h
+14(there)h
+16(are)h
+15(a)h
+14(n)h
+-1(um)h
+-1(b)h
+1(er)h
+177 209(of)s
+13(w)h
+-1(a)h
+-1(ys)h
+14(in)h
+13(whic)h
+-1(h)h
+14(y)h
+-1(ou)h
+14(can)h
+14(c)h
+-1(hange)h
+14(them.)h
+678 284(Use)s
+12(y)h
+-1(our)h
+12(op)h
+1(erating)h
+11(system)h
+12(\\)h
+110(")h
+10(facilit)h
+-1(y)h
+10(to)h
+12(create)h
+13(an)h
+11(alias)h
+11(for)h
+295 334(F)s
+-3(unnelW)h
+-3(eb)h
+13(con)h
+-1(taining)h
+12(the)h
+13(desired)h
+15(options.)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+12(pro)h
+1(cesse)h
+1(s)h
+15(options)h
+13(from)h
+11(left)h
+13(to)h
+295 384(righ)s
+-1(t,)h
+13(so)h
+14(y)h
+-1(ou)h
+14(can)h
+14(o)h
+-1(v)h
+-1(erride)h
+14(these)h
+15(defaults)h
+14(later)h
+14(if)h
+13(y)h
+-1(ou)h
+14(wish.)h
+1068 460(When)s
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(starts)h
+16(up,)h
+15(it)h
+15(executes)h
+18(a)h
+295 510(script)s
+12(called)h
+10(\\)h
+220(")h
+9(if)h
+10(suc)h
+-1(h)h
+11(a)h
+11(script)h
+11(exists)h
+12(in)h
+10(the)h
+12(curren)h
+-1(t)h
+12(directory)h
+-3(.)h
+17(Y)h
+-3(ou)h
+11(can)h
+11(use)h
+295 560(this)s
+14(fact)h
+13(to)h
+14(set)h
+14(options)h
+13(b)h
+1(efore)h
+15(the)h
+14(run)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(prop)h
+1(er)h
+14(b)h
+-1(y)h
+13(creating)h
+14(suc)h
+-1(h)h
+15(a)h
+13(script)h
+295 609(and)s
+15(placing)h
+13(a)h
+15(single)h
+14(\\)h
+66(")h
+13(command)h
+12(in)h
+14(it)h
+15(con)h
+-1(taining)h
+13(the)h
+15(desired)h
+16(options.)h
+20(The)h
+15(main)h
+295 659(trouble)s
+14(with)h
+13(this)h
+14(approac)h
+-1(h)h
+13(is)h
+13(that)h
+14(the)h
+14(options)h
+13(in)h
+13(the)h
+93(comm)h
+-1(and)h
+11(will)h
+12(b)h
+1(e)h
+14(pro)h
+1(cesse)h
+1(d)h
+391 709(the)s
+12(comma)h
+-1(nd)h
+10(line)h
+11(options,)h
+11(whic)h
+-1(h)h
+12(means)h
+10(that)h
+12(y)h
+-1(ou)h
+11(w)h
+-1(on't)h
+11(b)h
+1(e)h
+12(able)h
+11(to)h
+12(o)h
+-1(v)h
+-1(erride)h
+11(them)h
+295 759(on)s
+14(the)h
+14(command)h
+12(line.)h
+177 835(F)s
+-3(or)h
+13(example,)h
+12(y)h
+-1(ou)h
+13(migh)h
+-1(t)h
+12(b)h
+1(e)h
+14(in)h
+-1(v)h
+-1(olv)h
+-1(ed)h
+12(more)h
+13(with)h
+13(presen)h
+-1(ting)h
+14(programs)h
+13(than)h
+13(with)h
+13(running)h
+14(them,)h
+12(and)h
+177 884(w)s
+-1(an)h
+-1(t)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+11(to)h
+12(generate)h
+13(a)h
+11(do)h
+1(cumen)h
+-1(tation)h
+10(\014le)h
+12(b)h
+-1(y)h
+11(default,)h
+11(but)h
+12(not)h
+12(to)h
+11(pro)h
+1(duce)h
+13(listing)h
+10(or)h
+12(pro)h
+1(duct)h
+177 934(\014les)s
+14(b)h
+-1(y)h
+14(default.)h
+18(In)h
+14(Unix)h
+13(y)h
+-1(ou)h
+14(could)h
+13(do)h
+14(this)h
+14(with:)h
+177 1336(The)s
+11(Unix)h
+108(program)h
+9(allo)h
+-1(ws)h
+10(a)h
+10(set)h
+12(of)h
+10(dep)h
+1(endencies)h
+13(b)h
+1(et)h
+-1(w)h
+-1(een)h
+12(a)h
+10(set)h
+12(of)h
+10(\014les)h
+11(to)h
+11(b)h
+1(e)h
+11(describ)h
+1(ed,)h
+13(and)h
+10(then)h
+177 1386(uses)s
+16(these)h
+15(dep)h
+1(endenc)h
+1(ies)h
+16(to)h
+14(con)h
+-1(trol)h
+14(the)h
+15(w)h
+-1(a)h
+-1(y)h
+14(in)h
+14(whic)h
+-1(h)h
+14(the)h
+15(\014les)h
+15(are)h
+14(created)h
+16(and)h
+14(up)h
+1(dated.)h
+20(T)h
+-1(ypically)h
+-3(,)h
+278 1436(is)s
+13(used)h
+15(to)h
+13(con)h
+-1(trol)h
+13(the)h
+15(pro)h
+1(cess)h
+15(of)h
+13(transforming)h
+12(a)h
+13(collection)h
+13(of)h
+13(source)h
+15(co)h
+1(de)h
+14(\014les)h
+14(to)h
+13(one)h
+14(or)h
+14(more)h
+177 1485(executable)s
+17(\014les.)h
+24(As)h
+16(the)h
+16(use)h
+16(of)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(implies)h
+14(an)h
+15(extra)h
+16(stage)h
+17(to)h
+15(this)h
+16(pro)h
+1(cess,)h
+17(it)h
+15(is)h
+16(natural)h
+15(to)h
+177 1535(include)s
+13(the)h
+12(transformation)h
+11(of)h
+89(\014les)h
+13(to)h
+12(source)h
+13(co)h
+1(de)h
+13(\014les)h
+13(as)h
+12(part)h
+13(of)h
+11(the)h
+113(pro)h
+1(cess.)h
+19(This)h
+12(is)h
+12(easy)h
+177 1585(to)s
+14(do,)h
+13(but)h
+14(the)h
+15(user)h
+15(should)h
+13(b)h
+1(e)h
+15(a)h
+-1(w)h
+-1(are)h
+14(of)h
+13(one)h
+14(asp)h
+1(ect)h
+15(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(whic)h
+-1(h)h
+14(can)h
+14(cause)h
+15(problems.)h
+177 1661(It)s
+12(is)h
+12(often)h
+13(useful,)h
+12(when)h
+12(using)h
+12(F)h
+-3(unnelW)h
+-3(eb,)h
+12(to)h
+12(create)h
+13(a)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+89(\014le)h
+13(that)h
+12(generates)h
+14(more)h
+11(than)h
+177 1711(one)s
+14(pro)h
+1(duct)h
+14(\014le.)h
+18(That)h
+13(is,)h
+13(a)h
+13(single)h
+92(\014le)h
+14(ma)h
+-1(y)h
+11(ha)h
+-1(v)h
+-1(e)h
+13(man)h
+-1(y)h
+12(macro)h
+12(de\014nitions)h
+13(connected)h
+16(to)h
+13(pro)h
+1(duct)h
+177 1760(\014les)s
+13(so)h
+13(that)h
+12(when)h
+13(the)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+90(\014le)h
+12(is)h
+13(pro)h
+1(cessed)h
+14(b)h
+-1(y)h
+13(F)h
+-3(unnelW)h
+-3(eb,)h
+11(sev)h
+-1(eral)h
+13(\014les)h
+13(are)h
+13(created.)h
+19(F)h
+-3(or)h
+177 1810(example,)s
+16(this)h
+16(facilit)h
+-1(y)h
+15(has)h
+17(b)h
+1(een)h
+17(used)h
+18(to)h
+16(great)h
+17(e\013ect)h
+18(to)h
+17(place)h
+16(the)h
+17(description)h
+18(of)h
+16(an)h
+16(Ada)h
+16(pac)h
+-1(k)h
+-2(age's)h
+177 1860(pac)s
+-1(k)h
+-2(age)h
+14(sp)h
+1(eci\014cation)h
+14(\014le)h
+14(and)h
+14(pac)h
+-1(k)h
+-2(age)h
+13(b)h
+1(o)h
+1(dy)h
+14(\014le)h
+14(in)h
+14(the)h
+14(same)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+93(\014le.)h
+177 1936(The)s
+17(use)h
+18(of)h
+16(m)h
+-1(ultipl)h
+-1(e)h
+15(pro)h
+1(duct)h
+18(\014les,)h
+17(ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+18(pro)h
+-1(v)h
+-1(ok)h
+-1(es)h
+16(a)h
+17(problem)h
+15(with)h
+16(dep)h
+1(endenc)h
+1(ies.)h
+28(Supp)h
+1(ose)h
+18(for)h
+177 1986(example)s
+9(that)h
+10(a)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+172(pro)h
+1(duces)h
+12(t)h
+-1(w)h
+-1(o)h
+9(pro)h
+1(duct)h
+12(\014les)h
+216(\(a)h
+10(pac)h
+-1(k)h
+-2(age)h
+10(sp)h
+1(eci\014cation\))h
+177 2035(and)s
+229(\(a)h
+16(pac)h
+-1(k)h
+-2(age)h
+15(b)h
+1(o)h
+1(dy\).)h
+26(If)h
+16(the)h
+16(pac)h
+-1(k)h
+-2(age)h
+16(is)h
+16(accesse)h
+1(d)h
+18(in)h
+16(the)h
+16(w)h
+-1(a)h
+-1(y)h
+16(that)h
+16(pac)h
+-1(k)h
+-2(ages)h
+16(normally)h
+177 2085(are,)s
+19(it)h
+17(will)h
+16(b)h
+1(e)h
+18(quite)h
+17(commo)h
+-1(n)h
+16(for)h
+17(the)h
+18(programm)h
+-1(er)h
+16(to)h
+18(w)h
+-1(an)h
+-1(t)h
+17(to)h
+17(mo)h
+1(dify)h
+15(the)h
+18(pac)h
+-1(k)h
+-2(age)h
+18(b)h
+1(o)h
+1(dy)h
+17(without)h
+177 2135(mo)s
+1(difyi)h
+-1(ng)h
+13(the)h
+15(program)h
+13(sp)h
+1(eci\014cation.)h
+20(So)h
+14(the)h
+16(programm)h
+-1(er)h
+13(will)h
+13(edit)h
+14(the)h
+183(\014le)h
+14(to)h
+14(c)h
+-1(hange)h
+15(the)h
+177 2185(pac)s
+-1(k)h
+-2(age)h
+11(b)h
+1(o)h
+1(dy)h
+-3(.)h
+17(The)h
+12(result)h
+12(of)h
+10(running)h
+11(this)h
+12(through)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+11(will)h
+10(b)h
+1(e)h
+12(the)h
+12(desired)h
+12(new)h
+12(pac)h
+-1(k)h
+-2(age)h
+11(b)h
+1(o)h
+1(dy)h
+177 2235(\014le.)s
+23(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(will)h
+14(also)h
+15(pro)h
+1(duce)h
+17(a)h
+15(new)h
+16(pac)h
+-1(k)h
+-2(age)h
+15(sp)h
+1(eci\014cation)h
+16(pro)h
+1(duct)h
+17(\014le)h
+965 2285(The)s
+14(result)h
+14(is)h
+13(that)h
+13(the)h
+14(newly)h
+13(created)h
+15(\(with)h
+13(a)h
+13(recen)h
+-1(t)h
+15(\014le)h
+177 2334(date\))s
+16(sp)h
+1(eci\014cation)h
+17(pac)h
+-1(k)h
+-2(age)h
+15(\014le)h
+15(could)h
+16(pro)h
+-1(v)h
+-1(ok)h
+-1(e)h
+15(a)h
+15(h)h
+-1(uge)h
+16(remak)h
+-1(e)h
+15(of)h
+15(m)h
+-1(uc)h
+-1(h)h
+14(of)h
+15(the)h
+17(program)h
+14(in)h
+15(whic)h
+-1(h)h
+15(it)h
+177 2384(resides.)s
+177 2460(T)s
+-3(o)h
+18(solv)h
+-1(e)h
+19(the)h
+19(problem,)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+19(includes)h
+19(a)h
+19(comm)h
+-1(and)h
+17(line)h
+18(option)h
+18(\()h
+41(for)h
+18(Delete\),)h
+21(whic)h
+-1(h)h
+18(when)h
+177 2510(turned)s
+17(on)h
+16(\(using)h
+16(\\)h
+44("\))h
+16(causes)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(to)h
+16(suppress)h
+18(pro)h
+1(duct)h
+17(and)h
+16(do)h
+1(cumen)h
+-1(tation)h
+15(\014les)h
+16(that)h
+16(are)h
+177 2560(iden)s
+-1(tical)h
+12(to)h
+13(the)h
+13(previously)h
+12(existing)h
+13(v)h
+-1(ersions)h
+13(of)h
+12(the)h
+13(same)h
+12(\014les.)h
+18(F)h
+-3(or)h
+12(example,)h
+11(if,)h
+12(during)h
+12(a)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+177 2609(run,)s
+13(a)h
+13(macro)h
+11(w)h
+-1(as)h
+13(connected)h
+15(to)h
+13(a)h
+12(pro)h
+1(duct)h
+14(\014le)h
+13(called)h
+122(,)h
+12(and)h
+13(the)h
+13(macro)h
+12(expanded)h
+13(to)h
+149(the)h
+177 2659(same)s
+13(text)h
+14(as)h
+13(is)h
+14(con)h
+-1(tained)h
+13(in)h
+135(then)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(w)h
+-1(ould)h
+13(simply)h
+497(,)h
+13(the)h
+177 2709(\014le)s
+137(w)h
+-1(ould)h
+13(b)h
+1(e)h
+14(un)h
+-1(touc)h
+-1(hed)h
+15(and,)h
+13(as)h
+14(a)h
+14(result,)h
+14(no)h
+14(further)h
+115(propagations)h
+14(w)h
+-1(ould)h
+13(tak)h
+-1(e)h
+14(place.)h
+177 2785(F)s
+-3(unnelW)h
+-3(eb)h
+12(implem)h
+-1(en)h
+-1(ts)h
+12(this)h
+13(feature)h
+13(b)h
+-1(y)h
+13(writing)h
+12(eac)h
+-1(h)h
+13(pro)h
+1(duct)h
+14(\014le)h
+13(to)h
+12(a)h
+13(temp)h
+1(orary)h
+12(\014le)h
+13(with)h
+12(a)h
+13(temp)h
+1(o-)h
+177 2835(rary)s
+16(\014le)h
+15(name.)h
+21(It)h
+15(then)h
+16(compares)h
+15(the)h
+16(temp)h
+1(orary)h
+14(\014le)h
+15(with)h
+15(the)h
+16(target)h
+16(\014le.)h
+22(If)h
+15(the)h
+16(t)h
+-1(w)h
+-1(o)h
+14(are)h
+16(iden)h
+-1(tical,)h
+1042 2940(49)s
+50 @eop
+51 @bop0
+cmbx10.300 sf
+[<3FFF803C1F00303F00303E00607C0060FC0060F80001F00003F00007E00007C1800F81
+801F81801F03803E03007E07007C0F00FFFF00>
+24 18 -1 17 21] 122 dc
+cmr8.300 sf
+[<FFFC001C03801C00C01C00E01C00701C00701C00701C00701C00E01C00C01C03801FFE
+001C07801C01C01C00E01C00E01C00E01C00E01C00E01C00E11C00E11C0072FF803C>
+24 23 -1 22 26] 82 dc
+[<FFFE001C03801C00C01C00601C00701C00701C00701C00701C00601C00C01C03801FFE
+001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0000FF8000>
+24 23 -1 22 24] 80 dc
+51 @bop1
+cmr6.300 sf
+223 2744(3)s
+cmr7.300 sf
+952 776(3)s
+cmtt10.300 sf
+365 165(D)s
+1215(Make)h
+cmbx10.432 sf
+177 376(2.11)s
+70(The)h
+23(Dangers)h
+23(of)h
+23(F)h
+-6(unnelW)h
+-6(eb)h
+cmbx10.300 sf
+295 865(Spaghetti)s
+15(organizati)h
+-1(on:)h
+295 1188(Boring)s
+16(organizati)h
+-1(on:)h
+295 1561(P)s
+-1(o)h
+1(or)h
+15(random)h
+14(access:)h
+295 2083(T)s
+-4(o)h
+1(o-in)h
+-1(terde)h
+-1(p)h
+1(end)h
+-1(en)h
+-2(t)h
+16(do)h
+1(cumen)h
+-1(t)h
+-1(ati)h
+-1(on:)h
+cmr8.300 sf
+241 2756(The)s
+11(fact)h
+11(that)h
+11(these)h
+11(faults)h
+10(are)h
+11(listed)h
+11(here)h
+11(do)h
+1(es)h
+10(not)h
+11(mean)h
+11(that)h
+11(the)h
+11(author)h
+10(has)h
+11(elimina)h
+-1(ted)h
+9(them)h
+11(in)h
+11(his)h
+12(o)h
+-1(wn)h
+11(w)h
+-1(ork.)h
+177 2795(Rather,)s
+8(it)h
+8(is)h
+8(mainly)h
+7(the)h
+8(author')h
+-1(s)h
+7(o)h
+-1(wn)h
+8(mistak)h
+-1(es)h
+7(that)h
+7(ha)h
+-1(v)h
+-1(e)h
+8(resulted)h
+6(in)h
+8(this)h
+8(list)h
+8(b)h
+1(eing)h
+7(compile)h
+-1(d.)h
+13(The)h
+8(author)h
+7(immedi)h
+-1(ate)h
+-1(ly)h
+177 2835(confesses)s
+10(to)h
+11(sev)h
+-1(eral)h
+10(of)h
+11(the)h
+11(faults)h
+10(listed)h
+10(here,)h
+11(most)h
+10(notably)h
+9(that)h
+11(of)h
+11(P)h
+-1(a)h
+-1(vlo)h
+-1(v)h
+10(do)h
+1(cumen)h
+-2(tat)h
+-1(ion)h
+-1(.)h
+cmr10.300 sf
+177 42(it)s
+18(deletes)h
+19(the)h
+18(temp)h
+1(orary)h
+17(\014le.)h
+30(If)h
+17(the)h
+18(t)h
+-1(w)h
+-1(o)h
+17(are)h
+19(di\013eren)h
+-1(t)h
+18(it)h
+18(deletes)h
+19(the)h
+18(target)h
+18(\014le)h
+18(and)h
+18(renames)h
+17(the)h
+177 91(temp)s
+1(orary)h
+13(\014le)h
+14(to)h
+14(the)h
+14(target)h
+15(\014le.)h
+177 165(Use)s
+11(of)h
+10(the)h
+43(facilit)h
+-1(y)h
+8(means)h
+10(that)h
+10(the)h
+11(programm)h
+-1(er)h
+9(need)h
+11(not)h
+10(b)h
+1(e)h
+11(punished)h
+11(\(b)h
+-1(y)h
+10(extra)h
+108(propagations\))h
+177 215(for)s
+14(describing)h
+14(more)h
+13(than)h
+14(one)h
+14(pro)h
+1(duct)h
+15(\014le)h
+14(in)h
+13(the)h
+15(same)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(\014le.)h
+177 492(Lik)s
+-1(e)h
+15(man)h
+-1(y)h
+13(to)h
+1(ols)h
+15(that)h
+15(are)h
+16(general)h
+15(and)h
+15(\015exible,)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(can)h
+15(b)h
+1(e)h
+16(used)h
+16(in)h
+15(a)h
+15(v)h
+-2(ariet)h
+-1(y)h
+14(of)h
+15(w)h
+-1(a)h
+-1(ys,)h
+15(b)h
+1(oth)h
+177 541(go)s
+1(o)h
+1(d)h
+16(and)h
+17(bad.)h
+26(One)h
+18(of)h
+16(the)h
+17(original)h
+15(app)h
+1(eals)h
+17(of)h
+16(the)h
+17(literate)h
+17(approac)h
+-1(h)h
+17(to)h
+16(programm)h
+-1(ing)h
+14(for)h
+17(Kn)h
+-1(uth,)h
+177 591(the)s
+18(in)h
+-1(v)h
+-1(en)h
+-1(tor)h
+17(of)h
+16(literate)h
+18(programm)h
+-1(i)h
+-1(ng,)h
+16(w)h
+-1(as)h
+17(that)h
+17(it)h
+17(allo)h
+-1(ws)h
+16(the)h
+18(programm)h
+-1(er)h
+16(to)h
+17(describ)h
+1(e)h
+19(the)h
+17(target)h
+177 641(program)s
+12(b)h
+1(ottom)h
+12(up,)h
+13(top)h
+13(do)h
+-1(wn,)h
+13(size)h
+14(to)h
+13(side,)h
+13(or)h
+14(c)h
+-1(haotically)h
+12(if)h
+12(desired.)h
+19(The)h
+14(\015exibilit)h
+-1(y)h
+12(that)h
+13(this)h
+14(st)h
+-1(yle)h
+177 691(of)s
+15(programm)h
+-1(i)h
+-1(ng)h
+13(lea)h
+-1(v)h
+-1(es)h
+15(m)h
+-1(uc)h
+-1(h)h
+14(ro)h
+1(om)h
+13(for)h
+15(bad)h
+15(do)h
+1(cumen)h
+-1(tation)h
+13(as)h
+15(w)h
+-1(ell)h
+15(as)h
+15(go)h
+1(o)h
+1(d)h
+14(do)h
+1(cumen)h
+-1(tation.)h
+20(Y)h
+-3(ears)h
+177 741(of)s
+16(exp)h
+1(erience)h
+19(with)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(has)h
+17(rev)h
+-1(ealed)h
+17(the)h
+18(follo)h
+-1(wi)h
+-1(ng)h
+15(st)h
+-1(ylistic)h
+16(pitfalls)h
+16(whic)h
+-1(h)h
+16(the)h
+18(exp)h
+1(erienced)h
+177 791(F)s
+-3(unnelW)h
+-3(eb)h
+14(user)h
+15(should)h
+13(tak)h
+-1(e)h
+14(care)h
+15(to)h
+14(a)h
+-1(v)h
+-1(oid.)h
+803 865(By)s
+16(far)h
+15(the)h
+16(w)h
+-1(orst)h
+16(problem)h
+14(that)h
+15(arises)h
+16(in)h
+15(connection)h
+16(with)h
+295 914(the)s
+20(literate)h
+18(st)h
+-1(yle)h
+19(o)h
+1(ccurs)h
+20(where)h
+20(the)h
+20(programm)h
+-1(er)h
+17(has)h
+19(used)h
+19(the)h
+20(literate)h
+19(to)h
+1(ol)h
+18(to)h
+18(com-)h
+295 964(pletely)s
+17(scram)h
+-1(ble)h
+15(the)h
+17(program)h
+14(so)h
+17(that)h
+16(the)h
+17(program)h
+14(is)h
+16(describ)h
+1(ed)h
+18(and)h
+16(la)h
+-1(y)h
+-1(ed)h
+16(out)h
+16(in)h
+16(an)h
+295 1014(unordered,)s
+19(undisciplined)h
+17(\\stream)h
+16(of)h
+16(consciousness".)h
+29(In)h
+17(suc)h
+-1(h)h
+18(cases)h
+18(the)h
+18(programm)h
+-1(er)h
+295 1064(ma)s
+-1(y)h
+11(b)h
+1(e)h
+13(using)h
+13(the)h
+13(literate)h
+13(st)h
+-1(yle)h
+12(as)h
+13(a)h
+12(crutc)h
+-1(h)h
+14(to)h
+13(a)h
+-1(v)h
+-1(oid)h
+11(ha)h
+-1(ving)h
+11(to)h
+13(think)h
+12(ab)h
+1(out)h
+13(structuring)h
+295 1114(the)s
+15(presen)h
+-1(tation.)h
+745 1188(A)s
+-1(t)h
+15(the)h
+16(other)h
+16(extreme,)h
+15(a)h
+15(program)h
+14(ma)h
+-1(y)h
+13(b)h
+1(e)h
+16(organized)h
+15(in)h
+15(suc)h
+-1(h)h
+295 1238(a)s
+16(strict)h
+16(w)h
+-1(a)h
+-1(y)h
+16(that)h
+15(it)h
+16(is)h
+16(essen)h
+-1(tially)h
+15(laid)h
+15(out)h
+16(in)h
+15(the)h
+17(order)h
+16(most)h
+15(\\desired")h
+16(b)h
+-1(y)h
+16(the)h
+16(target)h
+295 1287(programm)s
+-1(ing)h
+13(language.)h
+21(F)h
+-3(or)h
+15(example,)h
+14(eac)h
+-1(h)h
+16(macro)h
+14(migh)h
+-1(t)h
+13(con)h
+-1(tain)h
+15(a)h
+15(single)h
+15(pro)h
+1(cedure,)h
+295 1337(with)s
+15(all)h
+13(the)h
+15(macros)h
+14(b)h
+1(eing)h
+15(called)h
+14(b)h
+-1(y)h
+15(a)h
+14(macro)h
+14(connected)h
+16(to)h
+15(a)h
+14(\014le)h
+15(at)h
+14(the)h
+16(top.)h
+20(In)h
+15(man)h
+-1(y)h
+295 1387(cases)s
+20(a)h
+19(b)h
+1(oring)h
+18(structure)h
+21(ma)h
+-1(y)h
+17(b)h
+1(e)h
+19(en)h
+-1(tirely)h
+19(appropriate,)h
+20(but)h
+19(the)h
+19(programm)h
+-1(er)h
+18(should)h
+295 1437(b)s
+1(e)h
+18(w)h
+-1(arned)h
+17(that)h
+16(it)h
+17(is)h
+16(easy)h
+17(to)h
+17(slip)h
+16(in)h
+-1(to)h
+16(suc)h
+-1(h)h
+18(a)h
+16(normativ)h
+-1(e)h
+15(st)h
+-1(yle,)h
+17(largely)h
+16(forgetting)h
+16(the)h
+295 1487(descriptiv)s
+-1(e)h
+15(structural)h
+15(p)h
+1(o)h
+-1(w)h
+-1(er)h
+14(that)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(pro)h
+-1(vides.)h
+742 1561(Using)s
+14(F)h
+-3(unnelW)h
+-3(eb,)h
+12(it)h
+13(is)h
+14(quite)h
+13(p)h
+1(ossible)h
+14(to)h
+13(write)h
+14(programs)h
+12(lik)h
+-1(e)h
+295 1611(no)s
+-1(v)h
+-1(els)h
+15(|)h
+14(to)h
+14(b)h
+1(e)h
+15(read)h
+15(from)h
+13(co)h
+-1(v)h
+-1(er)h
+15(to)h
+14(co)h
+-1(v)h
+-1(er.)h
+21(Sometim)h
+-1(es)h
+14(the)h
+15(story)h
+15(is)h
+14(v)h
+-1(ery)h
+15(exciting,)h
+14(with)h
+295 1660(data)s
+16(structures)h
+19(maki)h
+-1(ng)h
+14(dashing)h
+16(triumphs)h
+15(and)h
+16(optimized)h
+15(co)h
+1(de)h
+17(bringing)h
+15(the)h
+16(story)h
+17(to)h
+295 1710(a)s
+14(satisfying)h
+12(conclusion.)h
+18(These)h
+15(programs)h
+13(can)h
+13(b)h
+1(e)h
+15(w)h
+-1(orks)h
+13(of)h
+13(art.)h
+18(Unfortunately)h
+-3(,)h
+13(without)h
+295 1760(careful)s
+11(construction,)h
+12(suc)h
+-1(h)h
+11(\\no)h
+-1(v)h
+-1(el-programs")h
+8(can)h
+11(b)h
+1(ecome)h
+10(v)h
+-1(ery)h
+11(hard)h
+11(to)h
+10(access)h
+13(randomly)h
+295 1810(b)s
+-1(y)h
+18(\(sa)h
+-1(y\))h
+19(a)h
+18(main)h
+-1(tenance)h
+17(programmer)h
+17(who)h
+18(wishes)h
+19(only)h
+17(to)h
+19(div)h
+-1(e)h
+18(in)h
+18(and)h
+18(\014x)h
+18(a)h
+18(sp)h
+1(eci\014c)h
+295 1860(problem.)s
+17(If)h
+14(the)h
+14(en)h
+-1(tire)h
+15(program)h
+12(is)h
+14(scram)h
+-1(bled)h
+13(for)h
+13(sequen)h
+-1(tial)h
+14(exp)h
+1(osition,)h
+13(it)h
+14(can)h
+14(b)h
+1(e)h
+15(hard)h
+295 1909(to)s
+14(\014nd)h
+15(the)h
+14(parts)h
+15(relating)h
+14(to)h
+14(a)h
+14(single)h
+14(function.)h
+18(Someho)h
+-1(w)h
+13(a)h
+14(balance)h
+14(m)h
+-1(ust)h
+13(b)h
+1(e)h
+15(struc)h
+-1(k)h
+15(in)h
+295 1959(the)s
+16(do)h
+1(cumen)h
+-1(t)h
+15(b)h
+1(et)h
+-1(w)h
+-1(een)h
+16(the)h
+16(needs)h
+17(of)h
+14(the)h
+16(sequen)h
+-1(tial)h
+15(and)h
+15(of)h
+15(the)h
+16(random-access)h
+15(reader.)h
+295 2009(This)s
+14(balance)h
+14(will)h
+12(dep)h
+1(end)h
+16(on)h
+13(the)h
+15(in)h
+-1(tended)h
+14(use)h
+15(of)h
+13(the)h
+15(program.)h
+1068 2083(Sometim)s
+-1(es,)h
+14(when)h
+16(editing)h
+15(a)h
+15(program)h
+14(writ-)h
+295 2133(ten)s
+17(using)h
+17(F)h
+-3(unnelW)h
+-3(eb,)h
+16(one)h
+17(kno)h
+-1(ws)h
+16(ho)h
+-1(w)h
+16(to)h
+16(mo)h
+1(dify)h
+15(the)h
+17(program,)h
+15(but)h
+16(one)h
+17(is)h
+17(unsure)h
+17(of)h
+295 2183(ho)s
+-1(w)h
+16(to)h
+17(up)h
+1(date)h
+17(the)h
+17(surrounding)h
+16(do)h
+1(cumen)h
+-1(tation!)h
+25(The)h
+16(do)h
+1(cumen)h
+-1(tation)h
+16(ma)h
+-1(y)h
+14(b)h
+1(e)h
+17(w)h
+-1(o)h
+-1(v)h
+-1(en)h
+295 2233(in)s
+-1(to)h
+15(suc)h
+-1(h)h
+15(a)h
+15(net)h
+-1(w)h
+-1(ork)h
+16(of)h
+14(facts)h
+15(that)h
+16(it)h
+14(seems)h
+16(that)h
+15(c)h
+-1(hanging)h
+14(a)h
+15(small)h
+13(piece)h
+15(of)h
+15(co)h
+1(de)h
+16(could)h
+295 2282(in)s
+-1(v)h
+-2(alidate)h
+16(man)h
+-1(y)h
+15(pieces)h
+19(of)h
+16(do)h
+1(cumen)h
+-1(tation)h
+16(scattered)h
+20(throughout)h
+17(the)h
+18(do)h
+1(cumen)h
+-1(t.)h
+27(The)h
+295 2332(do)s
+1(cumen)h
+-1(tation)h
+12(b)h
+1(ecomes)h
+13(a)h
+13(big)h
+13(tar)h
+13(pit)h
+13(in)h
+12(whic)h
+-1(h)h
+13(mo)h
+-1(v)h
+-1(em)h
+-1(en)h
+-1(t)h
+12(is)h
+13(imp)h
+1(ossible.)h
+16(F)h
+-3(or)h
+12(example,)h
+295 2382(if)s
+18(y)h
+-1(ou)h
+18(ha)h
+-1(v)h
+-1(e)h
+18(talk)h
+-1(ed)h
+18(ab)h
+1(out)h
+19(a)h
+18(particular)h
+18(data)h
+18(structure)h
+21(in)h
+-1(v)h
+-2(arian)h
+-1(t)h
+17(throughout)h
+18(a)h
+18(do)h
+1(cu-)h
+295 2432(men)s
+-1(t,)h
+17(c)h
+-1(hanging)h
+16(that)h
+17(in)h
+-1(v)h
+-2(arian)h
+-1(t)h
+15(in)h
+17(a)h
+16(small)h
+15(w)h
+-1(a)h
+-1(y)h
+16(could)h
+17(mean)h
+16(ha)h
+-1(ving)h
+16(to)h
+17(up)h
+1(date)h
+17(all)h
+16(the)h
+295 2482(do)s
+1(cumen)h
+-1(tation)h
+18(without)h
+18(touc)h
+-1(hing)h
+19(m)h
+-1(uc)h
+-1(h)h
+18(co)h
+1(de.)h
+33(In)h
+19(suc)h
+-1(h)h
+20(cases,)h
+21(the)h
+19(do)h
+1(cumen)h
+-1(tation)h
+18(is)h
+295 2531(to)s
+1(o)h
+14(in)h
+-1(terdep)h
+1(enden)h
+-1(t.)h
+21(This)h
+14(could)h
+14(b)h
+1(e)h
+15(symptom)h
+-1(atic)h
+12(of)h
+14(an)h
+13(excessibly)h
+16(in)h
+-1(terconnected)h
+16(pro-)h
+295 2581(gram,)s
+16(or)h
+16(of)h
+16(an)h
+17(excessiv)h
+-1(ely)h
+18(v)h
+-1(erb)h
+1(ose)h
+18(or)h
+16(redundan)h
+-1(t)h
+18(do)h
+1(cumen)h
+-1(ting)h
+15(st)h
+-1(yle.)h
+27(In)h
+17(an)h
+-1(y)h
+16(case,)h
+18(a)h
+295 2631(balance)s
+13(m)h
+-1(ust)h
+12(b)h
+1(e)h
+13(struc)h
+-1(k)h
+14(b)h
+1(et)h
+-1(w)h
+-1(een)h
+15(the)h
+13(con)h
+-1(v)h
+-1(ersational)h
+12(st)h
+-1(yle)h
+13(that)h
+13(encourages)h
+15(redundancy)h
+295 2681(\(b)s
+-1(y)h
+11(men)h
+-1(tioning)h
+8(things)h
+11(man)h
+-1(y)h
+9(times\))h
+10(and)h
+10(the)h
+12(normal)h
+-1(ized)h
+10(database)h
+11(approac)h
+-1(h)h
+10(where)h
+12(eac)h
+-1(h)h
+1042 2940(50)s
+709 2 177 2717 r
+51 @eop
+52 @bop0
+cmr8.300 sf
+[<FC00FE1E00381F001017001013801011C01011C01010E010107010103810103810101C
+10100E10100F101007101003901001D01001D01000F0100070100030380030FE0010>
+24 23 -1 22 26] 78 dc
+[<60F0F06000000000000060F0F060>
+8 14 -3 13 10] 58 dc
+[<0F8030E040708030C038E0384038003800700070006000C00180030006000C08080810
+183FF07FF0FFF0>
+16 21 -2 20 18] 50 dc
+[<03000700FF000700070007000700070007000700070007000700070007000700070007
+00070007007FF0>
+16 21 -2 20 18] 49 dc
+[<01F00608080C181C301C70006000E000E3E0EC30F018F00CE00EE00EE00E600E600E30
+0C3018183007C0>
+16 21 -1 20 18] 54 dc
+52 @bop1
+cmr7.300 sf
+1067 448(4)s
+cmr6.300 sf
+223 2823(4)s
+cmti10.300 sf
+1202 314(no)s
+cmr8.300 sf
+241 2835(Note:)s
+15(This)h
+11(is)h
+12(not)h
+10(a)h
+12(criticism)h
+9(of)h
+11(2167A,)h
+11(only)h
+10(of)h
+12(the)h
+10(w)h
+-1(a)h
+-1(y)h
+12(it)h
+11(is)h
+12(sometim)h
+-1(es)h
+10(used.)h
+cmbx10.300 sf
+295 164(P)s
+-1(a)h
+-1(vlo)h
+-1(v)h
+12(do)h
+1(cumen)h
+-1(tati)h
+-1(on:)h
+1317 513([Strunk79])s
+295 885(Dupli)s
+-1(cate)h
+11(do)h
+1(cumen)h
+-1(tati)h
+-1(on)h
+-1(:)h
+295 2150(Ov)s
+-1(erdo)h
+1(cumen)h
+-1(t)h
+-1(in)h
+-1(g:)h
+1645 2722([Gries81])s
+cmtt10.300 sf
+1787 264(@C)s
+177 1443(@A)s
+22(Here)h
+21(is)h
+21(the)h
+21(header)h
+21(comment)h
+20(for)h
+21(the)h
+21(list)h
+21(package)h
+21(specificati)h
+-1(on.)h
+177 1493(The)s
+21(reader)h
+21(should)h
+20(read)h
+21(these)h
+21(comments)h
+20(carefully)h
+20(as)h
+22(they)h
+21(define)h
+20(a)h
+22(list.)h
+177 1542(There)s
+21(is)h
+21(no)h
+22(need)h
+21(to)h
+21(duplicate)h
+20(the)h
+21(comments)h
+20(in)h
+22(this)h
+21(text.)h
+177 1642(@$@<Specifica)s
+-1(tion)h
+19(package)h
+21(header)h
+20(comments@>==@{)h
+-1(@-)h
+177 1692(--)s
+22(LIST)h
+21(PACKAGE)h
+177 1742(--)s
+22(==========)h
+-1(==)h
+177 1792(--)s
+22(*)h
+21(A)h
+22(LIST)h
+21(consists)h
+20(of)h
+21(zero)h
+21(or)h
+22(more)h
+21(ITEMS.)h
+177 1841(--)s
+22(*)h
+21(The)h
+21(items)h
+21(are)h
+21(numbered)h
+20(1)h
+22(to)h
+21(N)h
+22(where)h
+21(N)h
+21(is)h
+22(the)h
+21(number)h
+20(of)h
+22(items)h
+21(in)h
+21(the)h
+21(list.)h
+177 1891(--)s
+22(*)h
+21(If)h
+22(the)h
+21(list)h
+21(is)h
+21(non-empty,)h
+20(item)h
+21(1)h
+21(is)h
+22(called)h
+20(the)h
+21(HEAD)h
+21(of)h
+22(the)h
+21(list.)h
+177 1941(--)s
+22(*)h
+21(If)h
+22(the)h
+21(list)h
+21(is)h
+21(non-empty,)h
+20(item)h
+21(N)h
+21(is)h
+22(called)h
+20(the)h
+21(TAIL)h
+21(of)h
+22(the)h
+21(list.)h
+177 1991(--)s
+22(...)h
+177 2041(@})s
+cmr10.300 sf
+295 42(fact)s
+17(is)h
+16(giv)h
+-1(en)h
+16(at)h
+16(only)h
+16(one)h
+16(p)h
+1(oin)h
+-1(t,)h
+16(and)h
+17(the)h
+17(reader)h
+17(is)h
+17(left)h
+16(to)h
+16(\014gure)h
+17(out)h
+16(the)h
+17(implicatio)h
+-1(ns)h
+295 91(throughout)s
+14(the)h
+15(do)h
+1(cumen)h
+-1(t.)h
+789 164(By)s
+13(placing)h
+11(so)h
+12(m)h
+-1(uc)h
+-1(h)h
+11(emphasis)h
+11(on)h
+12(the)h
+12(do)h
+1(cumen)h
+-1(tation,)h
+11(F)h
+-3(un-)h
+295 214(nelW)s
+-3(eb)h
+16(naturally)h
+16(pro)h
+-1(vides)h
+17(slots)h
+16(where)h
+18(do)h
+1(cumen)h
+-1(tation)h
+15(\\should")h
+16(go.)h
+25(F)h
+-3(or)h
+17(example,)h
+15(a)h
+295 264(F)s
+-3(unnelW)h
+-3(eb)h
+16(user)h
+18(ma)h
+-1(y)h
+15(feel)h
+16(that)h
+17(there)h
+18(ma)h
+-1(y)h
+14(b)h
+1(e)h
+17(a)h
+17(rather)h
+17(unpleasan)h
+-1(t)h
+17(gap)h
+16(b)h
+1(et)h
+-1(w)h
+-1(een)h
+18(a)h
+295 314(mark)s
+-1(er)h
+16(and)h
+17(the)h
+17(follo)h
+-1(wing)h
+14(macro.)h
+25(In)h
+17(man)h
+-1(y)h
+15(cases)h
+79(commen)h
+-1(tary)h
+15(is)h
+16(needed)h
+18(and)h
+17(the)h
+295 363(zone)s
+13(is)h
+12(b)h
+1(etter)h
+14(left)h
+12(blank)h
+12(rather)h
+13(than)h
+13(b)h
+1(eing)h
+12(\014lled)h
+12(with)h
+12(the)h
+13(kind)h
+11(of)h
+12(uninformativ)h
+-2(e)h
+11(w)h
+-1(a\017e)h
+295 413(one)s
+17(often)h
+18(\014nds)h
+17(\014lling)h
+15(the)h
+18(slots)h
+17(of)h
+17(structured)h
+19(do)h
+1(cumen)h
+-1(tation)h
+16(written)h
+17(according)h
+17(to)h
+17(a)h
+295 463(mili)s
+-1(tary)h
+11(standards)h
+14(\(e.g.)h
+12(MIL-STD-2167A\).)h
+30(The)h
+13(lesson)h
+14(is)h
+12(to)h
+13(add)h
+13(do)h
+1(cumen)h
+-1(tation)h
+11(only)h
+295 513(when)s
+12(it)h
+10(adds)h
+12(something.)h
+15(The)h
+12(lesson)h
+11(in)h
+11(Strunk)h
+11(and)h
+11(White)h
+228(\(p.)h
+11(23\))h
+10(holds)h
+11(for)h
+295 563(program)s
+13(do)h
+1(cumen)h
+-1(tation)h
+12(as)h
+14(it)h
+14(do)h
+1(es)h
+14(for)h
+14(other)h
+14(writing:)h
+18(\\Vigorous)h
+13(writing)h
+13(is)h
+14(concise.)h
+19(A)h
+295 613(sen)s
+-1(tence)h
+14(should)h
+11(con)h
+-1(tain)h
+11(no)h
+10(unnecess)h
+1(ary)h
+13(w)h
+-1(ords,)h
+11(a)h
+11(paragraph)h
+11(no)h
+11(unnecessary)h
+14(sen)h
+-1(tences,)h
+295 662(for)s
+15(the)h
+15(same)h
+14(reason)h
+15(that)h
+14(a)h
+15(dra)h
+-1(wing)h
+14(should)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(no)h
+15(unnecessary)h
+17(lines)h
+14(and)h
+15(a)h
+14(mac)h
+-1(hine)h
+295 712(no)s
+14(unnecessary)h
+16(parts.)h
+19(This)h
+13(requires)h
+16(not)h
+13(that)h
+14(the)h
+15(writer)h
+14(mak)h
+-1(e)h
+13(all)h
+12(his)h
+14(sen)h
+-1(tences)h
+17(short,)h
+295 762(or)s
+14(that)h
+13(he)h
+14(a)h
+-1(v)h
+-1(oid)h
+13(all)h
+12(detail)h
+13(and)h
+13(treat)h
+15(his)h
+13(sub)h
+2(jects)h
+16(only)h
+12(in)h
+13(outline,)h
+13(but)h
+14(that)h
+13(ev)h
+-1(ery)h
+15(w)h
+-1(ord)h
+295 812(tell.".)s
+850 885(Where)s
+12(the)h
+12(programm)h
+-1(er)h
+10(is)h
+11(generating)h
+11(pro)h
+1(duct)h
+12(\014les)h
+12(that)h
+295 935(m)s
+-1(ust)h
+17(exist)h
+17(on)h
+17(their)h
+18(o)h
+-1(wn)h
+17(within)h
+16(the)h
+18(en)h
+-1(tire)h
+18(programm)h
+-1(ing)h
+15(en)h
+-1(vironmen)h
+-1(t)h
+16(\(e.g.)h
+17(the)h
+18(case)h
+295 984(of)s
+17(a)h
+18(programm)h
+-1(er)h
+16(in)h
+18(a)h
+17(team)h
+17(who)h
+18(is)h
+17(using)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(for)h
+17(his)h
+18(o)h
+-1(wn)h
+18(b)h
+1(ene\014t)h
+19(but)h
+18(m)h
+-1(ust)h
+295 1034(generate)s
+14(\(sa)h
+-1(y\))h
+13(comm)h
+-1(en)h
+-1(ted)h
+12(Ada)h
+13(sp)h
+1(eci\014cation)h
+13(pac)h
+-1(k)h
+-2(age)h
+12(\014les\))h
+14(there)h
+14(is)h
+12(a)h
+13(tendency)h
+14(for)h
+12(the)h
+295 1084(commen)s
+-1(ts)h
+16(in)h
+17(the)h
+18(target)h
+17(co)h
+1(de)h
+18(to)h
+18(duplicate)h
+17(the)h
+18(comm)h
+-1(en)h
+-1(tary)h
+16(in)h
+17(the)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(text.)h
+295 1134(This)s
+11(ma)h
+-1(y)h
+9(or)h
+11(ma)h
+-1(y)h
+9(not)h
+11(b)h
+1(e)h
+12(a)h
+11(problem,)h
+10(dep)h
+1(ending)h
+11(on)h
+11(the)h
+12(exact)h
+11(situation.)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+11(if)h
+11(this)h
+295 1184(is)s
+11(happ)h
+1(ening,)h
+11(it)h
+11(is)h
+10(certainly)h
+11(w)h
+-1(orth)h
+11(the)h
+12(programm)h
+-1(er)h
+9(sp)h
+1(ending)h
+12(some)h
+10(time)h
+10(deciding)h
+10(if)h
+10(one)h
+295 1233(or)s
+13(other)h
+13(of)h
+12(the)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(or)h
+13(inline-comm)h
+-2(en)h
+-1(t)h
+11(do)h
+1(cumen)h
+-1(tation)h
+12(should)h
+12(b)h
+1(e)h
+13(discarded.)h
+19(In)h
+295 1283(man)s
+-1(y)h
+11(cases,)h
+14(a)h
+12(mixture)h
+12(can)h
+12(b)h
+1(e)h
+14(used,)h
+13(with)h
+12(the)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(do)h
+1(cumen)h
+-1(tation)h
+12(referring)h
+13(the)h
+295 1333(reader)s
+15(to)h
+14(the)h
+15(inline)h
+13(comm)h
+-1(en)h
+-1(ts)h
+13(where)h
+15(they)h
+14(are)h
+14(presen)h
+-1(t.)h
+20(F)h
+-3(or)h
+14(example:)h
+699 2150(Another)s
+16(evil)h
+15(that)h
+15(can)h
+15(arise)h
+16(when)h
+15(using)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(is)h
+15(to)h
+15(o)h
+-1(v)h
+-1(er-)h
+295 2200(do)s
+1(cumen)h
+-1(t)h
+18(the)h
+19(target)h
+19(program.)h
+29(In)h
+19(some)h
+17(of)h
+18(Kn)h
+-1(uth's)h
+18(earlier)h
+19(\(e.g.)h
+17(1984\))h
+18(examples)h
+17(of)h
+295 2250(literate)s
+11(programm)h
+-1(ing,)h
+9(eac)h
+-1(h)h
+11(v)h
+-2(ariable)h
+10(is)h
+11(giv)h
+-1(en)h
+10(its)h
+11(o)h
+-1(wn)h
+10(description)h
+12(and)h
+10(eac)h
+-1(h)h
+12(piece)h
+12(of)h
+10(co)h
+1(de)h
+295 2300(has)s
+16(a)h
+15(detailed)h
+15(explanation.)h
+22(This)h
+16(lev)h
+-1(el)h
+15(of)h
+15(analysis,)h
+14(while)h
+15(justi\014ed)h
+16(for)h
+15(tric)h
+-1(ky)h
+16(tracts)h
+16(of)h
+295 2350(co)s
+1(de,)h
+13(is)h
+12(probably)h
+12(not)h
+12(w)h
+-1(arran)h
+-1(ted)h
+13(for)h
+12(most)h
+11(of)h
+12(the)h
+13(co)h
+1(de)h
+13(that)h
+12(constitutes)h
+14(most)h
+11(programs.)h
+295 2400(Suc)s
+-1(h)h
+18(o)h
+-1(v)h
+-1(er-commen)h
+-1(ting)h
+15(can)h
+18(ev)h
+-1(en)h
+18(ha)h
+-1(v)h
+-1(e)h
+17(the)h
+18(detrimen)h
+-1(tal)h
+17(a\013ect)h
+18(of)h
+17(obscuring)h
+18(the)h
+18(co)h
+1(de,)h
+295 2449(making)s
+11(it)h
+12(hard)h
+13(to)h
+13(understand)h
+14(b)h
+1(ecause)h
+15(it)h
+12(is)h
+13(so)h
+13(scattered)h
+15(\(see)h
+14(\\spaghetti)h
+13(organization")h
+295 2499(earlier\).)s
+18(It)h
+12(is)h
+12(up)h
+12(to)h
+12(the)h
+13(user)h
+13(to)h
+12(decide)h
+13(when)h
+12(a)h
+12(stretc)h
+-1(h)h
+14(of)h
+11(just)h
+13(a)h
+11(few)h
+13(lines)h
+12(of)h
+11(co)h
+1(de)h
+13(should)h
+295 2549(b)s
+1(e)h
+15(pulled)h
+13(to)h
+14(bits)h
+14(and)h
+14(analysed)h
+13(and)h
+14(when)h
+15(it)h
+13(is)h
+14(clearer)h
+15(to)h
+14(lea)h
+-1(v)h
+-1(e)h
+13(it)h
+14(alone.)h
+295 2622(In)s
+16(the)h
+16(case)h
+16(where)h
+17(there)h
+17(are)h
+15(a)h
+16(few)h
+15(rather)h
+16(tric)h
+-1(ky)h
+16(lines)h
+15(of)h
+15(co)h
+1(de,)h
+16(a)h
+15(detailed)h
+16(explanation)h
+295 2672(ma)s
+-1(y)h
+10(b)h
+1(e)h
+13(appropriate.)h
+17(The)h
+12(follo)h
+-1(wing)h
+10(example)h
+10(con)h
+-1(tains)h
+12(a)h
+11(solution)h
+11(to)h
+12(a)h
+12(problem)h
+10(outlined)h
+295 2722(in)s
+14(section)h
+14(16.3)h
+13(of)h
+13(the)h
+14(b)h
+1(o)h
+1(ok)h
+14(\\The)h
+14(Science)h
+15(of)h
+13(Programm)h
+-1(ing")h
+11(b)h
+-1(y)h
+14(Da)h
+-1(vid)h
+12(Gries)h
+295 2771(.)s
+1042 2940(51)s
+709 2 177 2796 r
+52 @eop
+53 @bop0
+53 @bop1
+cmr10.300 sf
+295 2827(Where)s
+15(the)h
+14(co)h
+1(de)h
+15(is)h
+14(more)h
+13(ob)h
+-1(vious,)h
+12(it)h
+14(is)h
+14(often)h
+14(b)h
+1(etter)h
+15(to)h
+14(let)h
+14(the)h
+14(co)h
+1(de)h
+15(sp)h
+1(eak)h
+15(for)h
+13(itself.)h
+1042 2940(52)s
+cmtt10.300 sf
+177 42(@C@<Calculati)s
+-1(on)h
+20(of)h
+21(the)h
+21(longest)h
+21(plateau)h
+20(in)h
+21(array)h
+21(b@>)h
+177 141(This)s
+21(section)h
+20(contains)h
+21(a)h
+21(solution)h
+20(to)h
+22(a)h
+21(problem)h
+21(outlined)h
+20(in)h
+21(section)h
+21(16.3)h
+20(of)h
+177 191(the)s
+21(book)h
+21(@/The)h
+21(Science)h
+20(of)h
+22(Programming@)h
+-1(/)h
+20(by)h
+21(David)h
+21(Gries[Gries81)h
+-1(].)h
+177 291(@D)s
+22(Given)h
+20(a)h
+22(sorted)h
+20(array)h
+21(@{b[1..N]@})h
+20(of)h
+21(integers,)h
+20(we)h
+21(wish)h
+21(to)h
+22(determine)h
+20(the)h
+177 340(@/length@/)s
+20(of)h
+21(the)h
+21(longest)h
+21(run)h
+21(of)h
+21(identically)h
+20(valued)h
+20(elements)h
+21(in)h
+21(the)h
+21(array.)h
+177 390(This)s
+21(problem)h
+20(is)h
+22(defined)h
+20(by)h
+22(the)h
+21(following)h
+20(preconditio)h
+-1(n)h
+20(and)h
+21(postcondition)h
+-1(.)h
+177 490(@$@<Precondit)s
+-1(ion@>)h
+-1(==@{/)h
+-1(*)h
+20(Pre:)h
+21(sorted\(b\).)h
+20(*/@})h
+177 540(@$@<Postcondi)s
+-1(tion@)h
+-1(>==@{)h
+-1(@-)h
+177 589(/*)s
+22(Post:)h
+20(sorted\(b\))h
+20(and)h
+21(p)h
+22(is)h
+21(the)h
+22(length)h
+20(of)h
+21(the)h
+22(longest)h
+20(run)h
+21(in)h
+22(b[1..N].)h
+20(*/@})h
+177 689(@D)s
+22(We)h
+21(approach)h
+20(a)h
+22(solution)h
+20(to)h
+21(the)h
+21(problem)h
+21(by)h
+21(deciding)h
+20(to)h
+22(try)h
+21(the)h
+21(approach)h
+20(of)h
+177 739(scanning)s
+20(through)h
+21(the)h
+21(array)h
+21(one)h
+21(element)h
+20(at)h
+21(a)h
+22(time)h
+21(maintaining)h
+20(a)h
+21(useful)h
+177 789(invariant)s
+20(through)h
+20(each)h
+21(iteration.)h
+20(A)h
+22(loop)h
+21(variable)h
+177 839(array)s
+21(index)h
+21(@{i@})h
+20(is)h
+22(created)h
+20(for)h
+21(this)h
+21(purpose.)h
+20(The)h
+22(bound)h
+20(function)h
+21(is)h
+177 888(@{N-i@}.)s
+20(Here)h
+21(is)h
+22(the)h
+21(invariant.)h
+177 988(@$@<Invariant)s
+-1(@>==@)h
+-1({@-)h
+177 1038(/*)s
+22(Invariant:)h
+19(sorted\(b\))h
+20(and)h
+21(1<=i<=N)h
+21(and)h
+239(*/)h
+177 1088(/*)s
+261(p)h
+22(is)h
+21(len)h
+21(of)h
+22(longest)h
+20(run)h
+21(in)h
+22(b[1..i].)h
+20(*/@})h
+177 1187(@D)s
+22(Establishi)h
+-1(ng)h
+20(the)h
+21(invariant)h
+20(above)h
+21(in)h
+21(the)h
+21(initial,)h
+20(degenerate)h
+20(case)h
+21(is)h
+21(easy.)h
+177 1287(@$@<Establish)s
+19(the)h
+21(plateau)h
+21(loop)h
+21(invariant)h
+20(initially@>)h
+-1(==@{i)h
+-1(=1;)h
+20(p=1;@})h
+177 1386(@D)s
+22(At)h
+21(this)h
+21(stage,)h
+20(we)h
+22(have)h
+21(the)h
+21(following)h
+20(loop)h
+21(structure.)h
+20(Note)h
+21(that)h
+21(when)h
+20(both)h
+177 1436(the)s
+21(invariant)h
+20(and)h
+21(@{i)h
+22(!=)h
+21(N@})h
+21(are)h
+21(true,)h
+21(the)h
+21(postcondition)h
+19(holds)h
+21(and)h
+21(the)h
+21(loop)h
+177 1486(can)s
+21(terminate.)h
+177 1586(@$@<Set)s
+21(p)h
+21(to)h
+21(the)h
+22(length)h
+20(of)h
+22(the)h
+21(longest)h
+20(plateau)h
+20(in)h
+22(sorted)h
+20(array)h
+21(b[1..N]@>==@{)h
+-1(@-)h
+177 1636(@<Preconditio)s
+-1(n@>)h
+177 1685(@<Establish)s
+20(the)h
+21(plateau)h
+20(loop)h
+21(invariant)h
+20(initially@>)h
+177 1735(while)s
+21(\(i)h
+21(!=)h
+22(N\))h
+221 1785({)s
+243 1835(@<Invarian)s
+-1(t@>)h
+243 1885(@<Loop)s
+20(body@>)h
+221 1934(})s
+177 1984(@<Postconditi)s
+-1(on@>)h
+177 2034(@})s
+177 2134(@D)s
+22(Now)h
+21(there)h
+20(remains)h
+21(only)h
+21(the)h
+21(loop)h
+21(body)h
+21(whose)h
+21(sole)h
+21(task)h
+21(is)h
+21(to)h
+21(increase)h
+20(@{i@})h
+177 2183(\(and)s
+21(so)h
+22(decrease)h
+20(the)h
+21(value)h
+21(of)h
+21(the)h
+21(bound)h
+21(function\))h
+20(while)h
+21(maintaining)h
+19(the)h
+177 2233(invariant.)s
+20(If)h
+21(@{p@})h
+21(is)h
+21(the)h
+22(length)h
+20(of)h
+22(the)h
+21(longest)h
+20(run)h
+177 2283(seen)s
+21(so)h
+22(far)h
+21(\(i.e.)h
+20(in)h
+22(b[1..i]\),)h
+20(then,)h
+21(because)h
+20(the)h
+21(array)h
+21(is)h
+21(sorted,)h
+177 2333(the)s
+21(extension)h
+20(of)h
+22(our)h
+21(array)h
+21(range)h
+20(to)h
+177 2383(@{b[1..i+1]@})s
+19(can)h
+21(only)h
+21(result)h
+21(in)h
+21(an)h
+22(increase)h
+20(in)h
+21(@{p@})h
+21(if)h
+21(the)h
+22(new)h
+21(element)h
+177 2433(terminates)s
+20(a)h
+21(run)h
+22(of)h
+21(length)h
+21(@{p+1@}.)h
+20(The)h
+21(increase)h
+20(can)h
+21(be)h
+22(at)h
+21(most)h
+21(1.)h
+21(Because)h
+177 2482(the)s
+21(array)h
+21(is)h
+21(sorted,)h
+21(we)h
+21(need)h
+177 2532(only)s
+21(compare)h
+20(the)h
+22(endpoints)h
+20(of)h
+21(this)h
+21(possible)h
+20(run)h
+21(to)h
+22(see)h
+21(if)h
+21(it)h
+22(exists.)h
+20(This)h
+177 2582(is)s
+22(performed)h
+19(as)h
+22(shown)h
+21(below.)h
+177 2682(@$@<Loop)s
+20(body@>==@{i++;)h
+19(if)h
+22(\(b[i])h
+20(!=)h
+22(b[i-p]\))h
+20(p++;@})h
+53 @eop
+54 @bop0
+54 @bop1
+cmbx10.300 sf
+1302 1112(wholisti)s
+-1(c)h
+12(debuggin)h
+-1(g)h
+cmbx10.432 sf
+177 932(2.12)s
+70(Wholistic)h
+20(Debugging)h
+177 2605(2.13)s
+70(Example)h
+-1(s)h
+21(of)h
+23(F)h
+-6(unnelW)h
+-6(eb)h
+23(Applicati)h
+-1(ons)h
+cmti10.300 sf
+1523 1062(debugging)s
+1425 1346(the)s
+16(c)h
+-2(o)h
+-2(de)h
+17(must)h
+16(not)h
+17(b)h
+-2(e)h
+16(in)h
+16(go)h
+-2(o)h
+-2(d)h
+177 1396(enough)s
+19(shap)h
+-2(e)h
+19(if)h
+18(such)h
+18(a)h
+18(bug)h
+19(c)h
+-2(an)h
+18(arise.)h
+cmtt10.300 sf
+177 42(@C)s
+22(The)h
+21(following)h
+20(function)h
+20(compares)h
+20(two)h
+21(C~strings)h
+20(and)h
+21(returns)h
+21(TRUE)h
+21(iff)h
+21(they)h
+177 91(are)s
+21(identical.)h
+177 191(@$@<Function)s
+19(comp@>==@{@-)h
+177 241(bool)s
+21(comp\(p,q\))h
+177 291(char)s
+21(*p,*q;)h
+177 340({)s
+199 390(while)s
+21(\(TRUE\))h
+243 440({)s
+264 490(if)s
+22(\(*p)h
+21(!=)h
+21(*q)h
+43(\))h
+22(return)h
+21(FALSE;)h
+264 540(if)s
+22(\(*p)h
+21(==)h
+21('\\0'\))h
+21(return)h
+21(TRUE;)h
+264 589(p++;)s
+21(q++;)h
+243 639(})s
+177 689(})s
+177 739(@})s
+cmr10.300 sf
+177 1062(Surprising)s
+19(though)h
+18(it)h
+18(ma)h
+-1(y)h
+16(b)h
+1(e,)h
+20(F)h
+-3(unnelW)h
+-3(eb)h
+18(has)h
+18(a)h
+19(k)h
+-1(ey)h
+18(role)h
+18(to)h
+19(pla)h
+-1(y)h
+17(in)h
+18(the)h
+213(of)h
+17(programs.)h
+177 1112(Long)s
+12(exp)h
+1(erience)h
+14(in)h
+12(programm)h
+-1(ing)h
+10(has)h
+13(led)h
+12(me)h
+11(to)h
+12(the)h
+13(concept)h
+14(of)h
+424(.)h
+15(When)h
+13(most)h
+177 1162(programm)s
+-1(ers)h
+14(detect)h
+16(a)h
+14(bug,)h
+14(their)h
+14(\014rst)h
+15(reaction)h
+15(seems)h
+15(to)h
+14(b)h
+1(e)h
+15(to)h
+14(jump)h
+13(in)h
+-1(to)h
+14(the)h
+15(debugger)h
+15(where)h
+15(they)h
+177 1212(often)s
+14(sp)h
+1(end)h
+15(man)h
+-1(y)h
+13(hours)h
+14(stepping)h
+15(through)h
+14(endless)h
+15(stretc)h
+-1(hes)h
+17(of)h
+13(co)h
+1(de)h
+15(and)h
+14(generally)h
+14(w)h
+-1(asting)h
+13(a)h
+14(lot)h
+13(of)h
+177 1261(time.)s
+177 1346(In)s
+16(con)h
+-1(trast,)h
+16(m)h
+-1(y)h
+13(\014rst)h
+16(reaction)h
+16(when)h
+16(I)h
+15(detect)h
+17(a)h
+15(bug)h
+16(is)h
+15(to)h
+15(realize)h
+16(that)h
+904 1396(The)s
+18(presence)h
+20(of)h
+17(the)h
+18(bug)h
+17(is)h
+17(tak)h
+-1(en)h
+17(as)h
+18(symptom)h
+-1(atic)h
+15(of)h
+17(the)h
+177 1446(lac)s
+-1(k)h
+17(of)h
+16(general)h
+18(health)h
+17(of)h
+16(the)h
+18(co)h
+1(de.)h
+29(If)h
+17(that)h
+17(bug)h
+17(o)h
+1(ccurred,)h
+19(wh)h
+-1(y)h
+17(not)h
+17(another?)h
+28(In)h
+18(resp)h
+1(onse)h
+19(to)h
+17(this)h
+177 1495(realization,)s
+12(m)h
+-1(y)h
+11(reaction)h
+13(is)h
+13(not)h
+13(to)h
+13(en)h
+-1(ter)h
+14(the)h
+13(debugger,)h
+13(but)h
+14(rather)h
+13(to)h
+13(return)h
+14(to)h
+13(the)h
+13(original)h
+11(co)h
+1(de)h
+14(and)h
+177 1545(tend)s
+18(it)h
+16(lik)h
+-1(e)h
+17(a)h
+16(garden,)h
+18(adding)h
+16(more)h
+16(comm)h
+-1(en)h
+-1(ts,)h
+16(rew)h
+-1(orking)h
+17(the)h
+18(grott)h
+-1(y)h
+16(bits,)h
+18(adding)h
+16(assertions,)h
+18(and)h
+177 1595(lo)s
+1(oking)h
+15(for)h
+16(faults.)h
+26(In)h
+16(man)h
+-1(y)h
+15(cases,)h
+18(the)h
+17(searc)h
+-1(h)h
+18(for)h
+16(faults)h
+16(do)h
+1(es)h
+17(not)h
+16(ev)h
+-1(en)h
+17(cen)h
+-1(tre)h
+19(on)h
+16(the)h
+17(sp)h
+1(eci\014c)h
+18(bug)h
+177 1645(that)s
+14(arose,)h
+14(but)h
+14(do)h
+1(es)h
+15(tend)h
+14(to)h
+14(fo)h
+1(cus)h
+14(on)h
+14(the)h
+15(area)h
+14(of)h
+13(co)h
+1(de)h
+15(where)h
+15(the)h
+14(bug)h
+14(is)h
+14(lik)h
+-1(ely)h
+12(to)h
+14(b)h
+1(e.)h
+177 1729(The)s
+15(result)h
+15(is)h
+14(often)h
+14(that)h
+15(the)h
+15(original)h
+12(bug)h
+14(is)h
+15(lo)h
+1(cated)h
+14(more)h
+13(quic)h
+-1(kly)h
+14(than)h
+14(it)h
+14(w)h
+-1(ould)h
+13(ha)h
+-1(v)h
+-1(e)h
+15(b)h
+1(een)h
+15(had)h
+14(the)h
+177 1779(debugger)s
+16(b)h
+1(een)h
+17(in)h
+-1(v)h
+-1(olv)h
+-1(ed.)h
+21(But)h
+16(ev)h
+-1(en)h
+15(if)h
+15(it)h
+15(isn't,)h
+15(there)h
+16(are)h
+16(other)h
+16(b)h
+1(ene\014ts.)h
+24(A)h
+15(programm)h
+-1(er)h
+14(who)h
+15(en)h
+-1(ters)h
+177 1829(the)s
+15(debugger)h
+14(ma)h
+-1(y)h
+12(sta)h
+-1(y)h
+14(there)h
+16(for)h
+13(hours)h
+14(and)h
+14(still)h
+13(not)h
+14(\014nd)h
+14(the)h
+15(bug.)h
+18(The)h
+14(result)h
+15(is)h
+13(frustration)h
+14(and)h
+14(no)h
+177 1879(p)s
+1(ositiv)h
+-1(e)h
+10(gain)h
+10(at)h
+10(all.)h
+15(In)h
+11(con)h
+-1(trast,)h
+11(b)h
+-1(y)h
+10(tending)h
+10(to)h
+10(the)h
+11(co)h
+1(de,)h
+12(the)h
+11(programm)h
+-1(er)h
+9(is)h
+10(making)h
+8(forw)h
+-1(ard)h
+10(progress)h
+177 1929(at)s
+15(all)h
+14(times)h
+15(\(the)h
+16(co)h
+1(de)h
+16(is)h
+15(constan)h
+-1(tly)h
+15(impro)h
+-1(ving\))h
+13(ev)h
+-1(en)h
+16(if)h
+15(the)h
+16(bug)h
+15(is)h
+15(not)h
+15(imm)h
+-1(ediately)h
+13(found.)h
+22(A)h
+-1(t)h
+15(the)h
+177 1979(end)s
+17(of)h
+15(ten)h
+17(hours,)h
+17(the)h
+17(programm)h
+-1(er)h
+15(can)h
+16(at)h
+16(least)h
+16(feel)h
+17(that)h
+16(the)h
+17(co)h
+1(de)h
+17(is)h
+16(\\ten)h
+16(hours)h
+17(b)h
+1(etter",)h
+17(whereas)h
+177 2028(the)s
+15(debugger)h
+16(freak)h
+14(will)h
+13(lik)h
+-1(ely)h
+13(feel)h
+15(defeated.)h
+21(All)h
+13(this)h
+15(mak)h
+-1(es)h
+13(co)h
+1(de)h
+15(tending)h
+15(b)h
+1(etter)h
+16(psyc)h
+-1(hologically)h
+13(as)h
+177 2078(w)s
+-1(ell)h
+13(as)h
+14(a)h
+14(more)h
+13(e\016cien)h
+-1(t)h
+14(approac)h
+-1(h)h
+14(to)h
+14(debugging.)h
+177 2163(I)s
+19(call)h
+18(this)h
+19(tec)h
+-1(hnique)h
+19(wholistic)h
+18(debugging,)h
+19(for)h
+18(it)h
+19(is)h
+18(lik)h
+-1(e)h
+18(the)h
+20(di\013erence)h
+20(b)h
+1(et)h
+-1(w)h
+-1(een)h
+20(con)h
+-1(v)h
+-1(en)h
+-1(tional)h
+18(and)h
+177 2213(wholistic)s
+15(medicine.)h
+20(Go)h
+15(to)h
+15(a)h
+14(con)h
+-1(v)h
+-1(en)h
+-1(tional)h
+14(do)h
+1(ctor)h
+16(with)h
+15(a)h
+14(headac)h
+-1(he)h
+16(and)h
+15(he)h
+16(migh)h
+-1(t)h
+13(send)h
+16(o\013)h
+15(for)h
+14(head)h
+177 2262(X-ra)s
+-1(ys,)h
+20(p)h
+1(erform)h
+18(allergy)h
+18(tests)h
+20(and)h
+19(p)h
+1(erform)h
+18(man)h
+-1(y)h
+17(other)h
+19(debugging)h
+18(activities.)h
+33(Go)h
+18(to)h
+19(a)h
+18(wholistic)h
+177 2312(do)s
+1(ctor)h
+16(with)h
+15(the)h
+15(same)h
+14(problem)h
+14(and)h
+15(he)h
+16(mig)h
+-1(h)h
+-1(t)h
+14(lo)h
+1(ok)h
+14(to)h
+15(see)h
+16(if)h
+14(y)h
+-1(ou)h
+15(are)h
+15(\014t,)h
+15(assess)h
+17(y)h
+-1(our)h
+15(men)h
+-1(tal)h
+13(health,)h
+177 2362(and)s
+15(ask)h
+16(y)h
+-1(ou)h
+15(if)h
+14(y)h
+-1(our)h
+16(marriag)h
+-1(e)h
+14(is)h
+16(w)h
+-1(orking.)h
+21(Both)h
+16(approac)h
+-1(hes)h
+16(are)h
+16(appropriate)h
+15(at)h
+16(di\013eren)h
+-1(t)h
+16(times.)h
+22(In)h
+177 2412(programm)s
+-1(ing,)h
+11(the)h
+14(wholistic)h
+14(approac)h
+-1(h)h
+13(is)h
+14(not)h
+14(used)h
+15(enough.)h
+177 2735(Despite)s
+16(\(or)h
+16(p)h
+1(erhaps)h
+16(b)h
+1(ecause)h
+18(of)h
+3(\))h
+15(its)h
+15(\015exibilit)h
+-1(y)h
+14(and)h
+15(simplicit)h
+-1(y)h
+-3(,)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+15(can)h
+15(b)h
+1(e)h
+17(applied)h
+14(to)h
+16(quite)h
+177 2785(a)s
+15(n)h
+-1(um)h
+-1(b)h
+1(er)h
+14(of)h
+15(di\013eren)h
+-1(t)h
+16(text)h
+16(pro)h
+1(cessing)h
+16(and)h
+15(do)h
+1(cumen)h
+-1(ting)h
+14(problems.)h
+21(This)h
+15(section)h
+16(describ)h
+1(es)h
+17(some)h
+14(of)h
+177 2835(the)s
+15(more)h
+13(in)h
+-1(teresting)h
+14(real)h
+14(problems)h
+13(that)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(has)h
+14(solv)h
+-1(ed.)h
+1042 2940(53)s
+54 @eop
+55 @bop0
+cmsy10.300 sf
+[<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E0>
+16 16 -2 17 21] 15 dc
+cmti10.300 sf
+[<01FFFE00003C0780003801C0003801C0003800E0003800E0007000F000700070007000
+70007000F000E000F000E000F000E000F000E000F001C001E001C001E001C001E001C001
+C0038003C003800380038007800380070007000E0007001C0007003800070070000E01C0
+00FFFF0000>
+32 28 -3 27 31] 68 dc
+55 @bop1
+cmsy10.300 sf
+239 1019(\017)s
+239 1150(\017)s
+cmti10.300 sf
+829 191(MacDr)s
+-2(aw)h
+cmbx12.300 sf
+177 42(2.13.1)s
+55(Analyzing)h
+19(the)h
+18(Monster)h
+18(P)h
+-2(ostscript)h
+19(Header)h
+18(File)h
+cmtt10.300 sf
+1696 191(insert)s
+1159 1200(begin)s
+97(end)h
+592 1531(@)s
+451(@@)h
+177 1888(@O@<LaserHead)s
+-1(er.ps)h
+-1(@>==@)h
+-1({@-)h
+177 1938(Unreadable)s
+20(Postscript)h
+20(code)h
+177 1988(@<Print)s
+21(routine@>)h
+177 2038(Unreadable)s
+20(Postscript)h
+20(code)h
+177 2087(@<Zap)s
+21(routine@>)h
+177 2137(Unreadable)s
+20(Postscript)h
+20(code)h
+177 2187(@})s
+177 2287(@A)s
+22(This)h
+21(routine)h
+20(looks)h
+21(as)h
+21(if)h
+21(it)h
+22(does)h
+21(this,)h
+20(but)h
+22(really)h
+20(is)h
+22(does)h
+21(that,)h
+177 2337(blah,)s
+21(blah)h
+21(blah.)h
+177 2436(@$@<Print)s
+20(routine@>==@{)h
+-1(@-)h
+177 2486(/print)s
+21({)h
+21(push)h
+21(pop)h
+21(pop)h
+22(push)h
+21(turn)h
+21(around)h
+20(and)h
+21(jump)h
+21(up)h
+22(and)h
+21(down)h
+21(and)h
+21(print)h
+21(it})h
+21(def)h
+177 2536(@})s
+177 2635(@A)s
+22(This)h
+21(routine)h
+20(zaps)h
+21(the...)h
+177 2735(@$@<Zap)s
+21(routine@>=)h
+-1(=@{@-)h
+177 2785(/zap)s
+21({)h
+22(push)h
+21(pop)h
+21(pop)h
+21(push)h
+21(turn)h
+21(around)h
+21(and)h
+21(jump)h
+21(up)h
+21(and)h
+21(down)h
+21(and)h
+21(print)h
+21(it})h
+21(def)h
+177 2835(@})s
+cmr10.300 sf
+177 141(During)s
+14(m)h
+-1(y)h
+12(Ph.D.)h
+13(candidature,)h
+14(I)h
+14(determined)h
+14(at)h
+14(one)h
+14(p)h
+1(oin)h
+-1(t)h
+14(that)h
+14(it)h
+14(w)h
+-1(ould)h
+13(b)h
+1(e)h
+15(v)h
+-1(ery)h
+14(desirable)h
+14(to)h
+14(auto-)h
+177 191(maticall)s
+-1(y)h
+14(insert)h
+16(diagrams)h
+13(from)h
+14(the)h
+205(program)h
+14(on)h
+15(m)h
+-1(y)h
+14(Macin)h
+-1(tosh)h
+15(in)h
+-1(to)h
+15(T)h
+1627 200(E)s
+1650 191(X)s
+147(ions)h
+14(in)h
+177 240(m)s
+-1(y)h
+12(thesis.)h
+20(This)h
+14(w)h
+-1(ould)h
+13(allo)h
+-1(w)h
+12(diagrams)h
+12(to)h
+14(\015oat)h
+13(around)h
+14(with)h
+14(the)h
+15(text)h
+14(and)h
+14(b)h
+1(e)h
+15(prin)h
+-1(ted)h
+14(automatical)h
+-1(ly)h
+177 290(rather)s
+18(than)h
+17(ha)h
+-1(ving)h
+17(to)h
+17(b)h
+1(e)h
+17(prin)h
+-1(ted)h
+18(separately)h
+18(and)h
+17(stuc)h
+-1(k)h
+18(in)h
+17(with)h
+17(real)h
+17(glue.)h
+27(On)h
+18(the)h
+18(face)h
+17(of)h
+17(it,)h
+17(the)h
+177 340(problem)s
+13(seemed)h
+15(inheren)h
+-1(tly)h
+15(solv)h
+-2(able)h
+13(as)h
+15(the)h
+15(Macin)h
+-1(tosh)h
+15(could)h
+14(generate)h
+16(P)h
+-1(ostScript)h
+15(for)h
+14(eac)h
+-1(h)h
+15(diagram)h
+177 390(and)s
+14(this)h
+14(P)h
+-1(ostScript)h
+15(could)h
+13(presumably)h
+13(b)h
+1(e)h
+15(inserted)h
+15(in)h
+-1(to)h
+13(the)h
+14(P)h
+-1(ostScript)h
+15(generated)h
+15(using)h
+14(T)h
+1768 399(E)s
+1791 390(X.)s
+177 462(The)s
+19(only)h
+17(trouble)h
+18(w)h
+-1(as)h
+18(that)h
+18(the)h
+19(Macin)h
+-1(tosh)h
+18(P)h
+-1(ostScript)h
+19(co)h
+1(de)h
+19(for)h
+18(the)h
+18(diagrams)h
+17(relied)h
+18(on)h
+18(an)h
+18(Apple)h
+177 512(P)s
+-1(ostScript)h
+15(header)h
+14(\014le.)h
+18(This)h
+14(mean)h
+-1(t)h
+13(that)h
+13(the)h
+15(header)h
+15(\014le)h
+13(had)h
+14(to)h
+13(b)h
+1(e)h
+15(included)h
+14(at)h
+13(the)h
+15(start)h
+14(of)h
+13(the)h
+15(T)h
+1895 521(E)s
+1918 512(X)s
+177 562(P)s
+-1(ostScript)h
+12(if)h
+9(the)h
+12(inserted)h
+12(P)h
+-1(ostScript)h
+11(for)h
+10(the)h
+11(diagrams)h
+9(w)h
+-1(as)h
+11(to)h
+10(w)h
+-1(ork.)h
+17(Unfortunately)h
+-3(,)h
+10(merely)h
+10(including)h
+177 612(the)s
+17(header)h
+17(\014le)h
+16(at)h
+16(the)h
+16(top)h
+16(didn't)h
+15(w)h
+-1(ork,)h
+16(and)h
+16(it)h
+16(turned)h
+17(out)h
+15(that)h
+17(a)h
+15(rather)h
+17(detailed)h
+16(analysis)h
+15(of)h
+16(some)h
+177 662(parts)s
+13(of)h
+11(the)h
+12(Apple)h
+12(header)h
+13(\014le)h
+12(w)h
+-1(as)h
+12(required)h
+13(in)h
+11(order)h
+13(to)h
+11(p)h
+1(erform)h
+11(the)h
+13(necessary)h
+14(surgery)h
+13(on)h
+11(the)h
+13(header)h
+177 712(\014le)s
+14(to)h
+13(mak)h
+-1(e)h
+12(it)h
+13(w)h
+-1(ork.)h
+18(This)h
+13(analysis)h
+13(w)h
+-1(as)h
+13(sev)h
+-1(erely)h
+15(aggra)h
+-1(v)h
+-2(ated)h
+13(b)h
+-1(y)h
+13(the)h
+14(fact)h
+14(that)h
+13(the)h
+14(P)h
+-1(ostScript)h
+15(header)h
+177 761(\014le)s
+14(w)h
+-1(as)h
+14(virtually)h
+12(unreadable.)h
+18(Basically)h
+13(it)h
+14(w)h
+-1(as)h
+13(ab)h
+1(out)h
+14(50K)h
+14(of)h
+13(in)h
+-1(terw)h
+-1(o)h
+-1(v)h
+-1(en)h
+13(de\014nitions,)h
+14(that)h
+14(lo)h
+1(ok)h
+-1(ed)h
+13(as)h
+177 811(if)s
+12(it)h
+12(had)h
+12(b)h
+1(een)h
+14(run)h
+13(through)h
+12(a)h
+12(w)h
+-1(ord)h
+13(pro)h
+1(cessor.)h
+19(There)h
+14(w)h
+-1(as)h
+12(no)h
+12(w)h
+-1(a)h
+-1(y)h
+12(that)h
+13(the)h
+13(co)h
+1(de)h
+13(could)h
+12(b)h
+1(e)h
+14(understo)h
+1(o)h
+1(d)h
+177 861(clearly)s
+14(without)h
+13(some)h
+13(kind)h
+13(of)h
+14(reformatting.)h
+16(Tw)h
+-1(o)h
+13(other)h
+15(asp)h
+1(ects)h
+15(of)h
+13(the)h
+15(problem)h
+12(further)h
+15(complicated)h
+177 911(the)s
+15(analysis:)h
+281 1019(The)s
+12(de\014nitions)h
+13(of)h
+11(in)h
+-1(terest)h
+13(\(i.e.)h
+12(the)h
+12(ones)h
+13(causing)h
+12(the)h
+13(problems\))h
+11(w)h
+-1(ere)h
+13(scattered)h
+14(throughout)h
+12(the)h
+281 1069(\014le.)s
+281 1150(Man)s
+-1(y)h
+17(de\014nitions)h
+18(could)h
+18(not)h
+18(b)h
+1(e)h
+19(mo)h
+-1(v)h
+-1(ed.)h
+28(F)h
+-3(or)h
+18(one)h
+18(or)h
+18(more)h
+17(reasons)h
+19(\(e.g.)h
+17(to)h
+18(k)h
+-1(eep)h
+19(a)h
+17(de\014nition)h
+281 1200(within)s
+15(the)h
+16(activ)h
+-2(ation)h
+15(of)h
+15(a)h
+16(particular)h
+15(dictionary)h
+140(and)h
+82(\))h
+15(it)h
+16(w)h
+-1(ould)h
+15(ha)h
+-1(v)h
+-1(e)h
+16(b)h
+1(een)h
+17(un)h
+-1(wise)h
+281 1250(to)s
+14(mo)h
+-1(v)h
+-1(e)h
+12(the)h
+14(de\014nitions)h
+14(of)h
+14(in)h
+-1(terest)h
+15(to)h
+13(the)h
+15(same)h
+13(p)h
+1(oin)h
+-1(t)h
+13(in)h
+14(the)h
+14(\014le.)h
+177 1358(In)s
+13(fact)h
+13(the)h
+14(\014le)h
+13(w)h
+-1(as)h
+13(so)h
+13(messy)h
+13(and)h
+13(complicated)h
+12(that,)h
+12(as)h
+14(a)h
+12(rule,)h
+13(it)h
+13(had)h
+13(to)h
+13(b)h
+1(e)h
+14(handled)h
+13(with)h
+12(kid)h
+13(glo)h
+-1(v)h
+-1(es.)h
+177 1408(It)s
+14(w)h
+-1(ould)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(b)h
+1(een)h
+15(un)h
+-1(wise)h
+14(to)h
+14(re-arrange)h
+14(the)h
+15(de\014nitions)h
+14(or)h
+14(to)h
+13(insert)h
+15(comm)h
+-1(en)h
+-1(ts.)h
+177 1481(T)s
+-3(o)h
+18(m)h
+-1(y)h
+17(surprise,)h
+21(F)h
+-3(unnelW)h
+-3(eb)h
+18(pro)h
+-1(vided)h
+18(an)h
+19(unexp)h
+1(ected)h
+21(solution)h
+17(to)h
+19(the)h
+19(problem.)h
+31(First)h
+19(I)h
+19(replaced)h
+177 1531(all)s
+17(o)h
+1(ccurrences)h
+20(of)h
+17(the)h
+58(in)h
+17(the)h
+18(header)h
+19(\014le)h
+18(with)h
+61(.)h
+29(Second,)h
+19(I)h
+17(placed)h
+18(the)h
+18(en)h
+-1(tire)h
+19(header)h
+18(\014le)h
+18(in)h
+17(a)h
+177 1580(F)s
+-3(unnelW)h
+-3(eb)h
+14(macro)h
+13(de\014nition)h
+14(connected)h
+17(to)h
+14(a)h
+14(pro)h
+1(duct)h
+15(\014le.)h
+20(I)h
+14(then)h
+16(pro)h
+1(cessed)h
+16(the)h
+15(\014le)h
+15(and)h
+14(c)h
+-1(hec)h
+-1(k)h
+-1(ed)h
+16(to)h
+177 1630(mak)s
+-1(e)h
+15(sure)h
+17(that)h
+17(the)h
+16(pro)h
+1(duct)h
+18(\014le)h
+16(w)h
+-1(as)h
+16(iden)h
+-1(tical)h
+16(to)h
+16(the)h
+17(original)h
+14(\014le.)h
+25(By)h
+17(doing)h
+15(all)h
+15(this)h
+16(I)h
+16(had)h
+17(placed)h
+177 1680(the)s
+16(header)h
+16(\014le)h
+16(under)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+14(con)h
+-1(trol.)h
+22(I)h
+16(then)h
+15(left)h
+15(the)h
+16(macro)h
+14(de\014nition)h
+15(largely)h
+15(un)h
+-1(touc)h
+-1(hed,)h
+16(but)h
+177 1730(replaced)s
+21(the)h
+20(P)h
+-1(ostScript)h
+20(de\014nitions)h
+19(of)h
+19(in)h
+-1(terest)h
+21(with)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+19(macro)h
+18(calls,)h
+20(mo)h
+-1(ving)h
+17(the)h
+20(actual)h
+177 1780(P)s
+-1(ostScript)h
+15(de\014nitions)h
+14(in)h
+-1(to)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(macro)h
+13(de\014nitions)h
+14(at)h
+14(the)h
+14(end)h
+14(of)h
+14(the)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(\014le.)h
+1042 2940(54)s
+55 @eop
+56 @bop0
+cmbx12.300 sf
+[<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
+001F0000001F0000001F0000001F0000001F00FF801F00FF801F0038001F0060001F01C0
+001F0380001F0700001F0E00001F1C00001F7E00001FFF00001FCF00001F0F80001F07C0
+001F03E0001F01E0001F01F0001F00F8001F007C001F003C00FFE0FFC0FFE0FFC0>
+32 35 -2 34 30] 107 dc
+56 @bop1
+cmbx10.300 sf
+714 390(Z)s
+927 1113(pac)s
+-1(k)h
+-3(age)h
+1358 1462([DOD83])s
+cmbx12.300 sf
+177 960(2.13.2)s
+55(Making)h
+19(Ada)h
+19(ADTs)h
+19(more)h
+17(A)h
+177 2031(2.13.3)s
+55(Multiple)h
+18(Language)h
+18(Systems)h
+cmr10.300 sf
+177 42(Use)s
+19(of)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+18(mean)h
+-1(t)h
+17(that)h
+18(I)h
+18(w)h
+-1(as)h
+19(able)h
+18(to)h
+18(pluc)h
+-1(k)h
+18(out)h
+18(the)h
+19(de\014nitions)h
+18(of)h
+18(in)h
+-1(terest)h
+19(\(a)h
+18(v)h
+-1(ery)h
+19(small)h
+177 91(part)s
+19(of)h
+17(the)h
+19(whole)h
+19(\014le\))h
+18(and)h
+18(collect)h
+19(them)h
+18(as)h
+18(a)h
+18(group)h
+18(at)h
+19(the)h
+19(end)h
+18(of)h
+18(the)h
+19(\014le)h
+19(where)h
+19(they)h
+19(could)h
+18(b)h
+1(e)h
+177 141(studied.)s
+18(Because)h
+13(eac)h
+-1(h)h
+12(de\014nition)h
+10(w)h
+-1(as)h
+12(safely)h
+10(con)h
+-1(tained)h
+12(in)h
+10(a)h
+11(macro,)h
+10(it)h
+11(w)h
+-1(as)h
+11(p)h
+1(ossible)h
+11(to)h
+11(write)h
+12(a)h
+11(detailed)h
+177 191(commen)s
+-1(tary)h
+13(of)h
+15(eac)h
+-1(h)h
+15(routine)h
+16(without)h
+14(fear)h
+16(of)h
+14(a\013ecting)h
+16(the)h
+15(\014nal)h
+15(P)h
+-1(ostScript)h
+16(co)h
+1(de)h
+16(in)h
+14(an)h
+-1(y)h
+15(w)h
+-1(a)h
+-1(y)h
+14(at)h
+15(all.)h
+177 241(Once)s
+16(this)h
+15(analysis)h
+13(w)h
+-1(as)h
+15(completed,)h
+14(it)h
+14(w)h
+-1(as)h
+14(p)h
+1(ossible)h
+15(to)h
+15(p)h
+1(erform)h
+13(surgery)h
+16(on)h
+14(the)h
+16(o\013ending)h
+14(P)h
+-1(ostScript)h
+177 291(de\014nitions)s
+18(in)h
+17(an)h
+18(extremely)h
+17(con)h
+-1(trolled)h
+18(w)h
+-1(a)h
+-1(y)h
+-3(.)h
+28(In)h
+18(particular,)h
+18(the)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+17(input)h
+17(\014le)h
+18(serv)h
+-1(ed)h
+19(as)h
+18(a)h
+177 340(rep)s
+1(ository)h
+17(for)h
+17(all)h
+15(the)h
+17(di\013eren)h
+-1(t)h
+18(v)h
+-1(ersions)h
+17(of)h
+16(particular)h
+16(routines)h
+17(that)h
+17(w)h
+-1(ere)h
+17(tried)h
+17(in)h
+17(order)h
+17(to)h
+16(get)h
+17(the)h
+177 390(de\014nitions)s
+17(to)h
+17(w)h
+-1(ork.)h
+27(A)h
+17(new)h
+17(\()h
+29(ero\))h
+18(macro)h
+15(w)h
+-1(as)h
+17(created)h
+19(for)h
+16(eac)h
+-1(h)h
+18(v)h
+-1(ersion)h
+17(of)h
+16(eac)h
+-1(h)h
+18(de\014nition,)h
+16(and)h
+17(a)h
+177 440(commen)s
+-1(tary)h
+12(of)h
+13(ho)h
+-1(w)h
+14(it)h
+13(p)h
+1(erformed)h
+14(added)h
+14(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+13(it.)h
+177 516(This)s
+11(case)h
+11(demonstrates)h
+12(that)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+10(is)h
+11(an)h
+11(extremely)h
+10(p)h
+1(o)h
+-1(w)h
+-1(erful)h
+10(to)h
+1(ol)h
+10(for)h
+10(dissecting)h
+12(and)h
+10(do)h
+1(cumen)h
+-1(t-)h
+177 566(ing)s
+15(cryptic)h
+16(text)h
+16(\014les.)h
+22(Through)h
+16(the)h
+16(use)h
+16(of)h
+14(macros,)h
+15(particular)h
+15(parts)h
+16(of)h
+14(the)h
+16(\014le)h
+16(can)h
+15(b)h
+1(e)h
+16(isolated)h
+15(and)h
+177 616(discussed)s
+17(without)h
+15(a\013ecting)h
+15(the)h
+16(\014nal)h
+15(pro)h
+1(duct)h
+16(\014le)h
+15(in)h
+15(an)h
+-1(y)h
+14(w)h
+-1(a)h
+-1(y)h
+-3(.)h
+21(In)h
+15(the)h
+16(example)h
+14(ab)h
+1(o)h
+-1(v)h
+-1(e,)h
+15(only)h
+14(a)h
+15(small)h
+177 665(part)s
+12(of)h
+11(the)h
+13(\014le)h
+11(w)h
+-1(as)h
+12(analysed,)h
+11(the)h
+13(rest)h
+13(b)h
+1(eing)h
+11(left)h
+12(as)h
+12(a)h
+11(blob,)h
+11(but)h
+12(in)h
+12(the)h
+12(general)h
+12(case,)h
+13(a)h
+11(cryptic)h
+12(text)h
+13(\014le)h
+177 715(could)s
+15(b)h
+1(e)h
+15(inserted)h
+16(in)h
+-1(to)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(and)h
+15(then)h
+15(incremen)h
+-1(tally)h
+13(dissected)h
+17(\(and)h
+15(p)h
+1(ossibly)h
+14(mo)h
+1(di\014ed\))h
+14(un)h
+-1(til)h
+177 765(the)s
+18(result)h
+18(is)h
+18(a)h
+17(fully)h
+16(do)h
+1(cumen)h
+-1(ted)h
+17(literate)h
+18(program.)h
+27(That)h
+17(this)h
+17(can)h
+18(b)h
+1(e)h
+18(done)h
+17(without)h
+17(a\013ecting)h
+18(the)h
+177 815(actual)s
+14(pro)h
+1(duct)h
+14(\014le)h
+14(demonstrates)h
+15(the)h
+14(high)h
+13(degree)h
+16(of)h
+13(descriptiv)h
+-1(e)h
+15(con)h
+-1(trol)h
+13(that)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(pro)h
+-1(vides.)h
+177 1063(Lik)s
+-1(e)h
+13(man)h
+-1(y)h
+12(mo)h
+1(dern)h
+12(programm)h
+-1(ing)h
+11(languages,)h
+13(Ada)h
+13(pro)h
+-1(vides)h
+14(mec)h
+-1(hanism)h
+-1(s)h
+12(for)h
+13(hiding)h
+12(information)h
+11(and)h
+177 1113(structure.)s
+25(In)h
+16(particular,)h
+15(Ada)h
+15(pro)h
+-1(vides)h
+16(a)h
+192(facilit)h
+-1(y)h
+13(that)h
+16(allo)h
+-1(ws)h
+14(the)h
+16(programm)h
+-1(er)h
+15(to)h
+15(declare)h
+177 1163(ob)s
+2(jects)h
+15(in)h
+13(a)h
+13(pac)h
+-1(k)h
+-2(age)h
+14(de\014nition)h
+13(and)h
+13(de\014ne)h
+15(them)h
+13(in)h
+13(a)h
+13(corresp)h
+1(onding)h
+15(pac)h
+-1(k)h
+-2(age)h
+13(b)h
+1(o)h
+1(dy)h
+-3(.)h
+17(This)h
+14(w)h
+-1(orks)h
+13(w)h
+-1(ell)h
+177 1213(for)s
+14(functions)h
+14(and)h
+14(pro)h
+1(cedures.)h
+20(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(in)h
+14(the)h
+14(case)h
+15(of)h
+14(t)h
+-1(yp)h
+1(es,)h
+14(implem)h
+-1(en)h
+-1(tation)h
+12(issues)h
+15(\(in)h
+13(particular,)h
+177 1262(the)s
+14(need)h
+15(to)h
+13(kno)h
+-1(w)h
+13(the)h
+14(size)h
+15(of)h
+13(exp)h
+1(orted)h
+14(t)h
+-1(yp)h
+1(es\))h
+15(ha)h
+-1(v)h
+-1(e)h
+13(led)h
+14(the)h
+14(designers)h
+15(of)h
+12(Ada)h
+14(to)h
+13(force)h
+14(the)h
+14(placemen)h
+-1(t)h
+177 1312(of)s
+13(priv)h
+-2(ate)h
+13(t)h
+-1(yp)h
+1(e)h
+13(de\014nitions)h
+13(in)h
+13(the)h
+14(de\014nition)h
+12(pac)h
+-1(k)h
+-2(age)h
+13(rather)h
+14(than)h
+13(the)h
+14(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+11(pac)h
+-1(k)h
+-2(age.)h
+18(This)h
+177 1362(means)s
+12(that)h
+13(some)h
+13(impl)h
+-1(em)h
+-1(en)h
+-1(tation)h
+11(details)h
+13(are)h
+13(presen)h
+-1(t)h
+15(in)h
+12(the)h
+14(pac)h
+-1(k)h
+-2(age)h
+13(de\014nition)h
+12(for)h
+13(all)h
+12(to)h
+13(see.)h
+19(While)h
+177 1412(not)s
+21(actually)h
+19(dangerous)h
+21(\(the)h
+22(user)h
+22(of)h
+19(the)h
+22(pac)h
+-1(k)h
+-2(age)h
+20(cannot)h
+21(mak)h
+-1(e)h
+19(use)h
+21(of)h
+20(the)h
+21(information)h
+18(without)h
+177 1462(recourse)s
+15(to)h
+12(\\Chapter)h
+13(13")h
+12(of)h
+12(the)h
+14(Ada)h
+12(Language)h
+12(Reference)h
+15(Man)h
+-1(ual)h
+184(\),)h
+11(this)h
+12(asp)h
+1(ect)h
+14(of)h
+12(Ada)h
+13(is)h
+177 1512(certainly)s
+14(unpleasan)h
+-1(t.)h
+177 1588(During)s
+9(the)h
+11(dev)h
+-1(elopmen)h
+-1(t)h
+9(of)h
+10(some)h
+9(Ada)h
+10(programs,)h
+9(F)h
+-3(unnelW)h
+-3(eb)h
+9(w)h
+-1(as)h
+10(used)h
+11(to)h
+10(solv)h
+-1(e)h
+10(this)h
+10(problem.)h
+15(Instead)h
+177 1637(of)s
+18(creating)h
+20(a)h
+18(separate)h
+20(\014le)h
+19(for)h
+19(the)h
+19(pac)h
+-1(k)h
+-2(age)h
+19(sp)h
+1(eci\014cation)h
+20(and)h
+18(pac)h
+-1(k)h
+-2(age)h
+19(b)h
+1(o)h
+1(dy)h
+-3(,)h
+19(a)h
+19(single)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+177 1687(\014le)s
+19(w)h
+-1(as)h
+18(created)h
+20(con)h
+-1(taining)h
+17(t)h
+-1(w)h
+-1(o)h
+18(sections,)h
+20(one)h
+19(for)h
+18(the)h
+19(eac)h
+-1(h)h
+19(pac)h
+-1(k)h
+-2(age)h
+18(part.)h
+31(The)h
+19(\\priv)h
+-2(ate")h
+18(part)h
+18(of)h
+177 1737(the)s
+19(pac)h
+-1(k)h
+-2(age)h
+18(sp)h
+1(eci\014cation)h
+19(w)h
+-1(as)h
+18(then)h
+18(mo)h
+-1(v)h
+-1(ed)h
+17(\(using)h
+18(a)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(macro)h
+17(de\014nition\))h
+18(to)h
+18(the)h
+19(section)h
+177 1787(describing)s
+18(the)h
+19(pac)h
+-1(k)h
+-2(age)h
+17(b)h
+1(o)h
+1(dy)h
+-3(.)h
+29(Readers)h
+18(who)h
+18(wished)h
+18(only)h
+16(to)h
+18(read)h
+18(the)h
+18(pac)h
+-1(k)h
+-2(age)h
+18(sp)h
+1(eci\014cation)h
+18(could)h
+177 1837(read)s
+13(only)h
+11(the)h
+13(\014rst)h
+13(part,)h
+12(whic)h
+-1(h)h
+12(con)h
+-1(tained)h
+12(a)h
+12(fully)h
+10(do)h
+1(cumen)h
+-1(ted)h
+13(description)h
+12(not)h
+12(con)h
+-1(taining)h
+11(the)h
+13(priv)h
+-2(ate)h
+177 1886(de\014nition.)s
+177 2135(With)s
+10(the)h
+11(prev)h
+-2(alence)h
+12(of)h
+10(op)h
+1(en)h
+11(systems)h
+11(and)h
+10(m)h
+-1(ulti-v)h
+-2(endor)h
+10(computing,)h
+9(it)h
+10(is)h
+10(often)h
+11(necessary)h
+13(to)h
+10(construct)h
+177 2185(systems)s
+20(consisting)h
+20(of)h
+19(programs)h
+18(written)h
+20(in)h
+20(a)h
+19(n)h
+-1(um)h
+-1(b)h
+1(er)h
+19(of)h
+19(di\013eren)h
+-1(t)h
+21(programm)h
+-1(i)h
+-1(ng)h
+18(languages)h
+19(for)h
+19(a)h
+177 2234(n)s
+-1(um)h
+-1(b)h
+1(er)h
+15(of)h
+14(di\013eren)h
+-1(t)h
+17(systems.)h
+22(F)h
+-3(or)h
+15(example,)h
+14(a)h
+15(particular)h
+15(functionalit)h
+-1(y)h
+14(migh)h
+-1(t)h
+13(b)h
+1(e)h
+16(implem)h
+-1(en)h
+-1(ted)h
+14(b)h
+-1(y)h
+15(a)h
+177 2284(shellscript)s
+19(\(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+17(b)h
+-1(y)h
+17(the)h
+18(user\))h
+19(that)h
+18(calls)h
+17(a)h
+18(C)h
+17(program)h
+16(that)h
+18(mak)h
+-1(es)h
+17(a)h
+17(net)h
+-1(w)h
+-1(ork)h
+18(connection)h
+19(to)h
+17(a)h
+177 2334(P)s
+-1(ascal)h
+15(program)h
+14(that)h
+15(queries)h
+16(a)h
+15(database.)h
+23(Quite)h
+15(often)h
+16(all)h
+14(these)h
+16(programs)h
+14(m)h
+-1(ust)h
+15(conspire)h
+16(closely)h
+15(to)h
+177 2384(execute)s
+19(their)h
+17(function.)h
+25(In)h
+17(the)h
+17(normal)h
+14(case,)h
+18(they)h
+17(m)h
+-1(ust)h
+16(b)h
+1(e)h
+17(written)h
+17(separately)h
+-3(.)h
+26(F)h
+-3(unnelW)h
+-3(eb)h
+16(allo)h
+-1(ws)h
+177 2434(them)s
+13(to)h
+14(b)h
+1(e)h
+14(written)h
+15(as)h
+14(a)h
+13(whole.)h
+177 2510(By)s
+19(creating)h
+18(a)h
+18(single)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+18(\014le)h
+18(that)h
+18(creates)h
+20(man)h
+-1(y)h
+16(pro)h
+1(duct)h
+19(\014les)h
+19(in)h
+18(di\013eren)h
+-1(t)h
+19(languages,)h
+18(the)h
+177 2559(programm)s
+-1(er)h
+15(can)h
+16(describ)h
+1(e)h
+18(the)h
+16(in)h
+-1(teraction)h
+16(b)h
+1(et)h
+-1(w)h
+-1(een)h
+18(the)h
+16(di\013eren)h
+-1(t)h
+17(programs)h
+15(in)h
+15(an)h
+-1(y)h
+16(manner)h
+15(desired.)h
+177 2609(F)s
+-3(urthermore,)h
+14(b)h
+1(ecause)h
+16(the)h
+14(di\013eren)h
+-1(t)h
+15(pro)h
+1(duct)h
+15(\014les)h
+15(are)h
+15(all)h
+12(created)h
+16(in)h
+14(the)h
+14(same)h
+14(\\text)h
+14(space")h
+15(\(i.e.)h
+13(in)h
+14(a)h
+177 2659(single)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(\014le\),)h
+14(it)h
+13(is)h
+14(easy)h
+14(for)h
+14(them)h
+13(to)h
+14(share)h
+14(informatio)h
+-1(n.)h
+177 2735(F)s
+-3(or)h
+15(example,)h
+13(in)h
+15(one)h
+15(real)h
+15(application)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+15(w)h
+-1(as)h
+15(used)h
+15(to)h
+15(create)h
+17(a)h
+14(system)h
+15(for)h
+15(prin)h
+-1(ting)h
+14(\014les)h
+15(on)h
+177 2785(a)s
+17(laser)h
+18(prin)h
+-1(ter)h
+18(connected)h
+20(to)h
+17(a)h
+17(remote)h
+17(V)h
+-3(ax)h
+17(Unix)h
+17(mac)h
+-1(hine)h
+17(from)h
+15(a)h
+18(lo)h
+1(cal)h
+16(V)h
+-3(ax)h
+17(VMS)h
+18(mac)h
+-1(hine.)h
+27(The)h
+177 2835(system)s
+18(consisted)h
+19(of)h
+18(t)h
+-1(w)h
+-1(o)h
+18(\014les:)h
+27(a)h
+18(VMS)h
+18(DCL)h
+18(comm)h
+-1(and)h
+16(pro)h
+1(cedure)h
+20(to)h
+18(run)h
+19(on)h
+18(the)h
+18(lo)h
+1(cal)h
+18(no)h
+1(de,)h
+19(and)h
+1042 2940(55)s
+56 @eop
+57 @bop0
+57 @bop1
+cmti10.300 sf
+1616 2672(lo)s
+-2(c)h
+-2(al)h
+cmbx12.300 sf
+177 2248(2.13.4)s
+55(The)h
+19(Case)h
+19(of)h
+19(the)h
+18(Small)h
+17(F)h
+-5(unction)h
+cmtt10.300 sf
+458 464(printfile.)s
+-1(tmp)h
+177 677(@A)s
+22(The)h
+21(following)h
+20(macro)h
+20(contains)h
+21(the)h
+21(temporary)h
+20(file)h
+21(name)h
+21(used)h
+21(to)h
+21(allow)h
+21(the)h
+177 726(two)s
+21(shellscripts)h
+20(to)h
+21(transfer)h
+20(each)h
+21(file)h
+21(to)h
+21(be)h
+22(printed.)h
+177 826(@$@<printfile)s
+-1(@>@M=)h
+-1(=@{pr)h
+-1(intme)h
+-1(.txt@)h
+-1(})h
+177 926(@A)s
+22(Here)h
+21(are)h
+21(the)h
+21(scripts)h
+20(for)h
+21(the)h
+22(local)h
+20(VMS)h
+21(node)h
+21(and)h
+22(the)h
+21(remote)h
+20(UNIX)h
+21(node.)h
+177 1025(@O@<vmscomman)s
+-1(dproc)h
+-1(edure)h
+-1(.com@)h
+-1(>==@{)h
+-1(@-)h
+177 1075(DCL)s
+21(commands)h
+177 1125(copy)s
+21(@<printfile@>)h
+19(unixnode::)h
+177 1175(DCL)s
+21(commands)h
+177 1225(@})s
+177 1324(@O@<unixshell)s
+-1(scrip)h
+-1(t@>==)h
+-1(@{@-)h
+177 1374(unix)s
+21(commands)h
+177 1424(print)s
+21(@<printfile@)h
+-1(>)h
+177 1474(unix)s
+21(commands)h
+177 1523(@})s
+272 1686(.fw)s
+957(.fw)h
+632 2399(a:=3;)s
+177 2835(a=b*3.14159;)s
+19(c=d)h
+22(%)h
+21(256;)h
+21(e=e+1;)h
+cmr10.300 sf
+177 42(a)s
+16(Unix)h
+17(shellscript)h
+17(to)h
+16(run)h
+17(on)h
+17(the)h
+17(remote)h
+16(no)h
+1(de.)h
+27(The)h
+17(user,)h
+18(b)h
+-1(y)h
+16(giving)h
+15(the)h
+17(prin)h
+-1(t)h
+17(comm)h
+-1(and,)h
+15(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+177 91(the)s
+15(lo)h
+1(cal)h
+14(VMS)h
+15(comma)h
+-1(nd)h
+13(pro)h
+1(cedure,)h
+17(whic)h
+-1(h)h
+14(in)h
+14(turn)h
+16(\014red)h
+15(up)h
+15(the)h
+15(remote)h
+15(Unix)h
+14(shellscript.)h
+21(The)h
+15(t)h
+-1(w)h
+-1(o)h
+177 141(scripts)s
+15(then)h
+15(co)h
+1(op)h
+1(erated)h
+15(to)h
+14(transfer)h
+15(the)h
+14(\014les)h
+14(to)h
+14(b)h
+1(e)h
+15(prin)h
+-1(ted)h
+14(and)h
+14(prin)h
+-1(t)h
+13(them.)h
+177 215(In)s
+11(addition)h
+10(to)h
+11(its)h
+11(usual)h
+10(do)h
+1(cumen)h
+-1(tation)h
+10(p)h
+1(o)h
+-1(w)h
+-1(ers,)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+10(assisted)h
+12(in)h
+10(the)h
+12(creation)h
+11(of)h
+11(this)h
+11(system)h
+10(in)h
+177 265(t)s
+-1(w)h
+-1(o)h
+12(sp)h
+1(ecial)h
+12(w)h
+-1(a)h
+-1(ys.)h
+17(First,)h
+13(it)h
+11(allo)h
+-1(w)h
+-1(ed)h
+11(pieces)h
+13(of)h
+12(co)h
+1(de)h
+13(from)h
+10(the)h
+13(t)h
+-1(w)h
+-1(o)h
+11(di\013eren)h
+-1(t)h
+14(comm)h
+-1(and)h
+10(pro)h
+1(cedures)h
+14(to)h
+12(b)h
+1(e)h
+177 315(partially)s
+12(in)h
+-1(terw)h
+-1(o)h
+-1(v)h
+-1(en)h
+13(in)h
+13(a)h
+13(description)h
+14(of)h
+13(their)h
+13(in)h
+-1(teraction.)h
+18(This)h
+13(is)h
+14(just)h
+13(not)h
+13(p)h
+1(ossible)h
+14(with)h
+13(comm)h
+-1(en)h
+-1(ts.)h
+177 364(Second,)s
+19(it)h
+17(facilitated)h
+17(the)h
+18(use)h
+19(of)h
+17(shared)h
+19(inform)h
+-1(ation.)h
+27(F)h
+-3(or)h
+17(example,)h
+17(under)h
+19(some)h
+16(conditions,)h
+18(eac)h
+-1(h)h
+177 414(\014le)s
+15(to)h
+14(b)h
+1(e)h
+15(prin)h
+-1(ted)h
+15(w)h
+-1(ould)h
+14(b)h
+1(e)h
+15(renamed)h
+14(and)h
+15(copied)h
+14(to)h
+15(the)h
+15(remote)h
+14(system)h
+14(using)h
+15(a)h
+14(particular)h
+14(constan)h
+-1(t)h
+177 464(\014lename)s
+15(\(e.g.)h
+15(\\)h
+285("\).)h
+21(F)h
+-3(unnelW)h
+-3(eb)h
+15(allo)h
+-1(w)h
+-1(ed)h
+15(this)h
+15(constan)h
+-1(t)h
+17(\014lename)h
+14(to)h
+16(b)h
+1(e)h
+16(included)h
+16(in)h
+15(a)h
+177 514(single)s
+17(macro)h
+15(de\014nition)h
+17(whic)h
+-1(h)h
+17(w)h
+-1(as)h
+17(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+16(in)h
+16(the)h
+18(de\014nition)h
+16(of)h
+17(eac)h
+-1(h)h
+17(of)h
+16(the)h
+18(scripts.)h
+28(This)h
+17(ensured)h
+177 564(that)s
+14(the)h
+15(t)h
+-1(w)h
+-1(o)h
+13(scripts)h
+15(used)h
+15(the)h
+14(same)h
+13(name.)h
+177 1636(In)s
+13(the)h
+14(case)h
+14(of)h
+12(the)h
+14(prin)h
+-1(ting)h
+12(system,)h
+13(the)h
+14(en)h
+-1(tire)h
+13(system)h
+13(w)h
+-1(as)h
+13(describ)h
+1(ed)h
+15(and)h
+13(de\014ned)h
+14(in)h
+13(a)h
+12(single)h
+13(F)h
+-3(unnel-)h
+177 1686(W)s
+-3(eb)h
+94(\014le.)h
+19(In)h
+15(larger)h
+14(systems)h
+14(con)h
+-1(taining)h
+14(man)h
+-1(y)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+93(\014les)h
+15(for)h
+14(man)h
+-1(y)h
+13(di\013eren)h
+-1(t)h
+15(mo)h
+1(dules)h
+177 1736(in)s
+13(man)h
+-1(y)h
+11(di\013eren)h
+-1(t)h
+13(languages,)h
+13(the)h
+13(same)h
+12(tric)h
+-1(k)h
+13(can)h
+13(b)h
+1(e)h
+14(pulled)h
+12(b)h
+-1(y)h
+13(placing)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(macro)h
+12(de\014nitions)h
+177 1786(for)s
+12(shared)h
+13(v)h
+-2(alues)h
+11(in)h
+-1(to)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(include)h
+12(\014les.)h
+18(F)h
+-3(or)h
+11(example,)h
+11(a)h
+12(suite)h
+12(of)h
+11(implem)h
+-1(en)h
+-1(tations)h
+10(of)h
+12(net)h
+-1(w)h
+-1(ork)h
+177 1836(no)s
+1(des,)h
+18(with)h
+17(eac)h
+-1(h)h
+18(impl)h
+-1(em)h
+-1(en)h
+-1(tation)h
+15(b)h
+1(eing)h
+17(in)h
+17(a)h
+17(di\013eren)h
+-1(t)h
+18(programm)h
+-1(i)h
+-1(ng)h
+15(language)h
+16(for)h
+17(a)h
+17(di\013eren)h
+-1(t)h
+18(tar-)h
+177 1885(get)s
+15(mac)h
+-1(hine,)h
+13(could)h
+15(all)h
+13(share)h
+15(a)h
+15(table)h
+14(of)h
+14(con\014guration)h
+15(constan)h
+-1(ts)h
+15(de\014ned)h
+16(in)h
+14(macros)h
+14(in)h
+14(a)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+177 1935(include)s
+14(\014le.)h
+177 2009(In)s
+15(summa)h
+-1(ry)h
+-3(,)h
+12(F)h
+-3(unnelW)h
+-3(eb's)h
+15(macro)h
+13(and)h
+15(include)h
+15(\014le)h
+14(mec)h
+-1(hanisms)h
+13(pro)h
+-1(vide)h
+15(a)h
+14(simple)h
+14(w)h
+-1(a)h
+-1(y)h
+14(for)h
+14(programs)h
+177 2059(written)s
+13(in)h
+12(di\013eren)h
+-1(t)h
+14(languages)h
+12(to)h
+12(share)h
+13(informatio)h
+-1(n.)h
+16(This)h
+12(reduces)h
+15(redundancy)h
+14(b)h
+1(et)h
+-1(w)h
+-1(een)h
+13(the)h
+14(systems)h
+177 2109(and)s
+14(hence)h
+15(the)h
+15(c)h
+-1(hance)h
+15(of)h
+13(inconsistencies)h
+15(arising.)h
+177 2349(Often,)s
+14(when)h
+13(programm)h
+-1(ing,)h
+11(there)h
+14(is)h
+13(a)h
+13(need)h
+14(for)h
+13(a)h
+13(co)h
+1(de)h
+14(abstraction)h
+14(facilit)h
+-1(y)h
+11(that)h
+14(op)h
+1(erates)h
+14(at)h
+13(the)h
+14(text)h
+177 2399(lev)s
+-1(el.)h
+26(If)h
+17(the)h
+17(statemen)h
+-1(t)h
+17(\\)h
+110(")h
+16(o)h
+1(ccurs)h
+19(often,)h
+17(it)h
+16(ma)h
+-1(y)h
+15(b)h
+1(e)h
+17(b)h
+1(est)h
+18(simply)h
+15(to)h
+16(rep)h
+1(eat)h
+18(it)h
+17(v)h
+-1(erbatim.)h
+25(If)h
+16(a)h
+177 2449(sequence)s
+14(of)h
+11(one)h
+11(h)h
+-1(undred)h
+12(statemen)h
+-1(ts)h
+12(is)h
+11(rep)h
+1(eated)h
+14(often,)h
+11(it)h
+11(is)h
+11(normal)h
+10(to)h
+11(remo)h
+-1(v)h
+-1(e)h
+10(the)h
+12(co)h
+1(de)h
+13(to)h
+11(a)h
+11(function)h
+177 2498(and)s
+14(replace)h
+15(the)h
+15(o)h
+1(ccurrences)h
+17(b)h
+-1(y)h
+13(a)h
+14(function)h
+14(call.)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(in)h
+14(b)h
+1(et)h
+-1(w)h
+-1(een)h
+15(these)h
+16(t)h
+-1(w)h
+-1(o)h
+13(extremes)h
+15(are)h
+14(cases)h
+177 2548(where)s
+16(a)h
+15(particular)h
+14(sequence)h
+18(of)h
+14(co)h
+1(de)h
+16(is)h
+14(long)h
+14(enough)h
+15(and)h
+15(app)h
+1(ears)h
+16(often)h
+15(enough)h
+15(to)h
+14(b)h
+1(e)h
+16(troublesome,)h
+177 2598(but)s
+14(whic)h
+-1(h)h
+14(is)h
+14(b)h
+1(ound)h
+14(so)h
+14(messily)h
+12(to)h
+14(its)h
+14(en)h
+-1(vironmen)h
+-1(t)h
+13(as)h
+14(to)h
+13(mak)h
+-1(e)h
+13(a)h
+13(function)h
+14(call)h
+13(cum)h
+-1(b)h
+1(ersome.)h
+177 2672(F)s
+-3(or)h
+10(example,)h
+10(the)h
+11(follo)h
+-1(wing)h
+8(line)h
+10(of)h
+11(statemen)h
+-1(ts)h
+10(\(referring)h
+12(to)h
+10(\014v)h
+-1(e)h
+11(v)h
+-2(ariables)h
+10(declared)h
+101(to)h
+11(a)h
+10(function\))h
+177 2722(migh)s
+-1(t)h
+12(app)h
+1(ear)h
+14(ten)h
+15(times)h
+13(in)h
+13(a)h
+14(function:)h
+1042 2940(56)s
+57 @eop
+58 @bop0
+cmbx12.300 sf
+[<FFFF0FFFF01FFEFFFF0FFFF01FFE0FF000FF0000E007F0007F0000C007F0007F0000C0
+03F8007F80018003F8003F80018003FC003F80038001FC003FC0030001FC003FC0030000
+FE007FE0060000FE006FE0060000FF006FE00600007F00C7F00C00007F00C7F00C00007F
+80C7F81C00003F8183F81800003F8183F81800001FC383FC3000001FC301FC3000001FE3
+01FC3000000FE600FE6000000FE600FE6000000FF600FFE0000007FC007FC0000007FC00
+7FC0000003FC007F80000003F8003F80000003F8003F80000001F0001F00000001F0001F
+00000000F0001E00000000E0000E00000000E0000E0000>
+56 34 -1 33 58] 87 dc
+[<FFFFFF8000FFFFFFE00007F001F80007F000FC0007F0007E0007F0007E0007F0007F00
+07F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FE0007F000FC0007
+F003F80007FFFFF00007FFFFF00007F001FC0007F0007E0007F0003F0007F0003F8007F0
+001F8007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F000
+3F8007F0003F8007F0007F0007F001FE00FFFFFFF800FFFFFFC000>
+40 34 -2 33 40] 66 dc
+58 @bop1
+cmsy10.300 sf
+239 2186(\017)s
+239 2362(\017)s
+239 2488(\017)s
+239 2565(\017)s
+239 2642(\017)s
+cmbx12.300 sf
+177 1580(2.13.5)s
+55(When)h
+19(Comme)h
+-1(n)h
+-2(ts)h
+17(are)h
+19(Bad)h
+cmtt10.300 sf
+177 284(void)s
+21(frobit\(a,b,c,)h
+-1(d,e\))h
+177 334(float)s
+21(*a,b;)h
+177 384(int)s
+21(*c,d;)h
+177 434(unsigned)s
+20(*e;)h
+177 484({*a=b)s
+21(<<)h
+21(8;)h
+22(*c=d)h
+21(%)h
+21(256;)h
+21(*e=*e+1;})h
+177 671(frobit\(&a,b,&)s
+-1(c,d,&)h
+-1(e\);)h
+453 1725(REM)s
+840 2186(.h)s
+cmr10.300 sf
+177 42(No)s
+-1(w)h
+11(the)h
+12(\\normal")h
+9(rule)h
+12(of)h
+11(programm)h
+-1(i)h
+-1(ng)h
+10(sa)h
+-1(ys)h
+11(that)h
+12(these)h
+13(statemen)h
+-1(ts)h
+12(should)h
+11(b)h
+1(e)h
+12(placed)h
+12(in)h
+11(a)h
+11(pro)h
+1(cedure)h
+177 91(\(also)s
+12(called)h
+13(a)h
+12(\\function")h
+12(in)h
+13(the)h
+13(C)h
+13(programm)h
+-1(i)h
+-1(ng)h
+11(language)h
+12(used)h
+13(in)h
+13(this)h
+12(example\),)h
+12(but)h
+13(here)h
+14(\014v)h
+-1(e)h
+13(lo)h
+1(cal)h
+177 141(v)s
+-2(ariables)h
+16(are)h
+17(used.)h
+27(Use)h
+17(of)h
+16(a)h
+16(pro)h
+1(cedure)h
+18(\(function\))h
+17(w)h
+-1(ould)h
+15(result)h
+18(in)h
+16(a)h
+16(pro)h
+1(cedure)h
+18(de\014nition)h
+16(lo)h
+1(oking)h
+177 191(something)s
+13(lik)h
+-1(e:)h
+177 577(and)s
+14(a)h
+13(pro)h
+1(cedure)h
+16(call)h
+13(something)h
+13(lik)h
+-1(e)h
+177 764(This)s
+14(mig)h
+-1(h)h
+-1(t)h
+12(b)h
+1(e)h
+14(w)h
+-1(ork)h
+-2(able)h
+13(in)h
+13(a)h
+13(language)h
+12(that)h
+14(allo)h
+-1(w)h
+-1(ed)h
+12(formal)h
+11(parameters)h
+14(to)h
+13(b)h
+1(e)h
+14(sp)h
+1(eci\014ed)h
+15(to)h
+14(b)h
+1(e)h
+14(b)h
+1(ound)h
+177 814(only)s
+11(to)h
+12(particular)h
+11(v)h
+-2(ariables.)h
+17(Simi)h
+-1(larl)h
+-1(y)h
+-3(,)h
+9(it)h
+12(migh)h
+-2(t)h
+10(b)h
+1(e)h
+13(p)h
+1(ossible)h
+11(to)h
+12(a)h
+-1(v)h
+-1(oid)h
+10(the)h
+13(parameter)h
+11(list)h
+11(in)h
+11(languages)h
+177 864(that)s
+17(supp)h
+1(ort)h
+18(lo)h
+1(cal)h
+16(pro)h
+1(cedures)h
+19(that)h
+17(can)h
+17(access)h
+19(non-lo)h
+1(cal)h
+16(v)h
+-2(ariables)h
+16(\(suc)h
+-1(h)h
+18(as)h
+16(P)h
+-1(ascal\).)h
+28(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+17(in)h
+177 914(our)s
+12(example)h
+11(here,)h
+13(in)h
+11(the)h
+13(C)h
+12(programm)h
+-1(i)h
+-1(ng)h
+10(language,)h
+11(these)h
+13(options)h
+12(are)h
+12(not)h
+12(a)h
+-1(v)h
+-2(ailable,)h
+10(and)h
+12(so)h
+12(w)h
+-1(e)h
+12(m)h
+-1(ust)h
+177 964(either)s
+14(create)h
+15(a)h
+12(function)h
+13(with)h
+13(\014v)h
+-1(e)h
+13(parameters,)h
+13(or)h
+13(use)h
+14(the)h
+13(C)h
+13(macro)h
+12(prepro)h
+1(ces)h
+1(sor)h
+15(\(the)h
+14(b)h
+1(est)h
+14(solution\).)h
+177 1013(F)s
+-3(unnelW)h
+-3(eb)h
+11(pro)h
+-1(vides)h
+11(the)h
+12(same)h
+11(macro)h
+10(facilit)h
+-1(y)h
+9(for)h
+11(languages)h
+11(that)h
+11(do)h
+11(not)h
+12(ha)h
+-1(v)h
+-1(e)h
+11(a)h
+11(built-in)h
+10(prepro)h
+1(cessor.)h
+177 1082(In)s
+13(particularly)h
+13(sp)h
+1(eed-stre)h
+1(sse)h
+1(d)h
+15(applications,)h
+12(the)h
+14(programm)h
+-1(er)h
+12(ma)h
+-1(y)h
+11(b)h
+1(e)h
+14(reluctan)h
+-1(t)h
+14(to)h
+13(remo)h
+-1(v)h
+-1(e)h
+13(co)h
+1(de)h
+14(to)h
+13(a)h
+177 1131(pro)s
+1(cedure)h
+16(b)h
+1(ecause)h
+16(of)h
+13(the)h
+14(pro)h
+1(cedure-c)h
+1(all)h
+14(o)h
+-1(v)h
+-1(erhead.)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+13(macros)h
+13(can)h
+14(help)h
+14(there)h
+15(to)h
+1(o.)h
+177 1200(In)s
+13(summary)h
+-4(,)h
+11(there)h
+14(sometimes)h
+11(arises)h
+14(in)h
+13(programm)h
+-1(i)h
+-1(ng)h
+11(situations)h
+13(where)h
+14(the)h
+13(cost)h
+14(of)h
+12(de\014ning)h
+13(a)h
+13(pro)h
+1(ce-)h
+177 1249(dure)s
+12(is)h
+10(higher)h
+11(than)h
+11(the)h
+12(b)h
+1(ene\014ts)h
+12(it)h
+11(will)h
+9(b)h
+1(esto)h
+-1(w.)h
+18(Comm)h
+-1(o)h
+-1(n)h
+9(reasons)h
+12(for)h
+11(this)h
+10(are)h
+12(the)h
+11(run-time)h
+10(pro)h
+1(cedure)h
+177 1299(o)s
+-1(v)h
+-1(erhead)h
+13(and)h
+13(the)h
+13(messy)h
+12(binding)h
+12(problems)h
+11(caused)h
+14(b)h
+-1(y)h
+13(remo)h
+-1(ving)h
+10(target)h
+13(co)h
+1(de)h
+14(from)h
+11(its)h
+12(target)h
+14(con)h
+-1(text.)h
+177 1349(F)s
+-3(unnelW)h
+-3(eb)h
+14(can)h
+14(help)h
+14(in)h
+14(these)h
+15(situations)h
+14(b)h
+-1(y)h
+14(allo)h
+-1(wing)h
+12(the)h
+14(programm)h
+-1(er)h
+13(to)h
+14(de\014ne)h
+15(a)h
+14(text)h
+15(macro.)h
+17(This)h
+177 1399(a)s
+-1(v)h
+-1(oids)h
+15(all)h
+15(the)h
+16(problems)h
+15(and)h
+15(pro)h
+-1(vides)h
+16(an)h
+16(additional)h
+14(incen)h
+-1(tiv)h
+-1(e)h
+16(for)h
+15(the)h
+17(programm)h
+-1(er)h
+14(to)h
+16(describ)h
+1(e)h
+17(the)h
+177 1449(piece)s
+15(of)h
+13(co)h
+1(de)h
+15(so)h
+14(isolated.)h
+177 1676(In)s
+16(the)h
+17(\\go)h
+1(o)h
+1(d)h
+16(old)h
+15(da)h
+-1(ys")h
+16(of)h
+16(small)h
+14(mac)h
+-1(hine)h
+15(mem)h
+-1(ories)h
+15(and)h
+16(in)h
+-1(terpreted)h
+18(BASIC,)h
+16(programm)h
+-1(ers)h
+16(w)h
+-1(ould)h
+177 1725(eliminate)s
+14(the)h
+16(\\)h
+66(")h
+14(statemen)h
+-1(ts)h
+15(\(commen)h
+-1(ts\))h
+14(from)h
+14(their)h
+16(BASIC)h
+16(programs)h
+14(so)h
+15(as)h
+16(to)h
+15(sa)h
+-1(v)h
+-1(e)h
+16(space)h
+16(and)h
+177 1775(increase)s
+14(execution)h
+14(sp)h
+1(eed.)h
+19(Whilst)h
+13(this)h
+13(w)h
+-1(as)h
+13(ob)h
+-1(viously)h
+11(an)h
+13(appalling)h
+11(programm)h
+-1(ing)h
+11(practice,)h
+13(the)h
+14(small)h
+177 1825(memori)s
+-1(es)h
+13(and)h
+14(slo)h
+-1(w)h
+13(micropro)h
+1(cessors)h
+15(often)h
+14(made)h
+12(this)h
+14(tempting,)h
+12(if)h
+13(not)h
+14(necessary)h
+-3(.)h
+177 1893(Thankfully)s
+-3(,)h
+9(times)h
+10(ha)h
+-1(v)h
+-1(e)h
+11(c)h
+-1(hanged)h
+12(since)h
+11(then,)h
+12(and)h
+11(most)h
+10(co)h
+1(de)h
+12(is)h
+11(no)h
+-1(w)h
+10(compiled)h
+10(rather)h
+12(than)h
+11(in)h
+-1(terpreted.)h
+177 1943(Ho)s
+-1(w)h
+-1(ev)h
+-1(er,)h
+19(from)h
+17(time)h
+16(to)h
+18(time)h
+17(one)h
+18(still)h
+17(runs)h
+19(in)h
+-1(to)h
+18(an)h
+17(en)h
+-1(vironmen)h
+-1(t)h
+17(or)h
+18(situation,)h
+18(or)h
+19(sp)h
+1(ecial-purp)h
+1(ose)h
+177 1993(language,)s
+21(where)h
+22(comm)h
+-1(en)h
+-1(ts)h
+20(are)h
+21(either)h
+21(una)h
+-1(v)h
+-2(ailable)h
+19(\(no)h
+20(commen)h
+-1(t)h
+19(feature\))h
+21(or)h
+21(undesirable.)h
+39(Here)h
+177 2043(F)s
+-3(unnelW)h
+-3(eb)h
+12(can)h
+13(b)h
+1(e)h
+13(used)h
+13(to)h
+13(fully)h
+11(do)h
+1(cumen)h
+-1(t)h
+12(the)h
+13(co)h
+1(de)h
+13(without)h
+12(resulting)h
+13(in)h
+12(an)h
+-1(y)h
+12(comm)h
+-1(en)h
+-1(ts)h
+11(in)h
+12(the)h
+13(\014nal)h
+177 2092(co)s
+1(de)h
+15(at)h
+14(all.)h
+16(F)h
+-3(or)h
+14(example:)h
+281 2186(Comm)s
+-1(en)h
+-1(ts)h
+16(in)h
+16(frequen)h
+-1(tly)h
+18(used)h
+78(header)h
+18(\014les)h
+18(in)h
+16(C)h
+17(programs)h
+16(can)h
+17(ha)h
+-1(v)h
+-1(e)h
+17(a)h
+17(signi\014can)h
+-1(t)h
+16(impact)h
+281 2236(on)s
+15(compila)h
+-1(tion)h
+13(sp)h
+1(eed.)h
+23(Often)h
+16(suc)h
+-1(h)h
+15(header)h
+17(\014les)h
+15(are)h
+15(fairly)h
+14(cryptic)h
+16(and)h
+15(really)h
+14(ough)h
+-1(t)h
+15(to)h
+15(b)h
+1(e)h
+15(w)h
+-1(ell)h
+281 2286(comm)s
+-1(en)h
+-1(ted,)h
+13(but)h
+14(their)h
+14(authors)h
+14(are)h
+15(reluctan)h
+-1(t)h
+14(to.)h
+281 2362(Comm)s
+-1(en)h
+-1(ts)h
+17(are)h
+20(undesirable)h
+19(in)h
+18(P)h
+-1(ostScript)h
+20(header)h
+20(\014les)h
+19(that)h
+19(m)h
+-1(ust)h
+18(b)h
+1(e)h
+19(transferred)h
+21(rep)h
+1(eatedly)h
+281 2412(along)s
+13(comm)h
+-2(unicati)h
+-1(ons)h
+12(c)h
+-1(hannels)h
+15(\(e.g.)h
+13(the)h
+15(Apple)h
+14(Macin)h
+-1(tosh)h
+14(LaserW)h
+-3(riter)h
+14(header)h
+15(\014le\).)h
+281 2488(In)s
+-1(terpreted)h
+16(programs)h
+13(in)h
+13(em)h
+-1(b)h
+1(edded)h
+14(systems.)h
+281 2565(Hand)s
+14(written)h
+14(mac)h
+-1(hine)h
+13(co)h
+1(de)h
+14(in)h
+14(hex)h
+14(dump)h
+13(form)h
+12(could)h
+14(b)h
+1(e)h
+14(commen)h
+-1(ted.)h
+281 2642(A)s
+16(programm)h
+-1(er)h
+14(ma)h
+-1(y)h
+13(wish)h
+16(to)h
+15(annotate)h
+15(a)h
+16(text)h
+16(data)h
+15(\014le)h
+15(con)h
+-1(taining)h
+15(lists)h
+15(of)h
+15(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+15(that)h
+16(is)h
+15(to)h
+281 2691(b)s
+1(e)h
+13(fed)h
+12(in)h
+-1(to)h
+12(a)h
+11(statistical)h
+12(program)h
+11(that)h
+12(do)h
+1(es)h
+13(not)h
+12(pro)h
+-1(vide)h
+12(an)h
+-1(y)h
+12(comm)h
+-1(en)h
+-1(t)h
+11(facilit)h
+-1(y)h
+10(for)h
+12(its)h
+12(input)h
+12(\014le.)h
+177 2785(In)s
+12(all)h
+11(these)h
+13(situations,)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+12(allo)h
+-1(ws)h
+10(full)h
+11(in)h
+-1(tegrated)h
+12(do)h
+1(cumen)h
+-1(tation)h
+10(without)h
+12(an)h
+-1(y)h
+11(impact)h
+11(on)h
+11(the)h
+177 2835(\014nal)s
+13(co)h
+1(de.)h
+1042 2940(57)s
+58 @eop
+59 @bop0
+59 @bop1
+cmbx12.300 sf
+177 42(2.13.6)s
+55(Do)h
+2(cumen)h
+-2(ts)h
+17(That)h
+19(Share)h
+19(T)h
+-5(ext)h
+cmtt10.300 sf
+177 537(@O@<manual1.t)s
+-1(xt@>=)h
+-1(=@{@<)h
+-1(M1@>@)h
+-1(+@})h
+177 587(@O@<manual2.t)s
+-1(xt@>=)h
+-1(=@{@<)h
+-1(M2@>@)h
+-1(+@})h
+177 687(@$@<M1@>+=@{@)s
+-1(<T1@>)h
+-1(@})h
+177 736(@$@<M2@>+=@{@)s
+-1(<T1@>)h
+-1(@})h
+177 786(@$@<T1@>@M==@)s
+-1({Firs)h
+-1(t)h
+20(lump)h
+21(of)h
+21(text)h
+21(shared)h
+21(by)h
+21(both)h
+21(documents.@+@})h
+177 886(@$@<M1@>+=@{T)s
+-1(ext)h
+20(for)h
+21(first)h
+21(document@+@)h
+-1(})h
+177 936(@$@<M2@>+=@{T)s
+-1(ext)h
+20(for)h
+21(second)h
+20(document@+@})h
+177 1035(@$@<M1@>+=@{@)s
+-1(<T2@>)h
+-1(@})h
+177 1085(@$@<M2@>+=@{@)s
+-1(<T2@>)h
+-1(@})h
+177 1135(@$@<T2@>@M==@)s
+-1({Seco)h
+-1(nd)h
+20(lump)h
+21(of)h
+21(text)h
+21(shared)h
+21(by)h
+21(both)h
+21(documents.@+@)h
+-1(})h
+177 1521(@!)s
+22(Set)h
+21(the)h
+21(definition)h
+20(of)h
+21(@#D)h
+21(to)h
+177 1571(@!)s
+87(@1)h
+21(to)h
+22(create)h
+20(the)h
+21(shareholders)h
+20(report.)h
+177 1621(@!)s
+87(@2)h
+21(to)h
+22(create)h
+20(the)h
+21(customers)h
+20(report.)h
+177 1670(@$@#D@\(@2@\)@M)s
+-1(==@{@)h
+-1(1@})h
+177 1770(@O@<report.tx)s
+-1(t@>==)h
+-1(@{@-)h
+177 1820(1992)s
+21(ANNUAL)h
+21(REPORT)h
+20(TO)h
+22(@#D@\(Shareh)h
+-1(older)h
+-1(s@,C)h
+-1(ustom)h
+-1(ers@\))h
+177 1870(=============)s
+-1(=====)h
+-1(====@)h
+-1(#D@\(=)h
+-1(=====)h
+-1(=====)h
+-1(=@,=)h
+-1(=====)h
+-1(===@\))h
+177 1919(This)s
+21(has)h
+21(been)h
+21(a)h
+22(very)h
+21(good)h
+21(year)h
+21(for)h
+21(The)h
+21(Very)h
+21(Big)h
+21(Corporation)h
+20(of)h
+21(America.)h
+177 1969(With)s
+21(your)h
+21(help,)h
+21(we)h
+21(have)h
+21(been)h
+21(able)h
+21(to)h
+22(successful)h
+-1(ly)h
+177 2019(@#D@\(@"screw)s
+19(the)h
+22(customers)h
+20(for)h
+21(every)h
+21(cent)h
+20(they)h
+21(have@"@,)h
+286 2069(@"knock)s
+20(the)h
+22(shareholder)h
+-1(s)h
+20(into)h
+21(submission)h
+20(to)h
+21(bring)h
+21(you)h
+21(lower)h
+21(prices@"@\).)h
+177 2119(With)s
+21(gross)h
+21(earnings)h
+20(approaching)h
+20(six)h
+21(trillion)h
+20(dollars,)h
+20(we)h
+21(have)h
+21(been)h
+21(able)h
+21(to)h
+177 2168(@#D@\(@"increa)s
+-1(se)h
+20(dividends@"@)h
+-1(,)h
+286 2218(@"lower)s
+20(prices@"@\).)h
+177 2268(We)s
+22(expect)h
+20(to)h
+21(have)h
+21(an)h
+22(even)h
+21(better)h
+20(year)h
+21(next)h
+21(year.)h
+177 2318(@})s
+cmr10.300 sf
+177 144(F)s
+-3(unnelW)h
+-3(eb)h
+13(is)h
+13(v)h
+-1(ery)h
+14(useful)h
+14(when)h
+14(preparing)h
+13(m)h
+-1(ultiple)h
+12(do)h
+1(cumen)h
+-1(ts)h
+13(that)h
+14(m)h
+-1(ust)h
+12(share)h
+14(large)h
+13(slabs)h
+14(of)h
+13(iden-)h
+177 194(tical)s
+13(text)h
+15(that)h
+14(are)h
+14(b)h
+1(eing)h
+14(constan)h
+-1(tly)h
+14(mo)h
+1(di\014ed.)h
+177 270(F)s
+-3(or)h
+14(example)h
+12(someone)h
+13(preparing)h
+14(t)h
+-1(w)h
+-1(o)h
+14(sligh)h
+-1(tly)h
+12(di\013eren)h
+-1(t)h
+15(user)h
+15(man)h
+-1(ual)h
+-1(s)h
+13(for)h
+13(t)h
+-1(w)h
+-1(o)h
+13(sligh)h
+-1(tly)h
+13(di\013eren)h
+-1(t)h
+15(audi-)h
+177 319(ences)s
+16(migh)h
+-1(t)h
+12(w)h
+-1(an)h
+-1(t)h
+13(the)h
+14(man)h
+-1(uals)h
+12(to)h
+14(share)h
+15(large)h
+13(slabs)h
+14(of)h
+13(text,)h
+14(while)h
+14(still)h
+13(allo)h
+-1(wing)h
+11(di\013erences)h
+16(b)h
+1(et)h
+-1(w)h
+-1(een)h
+177 369(them.)s
+18(The)h
+15(follo)h
+-1(wi)h
+-1(ng)h
+12(example)h
+13(sho)h
+-1(ws)h
+14(ho)h
+-1(w)h
+14(this)h
+14(can)h
+15(b)h
+1(e)h
+14(done.)h
+20(The)h
+14(co)h
+1(de)h
+15(is)h
+14(cluttered,)h
+15(but)h
+15(this)h
+14(clutter)h
+177 419(w)s
+-1(ould)h
+13(not)h
+14(b)h
+1(e)h
+15(a)h
+13(problem)h
+13(if)h
+13(the)h
+14(lumps)h
+13(of)h
+13(text)h
+14(w)h
+-1(ere)h
+15(mo)h
+1(derately)h
+13(large.)h
+177 1253(An)s
+16(alternativ)h
+-1(e)h
+16(approac)h
+-1(h,)h
+15(whic)h
+-1(h)h
+16(migh)h
+-1(t)h
+14(w)h
+-1(ork)h
+15(b)h
+1(etter)h
+17(in)h
+16(situations)h
+15(where)h
+17(there)h
+17(are)h
+16(man)h
+-1(y)h
+14(small)h
+14(dif-)h
+177 1303(ferences)s
+18(b)h
+1(et)h
+-1(w)h
+-1(een)h
+17(the)h
+16(t)h
+-1(w)h
+-1(o)h
+15(do)h
+1(cumen)h
+-1(ts)h
+16(rather)h
+16(than)h
+16(a)h
+15(few)h
+16(large)h
+15(ones,)h
+17(is)h
+15(to)h
+16(de\014ne)h
+16(a)h
+16(macro)h
+14(with)h
+15(t)h
+-1(w)h
+-1(o)h
+177 1353(argumen)s
+-1(ts,)h
+11(one)h
+12(for)h
+11(eac)h
+-1(h)h
+12(pro)h
+1(duct)h
+12(\014le)h
+12(do)h
+1(cumen)h
+-1(t.)h
+17(W)h
+-3(rite)h
+11(the)h
+12(do)h
+1(cumen)h
+-1(t)h
+11(from)h
+10(top)h
+11(to)h
+12(b)h
+1(ottom,)h
+10(but)h
+12(place)h
+177 1403(all)s
+13(stretc)h
+-1(hes)h
+16(that)h
+14(di\013er)h
+14(b)h
+1(et)h
+-1(w)h
+-1(een)h
+16(the)h
+14(t)h
+-1(w)h
+-1(o)h
+14(do)h
+1(cumen)h
+-1(ts)h
+13(in)h
+14(a)h
+13(macro)h
+13(call.)h
+177 2436(One)s
+17(application)h
+16(where)h
+17(text)h
+17(sharing)h
+17(can)h
+16(b)h
+1(e)h
+18(particularly)h
+15(useful)h
+17(is)h
+16(in)h
+16(the)h
+18(preparation)h
+16(of)h
+16(computer)h
+177 2486(do)s
+1(cumen)h
+-1(tation)h
+10(con)h
+-1(taining)h
+10(examples.)h
+17(F)h
+-3(or)h
+11(example,)h
+10(a)h
+11(b)h
+1(o)h
+1(ok)h
+11(describing)h
+11(a)h
+11(new)h
+12(programm)h
+-1(ing)h
+9(language)h
+177 2536(migh)s
+-1(t)h
+11(b)h
+1(e)h
+14(full)h
+11(of)h
+13(examples)h
+12(of)h
+12(small)h
+11(programs)h
+12(written)h
+13(in)h
+13(the)h
+14(language)h
+12(whic)h
+-1(h)h
+13(the)h
+13(user)h
+14(migh)h
+-1(t)h
+11(w)h
+-1(an)h
+-1(t)h
+13(to)h
+177 2586(try)s
+13(without)h
+13(ha)h
+-1(ving)h
+12(to)h
+13(t)h
+-1(yp)h
+1(e)h
+13(them)h
+12(all)h
+12(in.)h
+17(The)h
+14(\\default")h
+12(approac)h
+-1(h)h
+13(of)h
+12(k)h
+-1(eeping)h
+13(a)h
+13(cop)h
+-1(y)h
+13(of)h
+12(the)h
+14(examples)h
+177 2635(in)s
+13(the)h
+14(text)h
+14(of)h
+12(the)h
+14(b)h
+1(o)h
+1(ok)h
+13(and)h
+13(another)h
+14(cop)h
+-1(y)h
+13(in)h
+13(separate)h
+14(\014les)h
+14(is)h
+13(cum)h
+-1(b)h
+1(ersome)h
+12(and)h
+13(error)h
+15(prone,)h
+13(b)h
+1(ecause)h
+177 2685(b)s
+1(oth)h
+14(\014les)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(to)h
+14(b)h
+1(e)h
+14(up)h
+1(dated)h
+15(whenev)h
+-1(er)h
+15(an)h
+13(example)h
+13(is)h
+14(c)h
+-1(hanged.)h
+18(A)h
+14(more)h
+13(sophisticated)h
+14(approac)h
+-1(h)h
+14(is)h
+177 2735(to)s
+11(store)h
+11(eac)h
+-1(h)h
+11(example)h
+9(in)h
+11(a)h
+10(separate)h
+12(\014le,)h
+10(and)h
+11(then)h
+11(use)h
+11(the)h
+12(\\include)h
+10(\014le")h
+10(facilit)h
+-1(y)h
+9(of)h
+10(the)h
+11(w)h
+-1(ord)h
+11(pro)h
+1(cessor)h
+177 2785(to)s
+15(include)h
+15(eac)h
+-1(h)h
+16(example)h
+14(in)h
+15(the)h
+15(text.)h
+23(This)h
+15(is)h
+15(a)h
+15(b)h
+1(etter)h
+16(solution,)h
+14(but)h
+16(su\013ers)h
+17(from)h
+13(a)h
+15(few)h
+15(dra)h
+-1(wbac)h
+-1(ks.)h
+177 2835(First,)s
+17(when)h
+16(editing)h
+16(the)h
+17(b)h
+1(o)h
+1(ok)h
+16(in)h
+16(a)h
+15(w)h
+-1(ord)h
+16(pro)h
+1(cessor,)h
+19(the)h
+16(examples)h
+16(in)h
+15(the)h
+17(b)h
+1(o)h
+1(ok)h
+16(will)h
+15(not)h
+16(b)h
+1(e)h
+16(directly)h
+1042 2940(58)s
+59 @eop
+60 @bop0
+cmbx12.300 sf
+[<0003FE0040001FFFC0C0007F00F1C001F8003FC003F0000FC007C00007C00FC00003C0
+1F800003C03F000001C03F000001C07F000000C07E000000C07E000000C0FE00000000FE
+00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000FFFFC7E00
+0FFFFC7F00001FC07F00001FC03F00001FC03F00001FC01F80001FC00FC0001FC007E000
+1FC003F0001FC001FC003FC0007F80E7C0001FFFC3C00003FF00C0>
+40 34 -3 33 44] 71 dc
+60 @bop1
+cmbx12.300 sf
+177 1866(2.13.7)s
+55(Generics)h
+cmtt10.300 sf
+1241 316(.fw)s
+177 534(@O@<Book.tex@)s
+-1(>==@{)h
+-1(@#B@})h
+177 633(@$@#B+=@{@-)s
+177 683(The)s
+21(first)h
+21(step)h
+21(to)h
+21(learning)h
+21(the)h
+21(object)h
+20(oriented)h
+20(AdaCgol++)h
+20(language)h
+21(is)h
+21(to)h
+21(examine)h
+177 733(a)s
+22(hello)h
+21(world)h
+20(program.)h
+177 832(\\start{verbat)s
+-1(im})h
+177 882(@<Ex1@>)s
+177 932(\\finish{verba)s
+-1(tim})h
+177 982(@})s
+177 1081(@$@<Ex1@>==@{)s
+-1(read)h
+19(iopack@+Enter)h
+20(!World~!)h
+20(!Hello~!)h
+20(ex)h
+21(pr)h
+22(flu)h
+21(X[1]@})h
+177 1131(@O@<Ex1.c@>==)s
+-1(@{@<E)h
+-1(x1@>@)h
+-1(})h
+177 1231(@$@#B+=@{@-)s
+177 1281(To)s
+22(understand)h
+19(the)h
+21(program,)h
+21(think)h
+20(of)h
+22(the)h
+21(execution)h
+20(state)h
+21(as)h
+21(a)h
+22(plate)h
+20(of)h
+22(cheese...)h
+177 1331(@})s
+1392 1448(@#B)s
+177 2835(@$@<Generic)s
+20(Set)h
+21(Module@>@\(@2)h
+-1(@\)==@)h
+-1({@-)h
+cmr10.300 sf
+177 42(accessible)s
+19(or)h
+18(visible.)h
+29(T)h
+-3(o)h
+17(see)h
+19(an)h
+17(example,)h
+17(the)h
+18(writer)h
+18(w)h
+-1(ould)h
+17(ha)h
+-1(v)h
+-1(e)h
+18(to)h
+17(op)h
+1(en)h
+19(the)h
+18(\014le)h
+18(con)h
+-1(taining)h
+16(the)h
+177 91(example)s
+11(in)h
+11(a)h
+12(separate)h
+13(windo)h
+-1(w.)h
+17(This)h
+12(could)h
+11(b)h
+1(ecome)h
+12(tedious)h
+12(if)h
+12(the)h
+12(text)h
+13(con)h
+-1(tained)h
+12(man)h
+-1(y)h
+10(examples,)h
+11(as)h
+177 141(man)s
+-1(y)h
+12(texts)h
+15(do.)h
+17(F)h
+-3(urthermore,)h
+13(there)h
+15(is)h
+14(a)h
+13(risk)h
+14(that)h
+13(some)h
+13(example)h
+12(\014les)h
+14(will)h
+13(b)h
+1(e)h
+14(included)h
+14(in)h
+13(the)h
+14(wrong)h
+177 191(place.)s
+18(Second,)h
+12(b)h
+1(ecause)h
+14(the)h
+12(b)h
+1(o)h
+1(ok)h
+12(is)h
+11(dep)h
+1(enden)h
+-1(t)h
+14(on)h
+11(the)h
+13(included)h
+11(\014les,)h
+13(the)h
+12(b)h
+1(o)h
+1(ok)h
+11(will)h
+11(end)h
+12(up)h
+12(consisting)h
+177 241(of)s
+13(a)h
+14(directory)h
+15(of)h
+13(a)h
+14(h)h
+-1(undred)h
+14(or)h
+14(more)h
+13(\014les)h
+14(instead)h
+14(of)h
+14(just)h
+14(a)h
+13(few.)h
+177 316(An)s
+13(alternativ)h
+-1(e)h
+12(solution)h
+12(is)h
+12(to)h
+13(construct)h
+14(a)h
+12(single)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+89(\014le)h
+13(that,)h
+12(when)h
+13(pro)h
+1(cesse)h
+1(d,)h
+14(pro)h
+1(duces)h
+177 366(b)s
+1(oth)h
+16(the)h
+16(b)h
+1(o)h
+1(ok)h
+16(\014le)h
+16(and)h
+15(the)h
+17(example)h
+14(\014les.)h
+24(This)h
+16(solution)h
+15(assumes)h
+15(that)h
+16(the)h
+16(b)h
+1(o)h
+1(ok)h
+16(consists)h
+17(of)h
+15(a)h
+15(text)h
+177 416(\014le)s
+14(con)h
+-1(taining)h
+13(comm)h
+-1(ands)h
+12(for)h
+14(a)h
+13(t)h
+-1(yp)h
+1(esette)h
+1(r)h
+16(suc)h
+-1(h)h
+14(as)h
+14(T)h
+1112 425(E)s
+1135 416(X.)s
+177 1448(Most)s
+12(of)h
+11(the)h
+12(\014le)h
+11(will)h
+10(consist)h
+12(of)h
+11(part)h
+12(de\014nitions)h
+11(of)h
+11(the)h
+12(additiv)h
+-1(e)h
+11(macro)h
+76(.)h
+11(The)h
+12(de\014nition)h
+11(is)h
+11(\\brok)h
+-1(en")h
+177 1498(to)s
+14(allo)h
+-1(w)h
+12(a)h
+14(macro)h
+12(de\014nition,)h
+13(wherev)h
+-1(er)h
+16(an)h
+14(example)h
+12(app)h
+1(ears.)h
+177 1573(The)s
+10(example)h
+9(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+9(is)h
+9(a)h
+10(little)h
+9(messy)h
+9(b)h
+1(ecause)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+9(do)h
+1(es)h
+11(not)h
+9(allo)h
+-1(w)h
+8(macros)h
+9(connected)h
+11(to)h
+10(pro)h
+1(duct)h
+177 1623(\014les)s
+18(to)h
+17(b)h
+1(e)h
+18(called,)h
+17(and)h
+17(it)h
+17(do)h
+1(es)h
+18(not)h
+17(ha)h
+-1(v)h
+-1(e)h
+17(text)h
+18(expressions)h
+19(that)h
+17(write)h
+17(to)h
+18(an)h
+17(pro)h
+1(duct)h
+18(\014le)h
+17(as)h
+17(w)h
+-1(ell)h
+17(as)h
+177 1673(ev)s
+-2(aluating)h
+14(to)h
+15(text.)h
+22(Nev)h
+-1(ertheless,)h
+17(it)h
+15(presen)h
+-1(ts)h
+17(a)h
+15(fairly)h
+14(clean)h
+15(solution)h
+14(to)h
+15(the)h
+16(problem)h
+14(of)h
+14(k)h
+-1(eeping)h
+15(the)h
+177 1723(example)s
+13(programs)h
+12(in)h
+14(a)h
+13(computing)h
+13(text)h
+14(up)h
+14(to)h
+14(date.)h
+177 1968(It)s
+13(is)h
+13(w)h
+-1(ell)h
+12(kno)h
+-1(wn)h
+13(that)h
+13(generics)h
+14(in)h
+13(programm)h
+-1(i)h
+-1(ng)h
+11(languages)h
+12(are)h
+14(closely)h
+13(aligned)h
+12(with)h
+12(textual)h
+13(substitu-)h
+177 2018(tion.)s
+16(In)h
+11(fact,)h
+10(a)h
+10(go)h
+1(o)h
+1(d)h
+10(w)h
+-1(a)h
+-1(y)h
+10(to)h
+10(understand)h
+12(the)h
+11(generic)h
+11(facilit)h
+-1(y)h
+9(of)h
+9(a)h
+10(new)h
+11(programm)h
+-1(ing)h
+8(language)h
+9(is)h
+11(to)h
+10(ask)h
+177 2068(oneself)s
+15(the)h
+15(question)h
+15(\\In)h
+14(what)h
+14(w)h
+-1(a)h
+-1(y)h
+14(do)h
+1(es)h
+15(this)h
+15(generic)h
+15(facilit)h
+-1(y)h
+13(di\013er)h
+15(from)h
+12(simple)h
+13(text)h
+15(substitution?")h
+177 2118(The)s
+18(di\013erences)h
+1(,)h
+20(if)h
+16(an)h
+-1(y)h
+-3(,)h
+17(t)h
+-1(ypically)h
+17(ha)h
+-1(v)h
+-1(e)h
+17(to)h
+17(do)h
+18(with)h
+17(the)h
+18(di\013erence)h
+20(in)h
+17(scoping)h
+17(b)h
+1(et)h
+-1(w)h
+-1(een)h
+19(textual)h
+18(and)h
+177 2168(in)s
+-1(telligen)h
+-1(t)h
+15(substitution)h
+15(and)h
+16(whether)h
+17(the)h
+16(generic)h
+16(co)h
+1(de)h
+17(is)h
+15(shared)h
+17(or)h
+15(copied)h
+16(b)h
+-1(y)h
+16(the)h
+16(impl)h
+-1(emen)h
+-1(tati)h
+-1(on.)h
+177 2217(In)s
+14(most)h
+13(cases)h
+15(the)h
+14(di\013erences)h
+17(are)h
+14(quite)h
+14(minor.)h
+177 2293(Because)s
+15(generic)h
+15(facilities)h
+12(are)h
+13(so)h
+14(closely)h
+13(aligned)h
+12(with)h
+13(text)h
+14(substitution,)h
+13(it)h
+13(is)h
+13(p)h
+1(ossible)h
+14(to)h
+13(use)h
+14(F)h
+-3(unnel-)h
+177 2343(W)s
+-3(eb's)h
+16(parameterized)h
+16(macros)h
+16(to)h
+16(pro)h
+-1(vide)h
+16(generics)h
+17(in)h
+16(programm)h
+-1(i)h
+-1(ng)h
+14(languages)h
+16(that)h
+16(do)h
+16(not)h
+16(supp)h
+1(ort)h
+177 2392(generics.)s
+27(Simply)h
+14(write)h
+17(a)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(macro)h
+16(whose)h
+17(parameters)h
+16(are)h
+17(the)h
+17(parameters)h
+16(of)h
+16(the)h
+17(generic)h
+177 2442(and)s
+14(whose)h
+14(b)h
+1(o)h
+1(dy)h
+14(is)h
+14(the)h
+15(generic)h
+14(ob)h
+2(ject.)h
+177 2518(The)s
+16(follo)h
+-1(wing)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+16(\014le)h
+15(giv)h
+-1(es)h
+16(an)h
+15(example)h
+15(of)h
+15(a)h
+15(fully)h
+15(w)h
+-1(ork)h
+-1(ed)h
+15(V)h
+-3(ax)h
+15(P)h
+-1(ascal)h
+16(generic)h
+17(set)h
+16(pac)h
+-1(k)h
+-2(age)h
+177 2567(implem)s
+-1(en)h
+-1(ted)h
+14(using)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(parameterized)h
+15(macros.)h
+21(The)h
+15(pac)h
+-1(k)h
+-2(age)h
+15(w)h
+-1(as)h
+15(written)h
+15(b)h
+-1(y)h
+15(Barry)h
+16(Dwy)h
+-1(er)h
+177 2617(of)s
+12(the)h
+14(Computer)h
+11(Science)h
+15(Departmen)h
+-1(t)h
+12(of)h
+12(the)h
+13(Univ)h
+-1(ersit)h
+-1(y)h
+13(of)h
+12(Adelaide)h
+12(in)h
+13(1987)h
+11(and)h
+13(w)h
+-1(as)h
+12(emailed)h
+11(to)h
+13(me)h
+177 2667(on)s
+16(11)h
+15(No)h
+-1(v)h
+-1(em)h
+-1(b)h
+1(er)h
+14(1987.)h
+23(The)h
+16(generic)h
+16(pac)h
+-1(k)h
+-2(age)h
+15(pro)h
+-1(vides)h
+16(a)h
+15(set)h
+17(abstraction)h
+16(impl)h
+-1(emen)h
+-1(ted)h
+14(using)h
+15(link)h
+-1(ed)h
+177 2717(lists.)s
+18(Note)h
+14(the)h
+15(clev)h
+-1(er)h
+15(use)h
+14(of)h
+14(the)h
+14(instan)h
+-1(tiation)h
+13(parameters)h
+14(in)h
+13(t)h
+-1(yp)h
+1(e,)h
+14(function,)h
+13(and)h
+14(pro)h
+1(cedure)h
+16(names.)h
+1042 2940(59)s
+60 @eop
+61 @bop0
+61 @bop1
+cmr10.300 sf
+1042 2940(60)s
+cmtt10.300 sf
+177 42(@!)s
+22(@1)h
+21(is)h
+21(the)h
+21(base)h
+21(type,)h
+21(@2)h
+22(is)h
+21(the)h
+21(set)h
+21(type.)h
+177 91([inherit)s
+20(\('@1'\),)h
+21(environment)h
+19(\('@2'\)])h
+177 191(module)s
+21(@2;)h
+177 291(type)s
+43(@2)h
+21(=)h
+22(^@2Record;)h
+308 340(@2Record)s
+20(=)h
+22(record)h
+373 390(Member:)s
+21(@1;)h
+373 440(Next:)s
+21(@2;)h
+373 490(end;)s
+177 589(procedure)s
+20(Null@2)h
+21(\(var)h
+21(Result:)h
+20(@2\);)h
+177 639(begin)s
+21(new)h
+21(\(Result\);)h
+177 689(Result^.Membe)s
+-1(r)h
+20(:=)h
+21(\(-)h
+22(MaxInt\)::@1;)h
+177 739(Result^.Next)s
+19(:=)h
+22(nil)h
+21(end;)h
+177 839(function)s
+20(IsNull@2)h
+20(\(S:)h
+22(@2\):)h
+21(boolean;)h
+177 888(begin)s
+21(IsNull@2)h
+20(:=)h
+21(S^.Member::inte)h
+-1(ger)h
+20(=)h
+21(-)h
+22(MaxInt)h
+20(end;)h
+177 988(procedure)s
+20(ForEach@1)h
+20(\(S:)h
+21(@2;)h
+21(procedure)h
+20(DoIt)h
+21(\(i:)h
+21(@1\)\);)h
+177 1038(var)s
+65(ThisS,)h
+20(NextS:)h
+21(@2;)h
+177 1088(begin)s
+21(ThisS)h
+21(:=)h
+21(S;)h
+177 1137(while)s
+21(ThisS^.Membe)h
+-1(r::in)h
+-1(teger)h
+19(<>)h
+22(-)h
+21(MaxInt)h
+21(do)h
+243 1187(begin)s
+20(NextS)h
+21(:=)h
+21(ThisS^.Next;)h
+243 1237(DoIt)s
+21(\(ThisS^.Me)h
+-1(mber\))h
+-1(;)h
+243 1287(ThisS)s
+20(:=)h
+22(NextS)h
+20(end;)h
+177 1337(end;)s
+177 1436(function)s
+20(First@1)h
+21(\(S:)h
+21(@2\):)h
+21(@1;)h
+177 1486(begin)s
+21(First@1)h
+20(:=)h
+22(S^.Member)h
+20(end;)h
+177 1586(function)s
+20(Is@1InSet)h
+20(\(i:)h
+21(@1;)h
+22(S:)h
+21(@2\):)h
+21(boolean;)h
+243 1636(procedure)s
+19(TestEquals)h
+20(\(j:)h
+21(@1\);)h
+243 1685(begin)s
+20(if)h
+22(Equal@1)h
+20(\(i,)h
+21(j\))h
+22(then)h
+21(Is@1InSet)h
+19(:=)h
+22(true;)h
+21(end;)h
+177 1735(begin)s
+21(Is@1InSet)h
+20(:=)h
+21(false;)h
+21(ForEach@1)h
+20(\(S,)h
+21(TestEquals\);)h
+19(end;)h
+177 1835(function)s
+20(Includes@2)h
+20(\(S1,)h
+21(S2:)h
+21(@2\):)h
+21(boolean;)h
+177 1885(var)s
+21(Result:)h
+21(boolean;)h
+243 1934(procedure)s
+19(TestIfInS1)h
+20(\(i:)h
+21(@1\);)h
+243 1984(begin)s
+20(if)h
+22(Result)h
+20(then)h
+21(if)h
+22(not)h
+21(Is@1InSet)h
+20(\(i,)h
+21(S1\))h
+21(then)h
+21(Result)h
+21(:=)h
+21(false;)h
+20(end;)h
+177 2034(begin)s
+21(Result)h
+20(:=)h
+22(true;)h
+177 2084(ForEach@1)s
+20(\(S2,)h
+21(TestIfInS1\);)h
+177 2134(Includes@2)s
+20(:=)h
+21(Result)h
+21(end;)h
+177 2233(function)s
+20(Disjoint@2s)h
+20(\(S1,)h
+21(S2:)h
+21(@2\):)h
+21(boolean;)h
+177 2283(var)s
+21(Result:)h
+21(boolean;)h
+243 2333(procedure)s
+19(TestIfInS1)h
+20(\(i:)h
+21(@1\);)h
+243 2383(begin)s
+20(if)h
+22(Result)h
+20(then)h
+21(if)h
+22(Is@1InSet)h
+20(\(i,)h
+21(S1\))h
+21(then)h
+21(Result)h
+20(:=)h
+22(false;)h
+20(end;)h
+177 2433(begin)s
+21(Result)h
+20(:=)h
+22(true;)h
+177 2482(ForEach@1)s
+20(\(S2,)h
+21(TestIfInS1\);)h
+177 2532(Disjoint@2s)s
+20(:=)h
+21(Result)h
+21(end;)h
+177 2632(function)s
+20(Equal@2)h
+21(\(S1,)h
+21(S2:)h
+21(@2\):)h
+21(boolean;)h
+177 2682(begin)s
+177 2731(Equal@2)s
+21(:=)h
+21(Includes@2)h
+20(\(S1,)h
+21(S2\))h
+21(and)h
+21(Includes@2)h
+20(\(S2,)h
+21(S1\);)h
+177 2781(end;)s
+61 @eop
+62 @bop0
+62 @bop1
+cmti10.300 sf
+1502 2458(with)s
+13(c)h
+-2(omplete)h
+13(typ)h
+-2(esafety.)h
+cmr10.300 sf
+177 2408(A)s
+12(great)h
+13(adv)h
+-2(an)h
+-1(tage)h
+11(of)h
+11(the)h
+13(approac)h
+-1(h)h
+12(re\015ected)h
+14(in)h
+12(the)h
+12(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+12(example)h
+11(is)h
+12(that)h
+12(it)h
+12(allo)h
+-1(ws)h
+10(the)h
+13(programm)h
+-1(er)h
+177 2458(to)s
+12(construct)h
+14(a)h
+11(generic)h
+13(ob)h
+2(ject)h
+13(in)h
+12(a)h
+11(language)h
+12(that)h
+12(do)h
+1(es)h
+12(not)h
+12(supply)h
+12(generics,)h
+177 2507(This)s
+13(con)h
+-1(trasts)h
+14(to)h
+12(the)h
+14(approac)h
+-1(h)h
+12(that)h
+13(migh)h
+-1(t)h
+11(b)h
+1(e)h
+13(used)h
+14(in)h
+12(a)h
+13(language)h
+12(suc)h
+-1(h)h
+13(as)h
+13(C)h
+13(where)h
+14(the)h
+13(programm)h
+-1(er)h
+177 2557(migh)s
+-1(t)h
+11(c)h
+-1(ho)h
+1(ose)h
+13(to)h
+13(construct)h
+14(a)h
+12(\\generic")h
+13(pac)h
+-1(k)h
+-2(age)h
+12(b)h
+-1(y)h
+13(parameterizing)h
+12(a)h
+12(pac)h
+-1(k)h
+-2(age)h
+12(with)h
+12(p)h
+1(oin)h
+-1(ters)h
+14(to)h
+100(.)h
+177 2607(The)s
+14(resulting)h
+13(pac)h
+-1(k)h
+-2(age)h
+13(is)h
+13(p)h
+1(o)h
+-1(w)h
+-1(erful)h
+13(but)h
+13(extremely)h
+13(un)h
+-1(t)h
+-1(yp)h
+1(esafe.)h
+18(Suc)h
+-1(h)h
+14(a)h
+13(generic)h
+14(list)h
+12(pac)h
+-1(k)h
+-2(age)h
+13(is)h
+13(used)h
+14(in)h
+177 2657(the)s
+13(co)h
+1(de)h
+14(of)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(itself)h
+12(and)h
+13(caused)h
+14(no)h
+12(end)h
+13(of)h
+12(problems,)h
+12(as)h
+12(the)h
+14(compiler)h
+11(had)h
+12(no)h
+13(w)h
+-1(a)h
+-1(y)h
+12(of)h
+12(telling)h
+177 2707(if)s
+19(p)h
+1(oin)h
+-1(ters)h
+20(to)h
+19(the)h
+20(correctly)h
+21(t)h
+-1(yp)h
+1(ed)h
+20(ob)h
+2(ject)h
+20(w)h
+-1(ere)h
+21(b)h
+1(eing)h
+19(handed)h
+20(to)h
+20(the)h
+20(correct)h
+21(list-ob)h
+2(ject/function)h
+177 2757(com)s
+-1(bination.)h
+177 2835(The)s
+19(ma)h
+2(jor)h
+18(disadv)h
+-2(an)h
+-1(tage)h
+18(of)h
+18(the)h
+19(text)h
+20(generic)h
+20(approac)h
+-1(h)h
+18(is)h
+19(that)h
+19(it)h
+19(causes)h
+20(the)h
+19(co)h
+1(de)h
+20(of)h
+18(the)h
+20(generic)h
+1042 2940(61)s
+cmtt10.300 sf
+177 42(procedure)s
+20(Insert@1)h
+20(\(i:)h
+21(@1;)h
+22(var)h
+21(S:)h
+21(@2\);)h
+177 91(var)s
+65(This,)h
+21(Pred,)h
+20(Succ:)h
+21(@2;)h
+177 141(begin)s
+177 191(if)s
+22(not)h
+21(Is@1InSet)h
+20(\(i,)h
+21(S\))h
+21(then)h
+243 241(begin)s
+243 291(Pred)s
+21(:=)h
+21(nil;)h
+21(Succ)h
+21(:=)h
+21(S;)h
+243 340(while)s
+20(Succ^.Member::)h
+-1(integ)h
+-1(er)h
+20(>)h
+21(i::integer)h
+20(do)h
+21(begin)h
+308 390(Pred)s
+21(:=)h
+21(Succ;)h
+21(Succ)h
+21(:=)h
+21(Succ^.Next)h
+20(end;)h
+243 440(if)s
+21(Succ^.Member)h
+-1(::int)h
+-1(eger)h
+19(<)h
+22(i::integer)h
+20(then)h
+21(begin)h
+308 490(new)s
+21(\(This\);)h
+20(This^.Next)h
+20(:=)h
+22(Succ;)h
+20(This^.Member)h
+20(:=)h
+21(i;)h
+308 540(if)s
+21(Pred)h
+21(<>)h
+22(nil)h
+21(then)h
+21(Pred^.Next)h
+20(:=)h
+21(This)h
+21(else)h
+21(S)h
+21(:=)h
+22(This;)h
+308 589(end;)s
+243 639(end;)s
+177 689(end;)s
+177 789(procedure)s
+20(Insert@1s)h
+20(\(S1:)h
+21(@2;)h
+21(var)h
+21(S2:)h
+22(@2\);)h
+177 839(var)s
+65(This,)h
+21(Pred,)h
+20(Succ:)h
+21(@2;)h
+243 888(procedure)s
+19(Add@1)h
+21(\(i:)h
+21(@1\);)h
+243 938(begin)s
+20(Insert@1)h
+20(\(i,)h
+22(S2\))h
+21(end;)h
+177 988(begin)s
+177 1038(ForEach@1)s
+20(\(S1,)h
+21(Add@1\);)h
+177 1088(end;)s
+177 1187(procedure)s
+20(Remove@1)h
+20(\(i:)h
+21(@1;)h
+22(var)h
+21(S:)h
+21(@2\);)h
+177 1237(var)s
+65(Pred,)h
+21(This:)h
+20(@2;)h
+177 1287(begin)s
+177 1337(Pred)s
+21(:=)h
+22(nil;)h
+20(This)h
+21(:=)h
+22(S;)h
+177 1386(while)s
+21(not)h
+21(Equal@1)h
+20(\(This^.Member,)h
+19(i\))h
+22(do)h
+21(begin)h
+243 1436(Pred)s
+21(:=)h
+21(This;)h
+21(This)h
+21(:=)h
+21(This^.Next)h
+20(end;)h
+177 1486(if)s
+22(Pred)h
+21(<>)h
+21(nil)h
+21(then)h
+21(Pred^.Next)h
+20(:=)h
+21(This^.Next)h
+20(else)h
+21(S)h
+21(:=)h
+22(This^.Next;)h
+177 1536(Dispose)s
+21(\(This\);)h
+177 1586(end;)s
+177 1685(procedure)s
+20(Dispose@2)h
+20(\(var)h
+21(S:)h
+21(@2\);)h
+177 1735(var)s
+65(Old:)h
+21(@2;)h
+177 1785(begin)s
+177 1835(while)s
+21(S)h
+22(<>)h
+21(nil)h
+21(do)h
+21(begin)h
+21(Old)h
+21(:=)h
+22(S;)h
+21(S)h
+22(:=)h
+21(S^.Next;)h
+20(Dispose)h
+21(\(Old\))h
+20(end;)h
+177 1885(end;)s
+177 1984(end.)s
+177 2034(@})s
+177 2134(@O@<NaryTreeS)s
+-1(et.pa)h
+-1(s@>==)h
+-1(@{@-)h
+221 2183(@<Generic)s
+20(Set)h
+21(Module@>@\(@")h
+-1(NaryT)h
+-1(ree@")h
+-1(@,@")h
+-1(NaryT)h
+-1(reeSe)h
+-1(t@"@\))h
+-1(@})h
+177 2233(@O@<NaryTreeS)s
+-1(etSet)h
+-1(.pas@)h
+-1(>==@{)h
+-1(@-)h
+221 2283(@<Generic)s
+20(Set)h
+21(Module@>@\(@")h
+-1(NaryT)h
+-1(reeSe)h
+-1(t@"@)h
+-1(,@"Na)h
+-1(ryTre)h
+-1(eSetS)h
+-1(et@"@)h
+-1(\)@})h
+1850 2557(void)s
+62 @eop
+63 @bop0
+63 @bop1
+cmtt10.300 sf
+1704 216(void)s
+cmbx10.432 sf
+177 627(2.14)s
+70(Summ)h
+-3(ary)h
+cmr10.300 sf
+177 42(ob)s
+2(ject)h
+19(to)h
+18(b)h
+1(e)h
+19(duplicated)h
+18(once)h
+19(for)h
+17(eac)h
+-1(h)h
+19(instan)h
+-1(tiation.)h
+29(Dep)h
+1(ending)h
+19(on)h
+18(the)h
+18(n)h
+-1(um)h
+-1(b)h
+1(er)h
+18(and)h
+18(size)h
+19(of)h
+17(the)h
+177 91(instan)s
+-1(tiations,)h
+13(this)h
+14(ma)h
+-1(y)h
+11(or)h
+14(ma)h
+-1(y)h
+12(not)h
+14(b)h
+1(e)h
+15(acceptable.)h
+177 166(Where)s
+22(the)h
+21(duplication)h
+20(of)h
+20(co)h
+1(de)h
+21(is)h
+21(unacceptable,)h
+23(a)h
+20(h)h
+-1(ybrid)h
+21(approac)h
+-1(h)h
+20(ma)h
+-1(y)h
+19(b)h
+1(e)h
+21(tak)h
+-1(en.)h
+39(As)h
+21(in)h
+20(the)h
+177 216(C)s
+16(example,)h
+14(the)h
+16(programm)h
+-1(er)h
+14(could)h
+15(write)h
+16(a)h
+15(single)h
+15(generic)h
+16(pac)h
+-1(k)h
+-2(age)h
+15(using)h
+15(p)h
+1(oin)h
+-1(ters)h
+16(to)h
+118(or)h
+16(some)h
+177 266(other)s
+16(un)h
+-1(t)h
+-1(yp)h
+1(esafe)h
+16(mec)h
+-1(hanism.)h
+19(Then)h
+16(the)h
+16(programm)h
+-1(er)h
+14(creates)h
+17(a)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(generic)h
+16(pac)h
+-1(k)h
+-2(age)h
+15(whose)h
+177 315(functions)s
+15(do)h
+14(nothing)h
+13(more)h
+14(than)h
+14(call)h
+14(the)h
+15(functions)h
+14(of)h
+14(the)h
+15(un)h
+-1(t)h
+-1(yp)h
+1(esafe)h
+15(pac)h
+-1(k)h
+-2(age,)h
+14(and)h
+14(whose)h
+15(t)h
+-1(yp)h
+1(es)h
+15(do)h
+177 365(nothing)s
+14(more)h
+14(than)h
+14(con)h
+-1(tain)h
+14(the)h
+15(t)h
+-1(yp)h
+1(es)h
+16(of)h
+13(the)h
+16(un)h
+-1(t)h
+-1(yp)h
+1(esafe)h
+15(pac)h
+-1(k)h
+-2(age.)h
+19(This)h
+15(solution)h
+13(in)h
+-1(v)h
+-1(olv)h
+-1(es)h
+14(the)h
+15(use)h
+15(of)h
+177 415(un)s
+-1(t)h
+-1(yp)h
+1(esafe)h
+17(programm)h
+-1(i)h
+-1(ng,)h
+14(but)h
+16(this)h
+16(is)h
+16(a)h
+16(one-o\013)h
+16(and)h
+16(if)h
+15(done)h
+16(carefully)h
+16(and)h
+16(correctly)h
+-3(,)h
+16(the)h
+17(result)h
+17(can)h
+177 465(b)s
+1(e)h
+15(a)h
+13(t)h
+-1(yp)h
+1(esafe)h
+15(generic)h
+15(pac)h
+-1(k)h
+-2(age)h
+13(in)h
+-1(v)h
+-1(olving)h
+12(minim)h
+-2(al)h
+11(co)h
+1(de)h
+15(duplication.)h
+177 743(This)s
+16(c)h
+-1(hapter)h
+17(has)h
+16(describ)h
+1(ed)h
+18(some)h
+15(of)h
+16(the)h
+16(\014ner)h
+17(asp)h
+1(ects)h
+18(of)h
+15(the)h
+17(use)h
+17(of)h
+15(F)h
+-3(unnelW)h
+-3(eb.)h
+24(Throughout,)h
+16(the)h
+177 793(p)s
+1(o)h
+-1(w)h
+-1(er)h
+15(and)h
+14(danger)h
+14(of)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(as)h
+14(a)h
+14(general)h
+15(text-rearranging)h
+14(prepro)h
+1(cess)h
+1(or)h
+16(has)h
+14(b)h
+1(een)h
+16(emphasised.)h
+177 843(F)s
+-3(unnelW)h
+-3(eb)h
+16(can)h
+16(b)h
+1(e)h
+17(used)h
+17(b)h
+1(oth)h
+16(to)h
+16(mak)h
+-1(e)h
+14(programs)h
+15(more)h
+15(readable)h
+16(or)h
+16(more)h
+15(obscure.)h
+26(It)h
+16(is)h
+16(up)h
+16(to)h
+16(the)h
+177 892(programm)s
+-1(er)h
+13(to)h
+13(ensure)h
+16(that)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(is)h
+14(used)h
+15(prop)h
+1(erly)h
+-3(.)h
+1042 2940(62)s
+63 @eop
+64 @bop0
+cmbx10.622 sf
+[<0003FF8000001FFFF000007FFFFE0000FE03FF0003F001FFC007E000FFE007C0007FF0
+0FF0007FF00FFC007FF81FFC007FF81FFE007FF81FFE007FF81FFE007FF81FFE007FF81F
+FE007FF80FFC007FF80FFC007FF003F000FFF0000000FFE0000000FFE0000001FFC00000
+01FF80000003FF00000007FC0000001FF800000FFFC000000FFF8000000FFFF800000003
+FE00000001FF80000000FFE00000007FF00000003FF80000003FFC0000003FFE0000001F
+FE0000001FFE0200001FFF1FC0001FFF3FE0001FFF7FF0001FFFFFF8001FFFFFF8001FFF
+FFF8001FFFFFF8001FFFFFF8001FFEFFF8003FFEFFF0003FFC7FE0003FFC7FC0007FF83F
+80007FF01FE000FFE00FFC03FFC003FFFFFF8001FFFFFE00003FFFF0000007FF8000>
+40 57 -4 55 49] 51 dc
+cmbx10.746 sf
+[<FFFFFFFFFFFFC0000000FFFFFFFFFFFFFE000000FFFFFFFFFFFFFFC00000FFFFFFFFFF
+FFFFF00000FFFFFFFFFFFFFFFC0000001FFF800007FFFF0000001FFF8000007FFF800000
+1FFF8000000FFFE000001FFF80000007FFF000001FFF80000001FFF800001FFF80000000
+FFFC00001FFF800000007FFE00001FFF800000003FFF00001FFF800000001FFF00001FFF
+800000000FFF80001FFF800000000FFFC0001FFF8000000007FFC0001FFF8000000007FF
+E0001FFF8000000003FFE0001FFF8000000003FFF0001FFF8000000003FFF0001FFF8000
+000003FFF8001FFF8000000001FFF8001FFF8000000001FFF8001FFF8000000001FFFC00
+1FFF8000000001FFFC001FFF8000000001FFFC001FFF8000000001FFFC001FFF80000000
+01FFFC001FFF8000000001FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF
+8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FF
+FE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000
+000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000001FFFE00
+1FFF8000000001FFFC001FFF8000000001FFFC001FFF8000000001FFFC001FFF80000000
+01FFFC001FFF8000000001FFF8001FFF8000000001FFF8001FFF8000000001FFF8001FFF
+8000000003FFF0001FFF8000000003FFF0001FFF8000000003FFF0001FFF8000000007FF
+E0001FFF8000000007FFE0001FFF800000000FFFC0001FFF800000000FFF80001FFF8000
+00001FFF80001FFF800000003FFF00001FFF800000003FFE00001FFF800000007FFC0000
+1FFF80000001FFF800001FFF80000003FFF000001FFF8000000FFFE000001FFF8000007F
+FFC000001FFF800003FFFF0000FFFFFFFFFFFFFFFE0000FFFFFFFFFFFFFFF80000FFFFFF
+FFFFFFFFC00000FFFFFFFFFFFFFE000000FFFFFFFFFFFFC0000000>
+80 71 -4 70 91] 68 dc
+[<00000007FF800000000001FFFFF0000000000FFFFFFC000000003FFFFFFE00000000FF
+FC00FF00000001FFC0003F80000007FF00007FC000000FFE0001FFC000001FFC0001FFE0
+00001FF80003FFE000003FF00003FFE000003FF00003FFE000007FE00003FFE000007FE0
+0003FFE000007FE00003FFE000007FE00003FFE000007FE00001FFC000007FE00000FF80
+00007FE000003E0000007FE00000000000007FE00000000000007FE00000000000007FE0
+0000000000007FE00000000000007FE00000000000007FE0003FFFF000FFFFFFFFFFFFF0
+00FFFFFFFFFFFFF000FFFFFFFFFFFFF000FFFFFFFFFFFFF000FFFFFFFFFFFFF000007FF0
+0000FFF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0
+00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0
+00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0
+00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0
+00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0
+00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0
+00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0
+00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0003FFFFF
+E03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFF
+E0>
+64 72 -2 71 66] 12 dc
+cmr8.300 sf
+[<00FC000303000E01C01C00E0380070300030700038600018E0001CE0001CE0001CE000
+1CE0001CE0001CE0001C7000387000383000303800701C00E00E01C003030000FC00>
+24 23 -2 22 27] 79 dc
+cmr10.300 sf
+[<7FFFFFC0FFFFFFE0000000000000000000000000000000000000000000000000000000
+0000000000FFFFFFE07FFFFFC0>
+32 12 -2 15 32] 61 dc
+64 @bop1
+cmr7.300 sf
+1368 2752(1)s
+cmr6.300 sf
+223 2823(1)s
+cmmi10.300 sf
+1699 2017(<)s
+121(>)h
+326 2067(<)s
+121(>)h
+cmsy10.300 sf
+588 1749(f)s
+220(g)h
+270 1849(f)s
+176(g)h
+512 1899(f)s
+198(g)h
+cmbx10.622 sf
+177 372(Chapter)s
+34(3)h
+cmbx10.746 sf
+177 598(F)s
+-10(unnelW)h
+-10(eb)h
+41(De\014niti)h
+1(on)h
+cmbx10.300 sf
+295 2549(Journal)s
+10(\014le:)h
+295 2718(Pro)s
+1(duct)h
+19(\014le:)h
+cmbx10.432 sf
+177 858(3.1)s
+70(In)h
+-2(tro)h
+2(duction)h
+177 1490(3.2)s
+70(Notation)h
+177 2320(3.3)s
+70(T)h
+-6(erm)h
+-1(i)h
+-1(nology)h
+cmtt10.300 sf
+1747 1649("string")s
+996 1699([optional])s
+609 1749(zeroormore)s
+291 1849(sixtimes)s
+21(6)h
+384 1899(+)s
+127(oneormore)h
+21(+)h
+457(::=)h
+198 1948(=)s
+1241 2117(@)s
+cmr8.300 sf
+241 2835(Other)s
+11(names)h
+10(consider)h
+-1(ed)h
+9(for)h
+11(this)h
+11(w)h
+-1(ere:)h
+15(generated)h
+9(\014le,)h
+11(expand)h
+-1(ed)h
+9(\014le,)h
+11(result)h
+10(\014le,)h
+11(program)h
+9(\014le,)h
+11(and)h
+10(tangle)h
+10(\014le.)h
+cmr10.300 sf
+177 968(This)s
+15(purp)h
+1(ose)h
+16(of)h
+14(this)h
+15(c)h
+-1(hapter)h
+15(is)h
+15(to)h
+15(pro)h
+-1(vide)h
+14(a)h
+15(complete)h
+14(and)h
+14(consisten)h
+-1(t)h
+16(de\014nition)h
+15(of)h
+14(the)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+177 1018(input)s
+16(language)h
+14(and)h
+16(the)h
+16(b)h
+1(eha)h
+-1(viour)h
+15(of)h
+15(the)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(program.)h
+22(Usually)h
+-3(,)h
+14(a)h
+16(c)h
+-1(hapter)h
+16(suc)h
+-1(h)h
+17(as)h
+15(this)h
+16(is)h
+177 1068(called)s
+12(a)h
+12(\\reference)h
+14(man)h
+-1(ual)h
+-1(",)h
+10(but)h
+12(this)h
+12(c)h
+-1(hapter)h
+13(is)h
+12(in)h
+-1(tended)h
+12(to)h
+12(go)h
+12(further)h
+12(b)h
+-1(y)h
+12(actually)h
+11(de\014ning)h
+12(the)h
+13(lan-)h
+177 1118(guage)s
+12(and)h
+11(program.)h
+16(This)h
+12(c)h
+-1(hapter)h
+12(tak)h
+-1(es)h
+12(precede)h
+1(nce)h
+14(o)h
+-1(v)h
+-1(er)h
+12(all)h
+10(other)h
+13(c)h
+-1(hapters)h
+13(and)h
+11(all)h
+11(implem)h
+-1(en)h
+-1(tatio)h
+-1(ns)h
+177 1167(of)s
+13(F)h
+-3(unnelW)h
+-3(eb.)h
+18(If)h
+13(an)h
+14(implem)h
+-1(en)h
+-1(tation)h
+11(con)h
+-1(tradicts)h
+15(this)h
+14(c)h
+-1(hapter,)h
+14(then)h
+15(the)h
+15(impl)h
+-1(em)h
+-1(en)h
+-1(tation)h
+12(is)h
+14(wrong.)h
+177 1236(This)s
+17(is)h
+17(the)h
+18(c)h
+-1(hapter)h
+19(that)h
+17(y)h
+-1(ou)h
+17(should)h
+17(turn)h
+17(if)h
+17(y)h
+-1(ou)h
+17(\014nd)h
+17(y)h
+-1(ourself)h
+17(asking)h
+17(a)h
+17(sp)h
+1(eci\014c)h
+18(question)h
+18(ab)h
+1(out)h
+17(a)h
+177 1286(sp)s
+1(eci\014c)h
+17(asp)h
+1(ect)h
+16(of)h
+15(F)h
+-3(unnelW)h
+-3(eb.)h
+21(In)h
+15(man)h
+-1(y)h
+13(cases)h
+17(it)h
+15(will)h
+13(b)h
+1(e)h
+16(con)h
+-1(v)h
+-1(enien)h
+-1(t)h
+16(to)h
+14(access)h
+17(this)h
+16(c)h
+-1(hapter)h
+16(through)h
+177 1336(the)s
+15(index.)h
+177 1600(A)s
+17(particular)h
+17(v)h
+-2(arian)h
+-1(t)h
+16(of)h
+16(EBNF)h
+18(\(Extended)h
+18(Bac)h
+-1(h)h
+-1(us)h
+18(Naur)h
+17(F)h
+-3(orm\))h
+15(will)h
+16(b)h
+1(e)h
+17(used)h
+18(to)h
+17(describ)h
+1(e)h
+19(the)h
+17(F)h
+-3(un-)h
+177 1649(nelW)s
+-3(eb)h
+18(syn)h
+-1(tax.)h
+32(In)h
+18(this)h
+18(v)h
+-2(arian)h
+-1(t,)h
+18(literal)h
+18(strings)h
+18(are)h
+19(delimited)h
+17(b)h
+-1(y)h
+18(double)h
+18(quotes)h
+19(\(e.g.)h
+194(\),)h
+177 1699(optional)s
+15(constructs)h
+18(b)h
+-1(y)h
+17(square)h
+17(brac)h
+-1(k)h
+-1(ets)h
+17(\(e.g.)h
+236(\),)h
+14(and)h
+17(constructs)h
+18(rep)h
+1(eated)h
+18(zero)h
+17(or)h
+17(more)h
+177 1749(times)s
+19(b)h
+-1(y)h
+19(braces)h
+21(\(e.g.)h
+280(\).)h
+34(Constructs)h
+21(to)h
+19(b)h
+1(e)h
+20(rep)h
+1(eated)h
+22(a)h
+19(\014xed)h
+20(n)h
+-1(um)h
+-1(b)h
+1(er)h
+19(of)h
+19(times)h
+18(are)h
+177 1799(enclosed)s
+18(in)h
+16(braces)h
+17(follo)h
+-1(w)h
+-1(ed)h
+15(b)h
+-1(y)h
+17(a)h
+16(decimal)h
+14(n)h
+-1(um)h
+-1(b)h
+1(er)h
+16(indicating)h
+16(the)h
+17(n)h
+-1(um)h
+-1(b)h
+1(er)h
+15(of)h
+16(times)h
+16(to)h
+16(b)h
+1(e)h
+17(rep)h
+1(eated)h
+177 1849(\(e.g.)s
+254(\).)h
+19(Constructs)h
+17(to)h
+15(b)h
+1(e)h
+15(rep)h
+1(eated)h
+17(one)h
+15(or)h
+15(more)h
+14(times)h
+14(are)h
+15(enclosed)h
+16(in)h
+15(braces)h
+16(and)h
+15(fol-)h
+177 1899(lo)s
+-1(w)h
+-1(ed)h
+13(b)h
+-1(y)h
+14(a)h
+49(\(e.g.)h
+275(\).)h
+16(The)h
+14(traditional)h
+12(BNF)h
+15(\\)h
+66(")h
+12(is)h
+14(replaced)h
+15(b)h
+-1(y)h
+13(the)h
+15(visually)h
+12(simpler)h
+177 1948(\\)s
+22(".)h
+17(The)h
+15(traditional)h
+12(BNF)h
+15(angle)h
+13(brac)h
+-1(k)h
+-1(ets)h
+15(are)h
+14(abandoned.)h
+177 2017(Although)s
+10(F)h
+-3(unnelW)h
+-3(eb)h
+10(allo)h
+-1(ws)h
+9(the)h
+11(sp)h
+1(ecial)h
+11(c)h
+-1(haracter)h
+11(to)h
+11(b)h
+1(e)h
+11(c)h
+-1(hanged)h
+10(using)h
+11(the)h
+11(construct)h
+12(\\)h
+32(sp)h
+1(ecial)h
+32(=",)h
+177 2067(use)s
+19(of)h
+18(\\)h
+32(sp)h
+1(ecial)h
+32(")h
+19(to)h
+18(refer)h
+19(to)h
+19(F)h
+-3(unnelW)h
+-3(eb's)h
+17(sp)h
+1(ecial)h
+19(c)h
+-1(haracter)h
+20(is)h
+18(cum)h
+-1(b)h
+1(ersome)h
+17(and)h
+18(abstract.)h
+33(T)h
+-3(o)h
+177 2117(simplif)s
+-1(y)h
+18(the)h
+19(presen)h
+-1(tation,)h
+21(the)h
+20(default)h
+19(sp)h
+1(ecial)h
+19(c)h
+-1(haracter)h
+21(\\)h
+22(")h
+18(is)h
+19(used)h
+20(throughout)h
+20(this)h
+19(c)h
+-1(hapter)h
+20(to)h
+177 2167(represent)s
+15(the)h
+15(sp)h
+1(ecial)h
+14(c)h
+-1(haracter.)h
+177 2430(A)s
+14(sp)h
+1(eci\014c)h
+16(terminology)h
+12(has)h
+14(arisen)h
+15(for)h
+14(dealing)h
+13(with)h
+14(F)h
+-3(unnelW)h
+-3(eb.)h
+18(Some)h
+13(particularly)h
+13(useful)h
+15(examples)h
+177 2480(are:)s
+557 2549(An)s
+11(output)h
+11(\014le)h
+11(con)h
+-1(taining)h
+10(a)h
+10(cop)h
+-1(y)h
+11(of)h
+10(the)h
+12(output)h
+11(sen)h
+-1(t)h
+11(to)h
+11(the)h
+12(user's)h
+11(console)h
+295 2599(during)s
+14(an)h
+15(in)h
+-1(v)h
+-1(o)h
+1(cation)h
+13(of)h
+14(F)h
+-3(unnelW)h
+-3(eb.)h
+19(In)h
+15(other)h
+15(systems,)h
+14(this)h
+15(\014le)h
+15(is)h
+14(sometim)h
+-1(es)h
+14(called)h
+14(a)h
+295 2649(\\log)s
+13(\014le".)h
+586 2718(An)s
+18(output)h
+18(\014le,)h
+18(generated)h
+19(b)h
+-1(y)h
+17(the)h
+18(T)h
+-3(angle)h
+17(comp)h
+1(onen)h
+-1(t)h
+17(of)h
+17(F)h
+-3(unnelW)h
+-3(eb,)h
+295 2767(that)s
+14(con)h
+-1(tains)h
+14(the)h
+15(expansion)h
+13(of)h
+14(the)h
+14(macros)h
+13(in)h
+14(the)h
+14(input)h
+14(\014le.)h
+1042 2940(63)s
+709 2 177 2796 r
+64 @eop
+65 @bop0
+cmbx10.432 sf
+[<FFFE7FFC0FFEFFFE7FFC0FFEFFFE7FFC0FFE0FE007E000E007F003F001C007F003F001
+C007F807F803C003F807F8038003F807F8038001FC0EFC070001FC0EFC070001FE1EFC0F
+0000FE1C7E0E0000FE1C7E0E0000FF383F1E00007F383F1C00007F783F3C00003FF01FB8
+00003FF01FB800003FF01FF800001FE00FF000001FE00FF000000FC007E000000FC007E0
+00000FC007E00000078003C00000078003C000>
+48 27 -1 26 50] 119 dc
+cmbx10.300 sf
+[<007800FC00FC00FC00FC007800000000000000000000000003FC03FC007C007C007C00
+7C007C007C007C007C007C007C007C007C007C007C007C007C007C007C707CF87CF878F8
+F070E01F80>
+16 38 3 29 15] 106 dc
+65 @bop1
+cmbx10.432 sf
+177 250(3.4)s
+70(An)h
+23(Arc)h
+-2(hitectural)h
+20(Ov)h
+-2(erview)h
+cmr8.300 sf
+343 2290(F)s
+-3(unnelW)h
+-3(eb)h
+9(pro)h
+1(cesses)h
+9(eac)h
+-1(h)h
+9(input)h
+9(\014le)h
+10(in)h
+11(a)h
+10(sequence)h
+8(of)h
+11(phases.)h
+13(If)h
+11(an)h
+10(error)h
+9(o)h
+1(ccurs)h
+9(during)h
+9(a)h
+11(phase,)h
+9(no)h
+281 2340(subsequen)s
+-2(t)h
+10(phases)h
+10(are)h
+11(execute)h
+-1(d.)h
+cmbx10.300 sf
+1866 363(Fig-)s
+177 413(ure)s
+15(3)h
+1702 485(input)s
+17(\014le)h
+248 535(F)s
+-4(unnelW)h
+-4(eb)h
+13(\014le)h
+1241(phases)h
+635 585(output)s
+18(\014les)h
+357(journal)h
+18(\014le)h
+1693 635(listi)s
+-1(ng)h
+18(\014le)h
+1532 685(do)s
+1(cumen)h
+-1(tati)h
+-1(on)h
+998 784(pro)s
+1(duct)h
+13(\014les)h
+673 2431(Figure)s
+14(3)h
+295 2613(The)s
+14(Scanner)h
+295 2785(The)s
+19(P)h
+-1(arser)h
+cmtt10.300 sf
+373 1103(.fw)s
+21(Input)h
+21(File)h
+21(\(FunnelWeb)h
+20(file\))h
+635 1153(V)s
+526 1202(+---------+)s
+390(\\)h
+526 1252(|)s
+21(Scanner)h
+21(|)h
+392(|)h
+526 1302(+---------+)s
+390(|)h
+635 1352(V)s
+501(|)h
+526 1402(+--------+)s
+412(|)h
+526 1451(|)s
+21(Parser)h
+21(|)h
+414(|)h
+526 1501(+--------+)s
+412(|)h
+635 1551(V)s
+501(|)h
+526 1601(+----------+)s
+368(>-------+---)h
+-1(-----)h
+-1(----+)h
+526 1651(|)s
+21(Analyser)h
+21(|)h
+370(|)h
+152(|)h
+262(|)h
+526 1701(+----------+)s
+368(|)h
+152(|)h
+262(|)h
+635 1750(V)s
+501(|)h
+152(|)h
+262(|)h
+373 1800(+-----------+-)s
+-1(-----)h
+-1(-----)h
+-1(-+)h
+216(|)h
+152(V)h
+262(V)h
+373 1850(V)s
+523(V)h
+218(|)h
+152(|)h
+262(|)h
+286 1900(+--------+)s
+325(+-------+)h
+129(|)h
+152(|)h
+262(|)h
+286 1950(|)s
+22(Tangle)h
+20(|)h
+327(|)h
+22(Weave)h
+20(|)h
+131(|)h
+152(|)h
+262(|)h
+286 1999(+--------+)s
+325(+-------+)h
+129(/)h
+152(|)h
+262(|)h
+373 2049(|)s
+523(|)h
+392(|)h
+262(|)h
+373 2099(V)s
+523(V)h
+392(V)h
+262(V)h
+243 2149(Product)s
+20(Files)h
+195(Documentation)h
+19(File)h
+86(Listing)h
+21(File)h
+43(Journal)h
+20(File)h
+cmr10.300 sf
+177 42(A)s
+14(complete)h
+13(list)h
+13(of)h
+13(all)h
+12(the)h
+15(sp)h
+1(ecial)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(terminology)h
+11(app)h
+1(ears)h
+15(in)h
+13(the)h
+14(glossary)h
+-3(.)h
+17(Be)h
+15(sure)h
+14(to)h
+14(refer)h
+177 91(to)s
+14(it)h
+13(if)h
+13(an)h
+-1(y)h
+14(of)h
+13(the)h
+15(terms)h
+13(used)h
+15(are)h
+14(unclear.)h
+177 363(An)s
+18(understanding)h
+17(of)h
+17(the)h
+18(in)h
+-1(ternals)h
+17(of)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(assists)h
+19(with)h
+16(understanding)h
+18(its)h
+17(op)h
+1(eration)h
+18(\()h
+285 413(\).)s
+177 485(During)s
+16(a)h
+17(single)h
+17(run,)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+17(reads)h
+18(and)h
+16(pro)h
+1(cesse)h
+1(s)h
+19(a)h
+17(single)h
+16(input)h
+17(\014le)h
+17(called)h
+17(the)h
+227(or)h
+177 535(the)s
+327(.)h
+17(The)h
+14(\014le)h
+14(is)h
+13(pro)h
+1(cessed)h
+16(b)h
+-1(y)h
+13(passing)h
+14(it)h
+13(through)h
+14(a)h
+13(series)h
+15(of)h
+13(stages)h
+14(called)h
+151(.)h
+177 585(The)s
+19(result)h
+18(is)h
+18(that)h
+18(some)h
+277(are)h
+19(generated.)h
+32(A)h
+266(is)h
+18(generated)h
+19(con)h
+-1(taining)h
+17(a)h
+177 635(cop)s
+-1(y)h
+18(of)h
+18(the)h
+18(messages)h
+18(that)h
+19(app)h
+1(ear)h
+18(on)h
+18(the)h
+19(console)h
+18(during)h
+18(the)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+18(run.)h
+31(A)h
+246(is)h
+177 685(created)s
+14(con)h
+-1(taining)h
+12(a)h
+13(summ)h
+-1(ary)h
+11(of)h
+12(the)h
+14(run,)h
+13(including)h
+11(an)h
+-1(y)h
+13(error)h
+13(messages.)h
+18(A)h
+336(\014le)h
+13(is)h
+177 734(generated)s
+16(con)h
+-1(taining)h
+13(t)h
+-1(yp)h
+1(esetter)h
+16(commands)h
+12(that)h
+15(when)h
+14(fed)h
+15(in)h
+-1(to)h
+13(a)h
+14(t)h
+-1(yp)h
+1(esetter)h
+17(program)h
+12(will)h
+13(result)h
+15(in)h
+177 784(prin)s
+-1(ted)h
+14(do)h
+1(cumen)h
+-1(tation.)h
+16(Finally)h
+-3(,)h
+11(one)h
+14(or)h
+13(more)h
+285(are)h
+14(generated)h
+14(con)h
+-1(taining)h
+13(the)h
+13(result)h
+14(of)h
+177 834(unscram)s
+-1(bling)h
+12(the)h
+15(macro)h
+12(de\014nitions)h
+14(of)h
+14(the)h
+14(input)h
+14(\014le.)h
+177 906(These)s
+15(\014les)h
+15(need)h
+15(not)h
+14(all)h
+13(b)h
+1(e)h
+14(generated)h
+16(on)h
+13(an)h
+-1(y)h
+14(particular)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(run.)h
+19(Whether)h
+15(eac)h
+-1(h)h
+15(output)h
+14(\014le)h
+177 956(app)s
+1(ears)h
+15(is)h
+14(con)h
+-1(trolled)h
+13(b)h
+-1(y)h
+14(comm)h
+-1(and)h
+12(line)h
+13(options.)h
+848 2431(:)s
+18(F)h
+-3(unnelW)h
+-3(eb's)h
+13(pro)h
+1(cessing)h
+15(phases.)h
+177 2541(The)s
+14(phases)h
+15(are)h
+15(brie\015y)h
+14(describ)h
+1(ed)h
+16(b)h
+1(elo)h
+-1(w.)h
+568 2613(reads)s
+13(the)h
+13(input)h
+12(\014le,)h
+12(expands)h
+13(and)h
+12(reads)h
+13(in)h
+11(include)h
+13(\014les,)h
+12(scans)h
+13(the)h
+13(input)h
+295 2663(stream,)s
+17(pro)h
+1(cesses)h
+19(pragmas)h
+16(and)h
+16(t)h
+-1(yp)h
+1(esetter)h
+19(directiv)h
+-1(es,)h
+18(and)h
+17(parses)h
+18(all)h
+16(the)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+295 2713(sp)s
+1(ecial)h
+14(sequence)h
+1(s.)h
+20(The)h
+14(result)h
+15(is)h
+14(a)h
+13(list)h
+14(of)h
+13(tok)h
+-1(ens)h
+14(that)h
+14(is)h
+14(handed)h
+14(to)h
+14(the)h
+15(parser.)h
+548 2785(reads)s
+18(the)h
+18(scanner's)h
+18(tok)h
+-1(en)h
+17(list)h
+17(and)h
+17(parses)h
+18(it,)h
+17(constructing)h
+18(a)h
+17(do)h
+1(cumen)h
+-1(t)h
+295 2835(list)s
+14(and)h
+13(a)h
+14(macro)h
+13(table.)h
+18(whic)h
+-1(h)h
+13(are)h
+15(passed)h
+15(to)h
+13(later)h
+14(phases.)h
+1042 2940(64)s
+65 @eop
+66 @bop0
+/cmbx8.300 127 @newfont
+cmtt8.300 sf
+[<1FF07FF0E070C070E000FF003FE00FF00078E018E018F038FFF0DFC0>
+16 14 -2 13 18] 115 dc
+[<0E000E000E000E00FFF8FFF80E000E000E000E000E000E000E000E380E380E7807F003
+C0>
+16 18 -1 17 18] 116 dc
+[<01F801F8003800380038003807B81FF838787078F038E038E038E038E038F038707878
+F81FFF0FBF>
+16 20 -1 19 18] 100 dc
+[<FF80FF8003800380038003800380038003800380038003800380038003800380038003
+80FFFEFFFE>
+16 20 -1 19 18] 108 dc
+[<06000F000F000600000000000000FF00FF000700070007000700070007000700070007
+000700FFF8FFF8>
+16 21 -3 20 18] 105 dc
+[<FC00FC001C001C001C001C001DF01FF81F1E1E0E1C0F1C071C071C071C071C0F1E0E1F
+1C1FF81DE0>
+16 20 0 19 18] 98 dc
+[<60F0F060>
+8 4 -7 3 18] 46 dc
+[<FC0000FC00001C00001C00001C00001C00001CF0001FF8001F1C001E1C001C1C001C1C
+001C1C001C1C001C1C001C1C001C1C001C1C00FF9F80FF9F80>
+24 20 0 19 18] 104 dc
+cmbx8.300 sf
+[<FEFEFEE0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0FEFEFE>
+8 33 -3 24 11] 91 dc
+[<FFF83FE0FFF83FE00F800E000F801C000F8030000F8060000F81C0000F8380000F8700
+000F8F00000F9F00000FBF80000FE7C0000FC7C0000F83E0000F81F0000F81F8000F80F8
+000F807C000F803E000F803F00FFF8FFE0FFF8FFE0>
+32 23 -2 22 32] 75 dc
+[<07F01C18380C78067007F007F007FFFFF000F0007000780038031E0603FC>
+16 15 -1 14 19] 101 dc
+[<F8E0F9383A783A783C303C003C003C003C003C003C003C003C00FF80FF80>
+16 15 -2 14 17] 114 dc
+[<FC7C00FD8E003E0F003E0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F
+003C0F00FF3FC0FF3FC0>
+24 15 -2 14 23] 110 dc
+[<387C7C7C3800000000FCFC3C3C3C3C3C3C3C3C3C3C3CFFFF>
+8 24 -1 23 11] 105 dc
+[<0FCF001873803033807038007038007038007038003030001860002FC0002000003000
+003FF8003FFE003FFF00700780E00380E00380E00380700700380E000FF800>
+24 22 -1 14 20] 103 dc
+[<FC0000FC00003C00003C00003C00003C00003C00003C00003C7C003D8E003E0F003E0F
+003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F00FF3FC0FF3FC0>
+24 23 -2 22 23] 104 dc
+[<0FE0003838003C1C003C1E00181E00001E0000FE000F9E003C1E00781E00F01E00F01E
+00F01E00786FC01F87C0>
+24 15 -1 14 20] 97 dc
+[<07E01FF03838701C701C781C7E1C7FB83FF01FF00FF83BFC70FEE03EE01EE00EE00EF0
+0C78183FF00FE0>
+16 21 -2 20 20] 56 dc
+[<FEFEFE0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EFEFEFE>
+8 33 0 24 11] 93 dc
+cmti10.300 sf
+[<FFC0FFC0FFC0>
+16 3 -3 9 15] 45 dc
+cmr8.300 sf
+[<00FC100383300E00B01C0070380030300030700010600010E00010E00000E00000E000
+00E00000E00000E000106000107000103000203800201C00400E008003830000FC00>
+24 23 -2 22 25] 67 dc
+[<20303FE03FC0240020002000200020002F8030E020700030003800384038E038E03880
+30406020C01F00>
+16 21 -2 20 18] 53 dc
+66 @bop1
+cmr7.300 sf
+1378 2439(2)s
+cmr6.300 sf
+223 2823(2)s
+cmtt8.300 sf
+1026 2835(stdlib.)s
+-1(h)h
+cmbx8.300 sf
+1255 2835([Kernighan88])s
+cmtt10.300 sf
+245 2405(EXIT)s
+15(SUCCESS)h
+959(EXIT)h
+15(FAILURE)h
+cmti10.300 sf
+1220 1009(incr)s
+-2(e)h
+-2(ases)h
+1206 2718(tar)s
+-2(get-language)h
+cmbx10.432 sf
+177 799(3.5)s
+70(Diagnostics)h
+177 2608(3.6)s
+70(T)h
+-2(yp)h
+2(esetter)h
+21(Indep)h
+2(endence)h
+cmr8.300 sf
+241 2835(F)s
+-3(rom)h
+10(the)h
+11(sym)h
+-1(b)h
+1(ols)h
+10(of)h
+11(the)h
+11(ANSI)h
+12(standard)h
+9(C)h
+12(library)h
+153(.)h
+13(See)h
+261(,)h
+11(p.252.)h
+cmbx10.300 sf
+295 42(The)s
+20(Analyser)h
+295 260(T)s
+-4(angle)h
+295 378(W)s
+-4(ea)h
+-1(v)h
+-1(e)h
+1432 447(F)s
+-4(unnelW)h
+-4(eb)h
+15(prop)h
+1(er)h
+526 496(F)s
+-4(unnel)h
+-1(W)h
+-4(eb)h
+19(program)h
+295 1246(W)s
+-4(arning:)h
+295 1414(Error:)s
+295 1632(Sev)s
+-1(ere)h
+15(Error:)h
+295 1750(F)s
+-4(atal)h
+12(Error:)h
+295 1969(Assertion)s
+12(Error:)h
+cmr10.300 sf
+599 42(examines)s
+16(the)h
+18(macro)h
+16(table)h
+18(generated)h
+18(b)h
+-1(y)h
+17(the)h
+18(parser)h
+19(and)h
+17(p)h
+1(erforms)h
+17(a)h
+295 91(n)s
+-1(um)h
+-1(b)h
+1(er)h
+12(of)h
+11(c)h
+-1(hec)h
+-1(ks)h
+14(of)h
+11(the)h
+13(macro)h
+11(structures)h
+15(that)h
+12(the)h
+13(parser)h
+13(could)h
+12(not)h
+12(mak)h
+-1(e)h
+11(on)h
+12(its)h
+12(single)h
+295 141(pass.)s
+17(F)h
+-3(or)h
+10(example,)h
+9(the)h
+10(analyser)h
+10(detects)h
+12(and)h
+10(\015ags)h
+10(un)h
+-1(used)h
+11(macros)h
+9(and)h
+10(recursiv)h
+-1(e)h
+11(macros.)h
+295 191(The)s
+15(analyser)h
+14(forms)h
+12(the)h
+15(\014nal)h
+13(stage)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb's)h
+14(fron)h
+-1(t-end)h
+14(pro)h
+1(cessing.)h
+448 260(expands)s
+14(certain)h
+15(macros)h
+14(in)h
+14(the)h
+15(macro)h
+13(table)h
+14(to)h
+14(generate)h
+16(one)h
+14(or)h
+14(more)h
+14(pro)h
+1(duct)h
+295 309(\014les.)s
+444 378(uses)s
+15(the)h
+15(do)h
+1(cumen)h
+-1(t)h
+13(list)h
+13(to)h
+14(generate)h
+15(a)h
+14(do)h
+1(cumen)h
+-1(tation)h
+13(\014le.)h
+177 447(A)s
+15(single)h
+15(run)h
+16(through)h
+15(these)h
+17(phases)h
+16(constitutes)h
+17(a)h
+15(single)h
+15(in)h
+-1(v)h
+-1(o)h
+1(cation)h
+13(of)h
+408(.)h
+20(Most)h
+177 496(in)s
+-1(v)h
+-1(o)h
+1(cations)h
+17(of)h
+18(the)h
+468(will)h
+17(consist)h
+19(only)h
+17(of)h
+17(a)h
+18(single)h
+18(execution)h
+19(of)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+177 546(prop)s
+1(er.)h
+18(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(also)h
+11(pro)h
+-1(vides)h
+11(a)h
+11(comma)h
+-1(nd)h
+10(shell)h
+11(that)h
+11(pro)h
+-1(vides)h
+12(man)h
+-1(y)h
+9(useful)h
+12(comm)h
+-1(ands,)h
+177 596(including)s
+15(a)h
+15(command)h
+14(to)h
+15(in)h
+-1(v)h
+-1(ok)h
+-1(e)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(prop)h
+1(er.)h
+25(Discussion)h
+16(of)h
+15(the)h
+17(comm)h
+-1(and)h
+14(shell)h
+15(is)h
+16(deferred)h
+177 646(un)s
+-1(til)h
+13(Section)h
+14(3.15.)h
+177 909(During)s
+16(execution,)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(pro)h
+1(ceeds)h
+19(cautiously)h
+16(with)h
+16(eac)h
+-1(h)h
+17(of)h
+16(its)h
+16(phases,)h
+18(only)h
+16(pro)h
+1(ceeding)h
+17(with)h
+177 959(the)s
+19(next)h
+19(phase)h
+18(if)h
+18(the)h
+18(previous)h
+19(phase)h
+19(has)h
+18(b)h
+1(een)h
+19(success)h
+1(ful.)h
+32(This)h
+18(means)h
+17(that,)h
+19(when)h
+18(debugging)h
+18(a)h
+177 1009(F)s
+-3(unnelW)h
+-3(eb)h
+15(\014le,)h
+16(y)h
+-1(ou)h
+15(ma)h
+-1(y)h
+13(\014nd)h
+16(that)h
+16(the)h
+16(n)h
+-1(um)h
+-1(b)h
+1(er)h
+15(of)h
+15(errors)h
+194(after)h
+16(y)h
+-1(ou)h
+15(\014x)h
+15(some)h
+15(of)h
+15(them,)h
+15(as)h
+177 1059(y)s
+-1(ou)h
+14(will)h
+12(b)h
+1(e)h
+14(exp)h
+1(osing)h
+14(y)h
+-1(ourself)h
+14(to)h
+14(the)h
+14(next)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(phase.)h
+177 1127(F)s
+-3(unnelW)h
+-3(eb)h
+15(emplo)h
+-1(ys)h
+15(\014v)h
+-1(e)h
+16(lev)h
+-1(els)h
+16(of)h
+15(diagnostics)h
+16(at)h
+15(di\013eren)h
+-1(t)h
+17(lev)h
+-1(els)h
+16(of)h
+15(sev)h
+-1(erit)h
+-1(y)h
+-3(.)h
+24(Sev)h
+-1(erit)h
+-1(y)h
+17(is)h
+15(de\014ned)h
+17(in)h
+177 1177(terms)s
+14(of)h
+13(the)h
+15(lev)h
+-1(el)h
+13(of)h
+13(activit)h
+-1(y)h
+13(at)h
+14(whic)h
+-1(h)h
+14(the)h
+14(diagnostic)h
+14(causes)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(to)h
+14(ab)h
+1(ort.)h
+504 1246(A)s
+12(w)h
+-1(arning)h
+11(do)h
+1(es)h
+12(not)h
+12(cause)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+11(to)h
+11(terminate)h
+11(or)h
+12(curtail)h
+11(its)h
+12(op)h
+1(eration)h
+295 1295(in)s
+13(an)h
+-1(y)h
+12(w)h
+-1(a)h
+-1(y)h
+-3(,)h
+11(but)h
+13(serv)h
+-1(es)h
+14(merely)h
+12(to)h
+13(w)h
+-1(arn)h
+12(the)h
+14(user)h
+14(of)h
+12(particular)h
+12(conditions)h
+13(that)h
+12(migh)h
+-1(t)h
+11(b)h
+1(e)h
+295 1345(symptoma)s
+-1(tic)h
+12(of)h
+14(deep)h
+1(er)h
+15(problems.)h
+442 1414(An)s
+15(error)h
+16(causes)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(to)h
+15(terminate)h
+14(pro)h
+1(cessing)h
+15(of)h
+14(the)h
+15(curren)h
+-1(t)h
+16(input)h
+15(\014le)h
+295 1464(at)s
+12(the)h
+12(end)h
+12(of)h
+11(the)h
+12(curren)h
+-1(t)h
+13(phase.)h
+18(F)h
+-3(or)h
+11(example,)h
+11(if)h
+10(an)h
+12(error)h
+12(o)h
+1(ccurs)h
+13(during)h
+12(scanning,)h
+11(F)h
+-3(un-)h
+295 1514(nelW)s
+-3(eb)h
+15(will)h
+14(con)h
+-1(tin)h
+-1(ue)h
+16(scanning)h
+15(\(and)h
+15(p)h
+1(ossibly)h
+15(generate)h
+17(further)h
+16(scanning)h
+15(diagnostics\),)h
+295 1563(but)s
+14(will)h
+13(not)h
+14(in)h
+-1(v)h
+-1(ok)h
+-1(e)h
+13(the)h
+14(parser.)h
+594 1632(A)s
+15(sev)h
+-1(ere)h
+16(error)h
+15(\(or)h
+14(\\sev)h
+-1(ere")h
+16(for)h
+14(short\))h
+15(is)h
+14(the)h
+15(same)h
+13(as)h
+15(an)h
+14(error)h
+15(except)h
+295 1682(that)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(terminates)h
+13(the)h
+15(curren)h
+-1(t)h
+15(phase)h
+15(imm)h
+-2(ediately)h
+-3(.)h
+556 1750(A)s
+11(fatal)h
+9(error)h
+12(causes)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+10(not)h
+11(only)h
+10(to)h
+10(terminate)h
+11(the)h
+11(curren)h
+-1(t)h
+12(phase)h
+295 1800(and)s
+13(run)h
+13(imm)h
+-2(ediately)h
+-3(,)h
+10(but)h
+13(also)h
+12(to)h
+12(terminate)h
+12(total)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(pro)h
+1(cessing)h
+14(imm)h
+-1(ediately)h
+-4(.)h
+295 1850(A)s
+14(sev)h
+-1(ere)h
+16(error)h
+15(will)h
+12(not)h
+14(cause)h
+15(a)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(script)h
+15(to)h
+14(terminate,)h
+13(but)h
+14(a)h
+13(fatal)h
+13(error)h
+15(will.)h
+295 1900(A)s
+14(fatal)h
+13(error)h
+15(causes)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(to)h
+14(return)h
+15(con)h
+-1(trol)h
+14(to)h
+14(the)h
+14(op)h
+1(erating)h
+14(system.)h
+652 1969(An)s
+13(assertion)h
+13(error)h
+14(o)h
+1(ccurs)h
+14(if)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(detects)h
+14(an)h
+13(in)h
+-1(ternal)h
+12(incon-)h
+295 2018(sistency)s
+-3(,)h
+13(in)h
+12(whic)h
+-1(h)h
+12(case)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+11(terminates)h
+12(imm)h
+-1(ediately)h
+10(and)h
+12(ungracefully)h
+-3(.)h
+16(Suc)h
+-1(h)h
+13(an)h
+295 2068(error)s
+16(can)h
+16(o)h
+1(ccur)h
+16(only)h
+14(if)h
+15(there)h
+16(are)h
+16(bugs)h
+15(in)h
+15(F)h
+-3(unnelW)h
+-3(eb.)h
+22(With)h
+14(luc)h
+-1(k,)h
+15(suc)h
+-1(h)h
+16(errors)h
+16(will)h
+14(b)h
+1(e)h
+295 2118(extremely)s
+14(rare.)h
+177 2187(F)s
+-3(unnelW)h
+-3(eb)h
+10(indicates)h
+10(the)h
+11(lev)h
+-1(el)h
+9(of)h
+10(sev)h
+-1(erit)h
+-1(y)h
+11(of)h
+9(eac)h
+-1(h)h
+11(diagnostic)h
+9(that)h
+10(it)h
+10(issues)h
+11(b)h
+-1(y)h
+10(starting)h
+10(eac)h
+-1(h)h
+10(diagnostic)h
+177 2236(either)s
+11(with)h
+10(the)h
+11(full)h
+9(name)h
+9(of)h
+10(the)h
+11(sev)h
+-1(erit)h
+-1(y)h
+10(lev)h
+-1(el)h
+10(or)h
+11(with)h
+10(just)h
+10(the)h
+11(\014rst)h
+11(letter)h
+11(of)h
+10(the)h
+11(sev)h
+-1(erit)h
+-1(y)h
+10(lev)h
+-1(el)h
+10(follo)h
+-1(w)h
+-1(ed)h
+177 2286(b)s
+-1(y)h
+14(a)h
+13(colon.)h
+177 2355(F)s
+-3(unnelW)h
+-3(eb)h
+12(con)h
+-1(v)h
+-1(eys)h
+13(the)h
+12(presence)h
+15(or)h
+12(absence)h
+14(of)h
+11(diagnostics)h
+12(at)h
+12(the)h
+13(op)h
+1(erating)h
+12(system)h
+12(lev)h
+-1(el)h
+12(b)h
+-1(y)h
+12(return-)h
+177 2405(ing)s
+280(status)h
+13(if)h
+12(no)h
+12(diagnostics)h
+12(o)h
+1(ccurred)h
+14(during)h
+13(the)h
+13(run)h
+12(and)h
+281(status)h
+13(if)h
+12(one)h
+177 2454(or)s
+14(more)h
+13(diagnostics)h
+14(\(including)h
+13(w)h
+-1(arnings\))h
+13(o)h
+1(ccurred)h
+16(during)h
+13(the)h
+15(run.)h
+177 2718(One)s
+16(of)h
+15(the)h
+15(design)h
+16(goals)h
+14(of)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+15(w)h
+-1(as)h
+15(to)h
+15(pro)h
+-1(vide)h
+15(a)h
+303(indep)h
+1(enden)h
+-1(t)h
+17(literate)h
+15(pro-)h
+177 2768(gramm)s
+-1(ing)h
+10(system.)h
+18(This)h
+12(goal)h
+12(has)h
+13(b)h
+1(een)h
+14(ac)h
+-1(hiev)h
+-1(ed)h
+13(simply)h
+11(b)h
+-1(y)h
+13(treating)h
+12(the)h
+14(text)h
+13(written)h
+14(to)h
+12(the)h
+14(pro)h
+1(duct)h
+1042 2940(65)s
+14 2 336 2405 r
+14 2 1552 2405 r
+709 2 177 2797 r
+66 @eop
+67 @bop0
+67 @bop1
+cmti10.300 sf
+1776 42(typ)s
+-2(esetter)h
+409 1610(verb)s
+cmbx10.300 sf
+1737 653(t)s
+-1(yp)h
+1(esetter)h
+177 702(directiv)s
+-2(es)h
+cmbx12.300 sf
+177 1400(3.7.1)s
+55(In)h
+-2(v)h
+-2(oking)h
+19(F)h
+-5(unnelW)h
+-5(eb)h
+cmbx10.432 sf
+177 1266(3.7)s
+70(Com)h
+-1(m)h
+-3(and)h
+22(Line)h
+22(In)h
+-2(terface)h
+cmtt10.300 sf
+944 42(tt)s
+21(font)h
+476 852(typesetter)s
+177 1793($)s
+22(rename)h
+20(file1)h
+21(file2)h
+650 1926(rename)s
+687(file1)h
+20(file2)h
+739 1976($)s
+355(2)h
+1244 2519(fw)s
+177 2652(FunnelWeb_ver)s
+-1(b)h
+20(=)h
+43("fw")h
+1110 2785(funweb)s
+66(fun)h
+147(funnelweb)h
+177 2835(web)s
+64(fweb)h
+cmr10.300 sf
+177 42(\014le)s
+15(as)h
+15(homogeneous)h
+14(and)h
+15(t)h
+-1(yp)h
+1(esetting)h
+16(it)h
+15(in)h
+168(.)h
+21(A)h
+15(secondary)h
+16(goal)h
+14(w)h
+-1(as)h
+15(to)h
+15(pro)h
+-1(vide)h
+15(a)h
+177 91(indep)s
+1(enden)h
+-1(t)h
+16(literate)h
+15(programmi)h
+-1(ng)h
+13(system.)h
+21(By)h
+15(this)h
+15(is)h
+14(mean)h
+-1(t)h
+14(that)h
+15(it)h
+14(b)h
+1(e)h
+16(p)h
+1(ossible)h
+15(to)h
+15(create)h
+16(F)h
+-3(unnel-)h
+177 141(W)s
+-3(eb)h
+13(input)h
+13(\014les)h
+14(that)h
+13(do)h
+13(not)h
+14(con)h
+-1(tain)h
+12(t)h
+-1(yp)h
+1(esetter)h
+1(-sp)h
+1(e)h
+1(ci\014c)h
+15(comma)h
+-1(nds.)h
+17(T)h
+-3(o)h
+12(a)h
+13(lesser)h
+15(exten)h
+-1(t)h
+14(this)h
+14(goal)h
+12(has)h
+177 191(also)s
+13(b)h
+1(een)h
+15(ac)h
+-1(hiev)h
+-1(ed.)h
+177 272(The)s
+16(di\016cult)h
+-1(y)h
+15(with)h
+16(pro)h
+-1(viding)h
+15(t)h
+-1(yp)h
+1(esetter-indep)h
+1(e)h
+1(nden)h
+-1(t)h
+18(t)h
+-1(yp)h
+1(esetting)h
+17(is)h
+16(that)h
+15(eac)h
+-1(h)h
+17(desired)h
+17(t)h
+-1(yp)h
+1(esetting)h
+177 322(feature)s
+14(m)h
+-1(ust)h
+12(b)h
+1(e)h
+13(recreate)h
+1(d)h
+15(in)h
+12(a)h
+13(t)h
+-1(yp)h
+1(esetter-indep)h
+1(e)h
+1(nden)h
+-1(t)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(t)h
+-1(yp)h
+1(esetting)h
+14(construct)h
+14(that)h
+13(F)h
+-3(un-)h
+177 372(nelW)s
+-3(eb)h
+12(can)h
+11(translate)h
+13(in)h
+-1(to)h
+11(whatev)h
+-1(er)h
+12(t)h
+-1(yp)h
+1(esetting)h
+13(language)h
+10(is)h
+12(b)h
+1(eing)h
+12(targeted)h
+12(b)h
+-1(y)h
+12(W)h
+-3(ea)h
+-1(v)h
+-1(e.)h
+16(T)h
+-3(ak)h
+-1(en)h
+12(to)h
+11(the)h
+177 422(extreme,)s
+14(this)h
+14(w)h
+-1(ould)h
+14(result)h
+15(in)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(pro)h
+-1(viding)h
+13(the)h
+15(full)h
+13(syn)h
+-1(tactic)h
+15(and)h
+14(seman)h
+-1(tic)h
+13(p)h
+1(o)h
+-1(w)h
+-1(er)h
+14(of)h
+14(T)h
+1883 431(E)s
+1906 422(X,)s
+177 472(but)s
+18(with)h
+16(a)h
+17(more)h
+16(generic,)h
+19(F)h
+-3(unnelW)h
+-3(eb-sp)h
+1(eci\014c)h
+18(syn)h
+-1(tax.)h
+27(This)h
+17(w)h
+-1(as)h
+17(unfeasible)h
+17(in)h
+17(the)h
+18(time)h
+15(a)h
+-1(v)h
+-2(ailable,)h
+177 521(and)s
+14(undesirable)h
+14(as)h
+14(w)h
+-1(ell.)h
+177 603(The)s
+22(compromi)h
+-1(se)h
+21(struc)h
+-1(k)h
+22(in)h
+22(the)h
+22(F)h
+-3(unnelW)h
+-3(eb)h
+21(design)h
+22(is)h
+21(to)h
+22(pro)h
+-1(vide)h
+21(a)h
+22(set)h
+22(of)h
+21(primitiv)h
+-1(e)h
+20(t)h
+-1(yp)h
+1(esetter-)h
+177 653(indep)s
+1(enden)h
+-1(t)h
+15(t)h
+-1(yp)h
+1(esetting)h
+14(features)h
+15(that)h
+14(are)h
+14(impl)h
+-1(em)h
+-1(en)h
+-1(ted)h
+13(b)h
+-1(y)h
+13(F)h
+-3(unnelW)h
+-3(eb.)h
+17(These)h
+15(are)h
+14(the)h
+378 702(.)s
+33(If)h
+20(the)h
+20(user)h
+21(is)h
+19(prepared)h
+21(to)h
+20(restrict)h
+21(to)h
+19(these)h
+21(directiv)h
+-1(es,)h
+22(then)h
+20(the)h
+21(user's)h
+20(F)h
+-3(unnelW)h
+-3(eb)h
+177 752(do)s
+1(cumen)h
+-1(t)h
+16(will)h
+15(b)h
+1(e)h
+16(b)h
+1(oth)h
+17(target-language)h
+15(and)h
+16(t)h
+-1(yp)h
+1(esetter)h
+19(indep)h
+1(enden)h
+-1(t.)h
+26(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+17(if)h
+15(the)h
+17(user)h
+17(wishes)h
+177 802(to)s
+16(use)h
+17(the)h
+16(more)h
+15(sophisticated)h
+17(features)h
+17(of)h
+15(the)h
+17(target)h
+16(t)h
+-1(yp)h
+1(esetting)h
+17(system,)h
+16(the)h
+16(user)h
+17(can)h
+17(sp)h
+1(ecify)h
+16(the)h
+177 852(t)s
+-1(yp)h
+1(esetter)h
+16(in)h
+13(a)h
+14(\\)h
+220(")h
+11(pragma)h
+12(and)h
+13(then)h
+15(place)h
+13(t)h
+-1(yp)h
+1(esette)h
+1(r)h
+16(comm)h
+-1(ands)h
+12(in)h
+13(the)h
+14(free)h
+15(text)h
+14(of)h
+13(the)h
+177 902(F)s
+-3(unnelW)h
+-3(eb)h
+15(do)h
+1(cumen)h
+-1(t)h
+15(where)h
+17(they)h
+16(will)h
+14(b)h
+1(e)h
+16(passed)h
+16(v)h
+-1(erbatim)h
+14(to)h
+15(the)h
+16(do)h
+1(cumen)h
+-1(tation)h
+15(\014le.)h
+22(The)h
+16(c)h
+-1(hoice)h
+177 952(of)s
+13(the)h
+15(trade-o\013)h
+14(b)h
+1(et)h
+-1(w)h
+-1(een)h
+16(t)h
+-1(yp)h
+1(esetter)h
+16(indep)h
+1(endence)h
+16(and)h
+14(t)h
+-1(yp)h
+1(esetting)h
+14(p)h
+1(o)h
+-1(w)h
+-1(er)h
+15(is)h
+13(left)h
+14(to)h
+14(the)h
+14(user.)h
+177 1033(This)s
+14(said,)h
+13(exp)h
+1(erience)h
+17(with)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(V1)h
+14(o)h
+-1(v)h
+-1(er)h
+14(a)h
+13(three)h
+16(y)h
+-1(ear)h
+14(p)h
+1(erio)h
+1(d,)h
+14(indicates)h
+14(that)h
+14(the)h
+15(t)h
+-1(yp)h
+1(esetting)h
+177 1083(facilities)s
+13(pro)h
+-1(vided)h
+14(b)h
+-1(y)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(are)h
+14(su\016cien)h
+-1(t)h
+14(for)h
+14(most)h
+13(do)h
+1(cumen)h
+-1(tation.)h
+177 1511(When)s
+14(a)h
+13(user)h
+15(in)h
+-1(v)h
+-1(ok)h
+-1(es)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(at)h
+13(the)h
+14(op)h
+1(erating)h
+14(system)h
+13(comm)h
+-1(and)h
+12(lev)h
+-1(el,)h
+12(the)h
+15(user)h
+14(m)h
+-1(ust)h
+13(pro)h
+-1(vide)h
+13(a)h
+177 1561(comma)s
+-1(nd)h
+14(line)h
+16(instructing)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+16(what)h
+16(to)h
+16(do.)h
+24(T)h
+-1(ypically)h
+14(an)h
+16(op)h
+1(erating)h
+16(system)h
+16(comm)h
+-1(and)h
+14(line)h
+177 1610(consists)s
+14(of)h
+12(a)h
+101(indicating)h
+11(that)h
+13(a)h
+13(particular)h
+13(program)h
+11(should)h
+13(b)h
+1(e)h
+13(run,)h
+13(follo)h
+-1(w)h
+-1(ed)h
+12(b)h
+-1(y)h
+12(a)h
+13(list)h
+12(of)h
+13(options.)h
+177 1660(F)s
+-3(or)h
+14(example:)h
+177 1926(In)s
+20(this)h
+19(case,)h
+22(the)h
+20(v)h
+-1(erb)h
+20(is)h
+169(and)h
+20(the)h
+20(comm)h
+-1(and)h
+17(line)h
+20(options)h
+19(are)h
+260(.)h
+34(The)h
+20(en)h
+-1(tire)h
+177 1976(comma)s
+-1(nd)h
+12(line)h
+14(b)h
+1(egins)h
+14(with)h
+13(the)h
+51(and)h
+13(ends)h
+15(with)h
+14(the)h
+36(.)h
+177 2057(Op)s
+1(erating)h
+11(systems)h
+11(di\013er)h
+11(greatly)h
+10(in)h
+10(the)h
+11(depth)h
+11(with)h
+11(whic)h
+-1(h)h
+10(they)h
+11(pro)h
+1(cess)h
+12(their)h
+11(comma)h
+-1(nd)h
+9(lines,)h
+11(ranging)h
+177 2107(from)s
+8(systems)h
+10(that)h
+10(simply)h
+7(pass)h
+10(the)h
+11(en)h
+-1(tire)h
+10(comm)h
+-1(and)h
+8(line)h
+9(string)h
+10(to)h
+9(the)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+8(program)h
+8(\(e.g.)h
+10(MSDOS\))h
+177 2157(through)s
+14(to)h
+14(systems)h
+14(that)h
+13(p)h
+1(erform)h
+13(complete)h
+14(comm)h
+-1(and)h
+12(line)h
+13(parsing)h
+13(\(e.g.)h
+14(VMS\).)h
+13(Syn)h
+-1(tax)h
+14(con)h
+-1(v)h
+-1(en)h
+-1(tions)h
+177 2207(v)s
+-2(ary)h
+14(considerably)h
+-3(.)h
+177 2288(So)s
+18(as)h
+18(to)h
+18(ac)h
+-1(hiev)h
+-1(e)h
+19(maxi)h
+-1(m)h
+-2(um)h
+14(p)h
+1(ortabilit)h
+-1(y)h
+17(and)h
+18(consistency)h
+20(of)h
+17(in)h
+-1(v)h
+-1(o)h
+1(cation)h
+17(across)h
+19(di\013eren)h
+-1(t)h
+19(platforms,)h
+177 2338(F)s
+-3(unnelW)h
+-3(eb)h
+19(reads)h
+20(its)h
+19(comma)h
+-1(nd)h
+18(line)h
+18(as)h
+20(a)h
+19(ra)h
+-1(w)h
+19(string)h
+19(and)h
+19(p)h
+1(erforms)h
+19(all)h
+18(its)h
+19(o)h
+-1(wn)h
+19(parsing.)h
+34(This)h
+19(is)h
+177 2388(p)s
+1(ortable)h
+12(b)h
+1(ecause,)h
+14(at)h
+11(the)h
+13(v)h
+-1(ery)h
+12(least,)h
+12(all)h
+11(op)h
+1(erating)h
+11(systems)h
+12(allo)h
+-1(w)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+11(programs)h
+10(access)h
+14(to)h
+12(the)h
+12(ra)h
+-1(w)h
+177 2438(comma)s
+-1(nd)h
+12(line.)h
+177 2519(The)s
+14(command)h
+12(v)h
+-1(erb)h
+14(used)h
+15(to)h
+13(in)h
+-1(v)h
+-1(ok)h
+-1(e)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(should)h
+14(b)h
+1(e)h
+14(\\)h
+44(".)h
+177 2785(If)s
+14(this)h
+14(v)h
+-1(erb)h
+15(is)h
+14(not)h
+14(a)h
+-1(v)h
+-2(aila)h
+-1(ble,)h
+12(some)h
+13(alternativ)h
+-1(es)h
+14(are)h
+15(\\)h
+132(",)h
+12(\\)h
+66(",)h
+12(and)h
+14(\\)h
+198(".)h
+16(The)h
+15(v)h
+-1(erbs)h
+256 2835(or)s
+115(should)h
+14(b)h
+1(e)h
+14(a)h
+-1(v)h
+-1(oided)h
+13(as)h
+14(they)h
+15(are)h
+14(the)h
+15(names)h
+13(of)h
+13(other)h
+14(literate)h
+15(programm)h
+-1(i)h
+-1(ng)h
+12(systems.)h
+1042 2940(66)s
+67 @eop
+68 @bop0
+cmti10.300 sf
+[<0001FC3C00060E67000C0EC7001C0DC6001C01C0003801C00038038000380380003803
+80003803800070038007FFFFF800700700007007000070070000E0070000E00E0000E00E
+0000E00E0000E00E0001C00E0001C01C0001C01C0001C01C0001C01C0003801C00038038
+00038038000380380003003800070030000700700006006000C6606000E470C000C86180
+00703E0000>
+32 37 1 28 25] 11 dc
+68 @bop1
+cmbx12.300 sf
+177 42(3.7.2)s
+55(Command)h
+17(Line)h
+18(Argumen)h
+-2(ts)h
+cmbx10.300 sf
+177 208(argumen)s
+-1(ts)h
+942 777(sign)s
+281(letter)h
+313(string)h
+1258 1632(options)s
+cmti10.300 sf
+1430 543(insensitive)s
+1784 593(pr)s
+-2(eserves)h
+386 1781(string)s
+144(b)h
+-2(o)h
+-2(ole)h
+-2(an)h
+1016(on)h
+68(o\013)h
+177 2066(indep)s
+-2(endently)h
+242 2400(o\013)s
+cmtt10.300 sf
+177 350(FunnelWeb_com)s
+-1(mand_)h
+-1(line)h
+19(=)h
+22(FunnelWeb_ver)h
+-1(b)h
+20({{")h
+21("}+)h
+21(argument})h
+177 970(argument)s
+42(=)h
+22(sign)h
+21(id_letter)h
+20([non_blank_)h
+-1(stri)h
+-1(ng])h
+177 1020(sign)s
+130(=)h
+22("+")h
+21(|)h
+21("-")h
+22(|)h
+21("=")h
+177 1069(id_letter)s
+20(=)h
+22("B")h
+21(|)h
+21("C")h
+22(|)h
+21("D")h
+21(|)h
+22("F")h
+21(|)h
+22("H")h
+21(|"I")h
+21(|)h
+21("J")h
+22(|)h
+21("K")h
+21(|)h
+439 1119("L")s
+21(|)h
+21("O")h
+22(|)h
+21("Q")h
+21(|)h
+22("S")h
+21(|)h
+22("T")h
+21(|)h
+21("W")h
+22(|)h
+21("X")h
+177 1404(argument)s
+20(=)h
+22(non_blank_st)h
+-1(ring_)h
+-1(not_b)h
+-1(eginn)h
+-1(ing_)h
+-1(with_)h
+-1(+_=_o)h
+-1(r_-)h
+1212 1547(+F)s
+655 2066(+)s
+613(-)h
+615(=)h
+1147 2350(fw)s
+21(+t)h
+21(-t)h
+339(t)h
+1680 2500(.typ)s
+1127 2550(.login)s
+177 2692(alias)s
+21(fw)h
+21(fw)h
+22(+d)h
+21(+t.typ)h
+cmr10.300 sf
+177 158(F)s
+-3(ollo)h
+-1(wing)h
+14(the)h
+17(v)h
+-1(erb)h
+17(is)h
+17(the)h
+17(b)h
+1(o)h
+1(dy)h
+17(of)h
+16(the)h
+17(comm)h
+-1(and)h
+15(line)h
+16(whic)h
+-1(h)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+16(parses)h
+18(in)h
+-1(to)h
+16(zero)h
+17(or)h
+17(more)h
+409 208(separated)s
+15(b)h
+-1(y)h
+13(runs)h
+15(of)h
+13(one)h
+14(or)h
+14(more)h
+13(blanks.)h
+177 493(Because)s
+19(some)h
+15(op)h
+1(erating)h
+16(systems)h
+17(con)h
+-1(v)h
+-1(ert)h
+17(their)h
+17(comm)h
+-1(and)h
+15(line)h
+16(to)h
+16(upp)h
+1(er)h
+17(case)h
+18(b)h
+1(efore)h
+17(handing)h
+16(it)h
+16(to)h
+177 543(the)s
+17(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+16(program,)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+16(has)h
+17(b)h
+1(een)h
+18(constructed)h
+18(so)h
+17(as)h
+17(to)h
+16(b)h
+1(e)h
+224(to)h
+16(the)h
+17(case)h
+18(of)h
+16(its)h
+177 593(comma)s
+-1(nd)h
+10(line)h
+11(argumen)h
+-1(ts.)h
+16(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+12(when)h
+12(dealing)h
+11(in)h
+-1(ternally)h
+10(with)h
+12(argumen)h
+-1(ts,)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+177 642(the)s
+15(case)h
+16(of)h
+14(its)h
+15(comm)h
+-1(and)h
+12(line)h
+15(argumen)h
+-1(ts)h
+13(so)h
+15(that)h
+15(it)h
+14(will)h
+13(b)h
+1(e)h
+15(able)h
+15(to)h
+14(op)h
+1(erate)h
+16(with)h
+14(op)h
+1(erating)h
+15(systems)h
+177 692(\(suc)s
+-1(h)h
+15(as)h
+14(Unix\))h
+14(whose)h
+14(\014le)h
+14(names)h
+13(are)h
+14(case)h
+15(dep)h
+1(enden)h
+-1(t.)h
+177 777(A)s
+12(v)h
+-2(alid)h
+9(F)h
+-3(unnelW)h
+-3(eb)h
+11(argumen)h
+-1(t)h
+10(consists)h
+13(of)h
+10(a)h
+95(,)h
+10(an)h
+11(iden)h
+-1(tifying)h
+126(,)h
+9(and)h
+11(an)h
+11(optional)h
+142(with)h
+177 827(no)s
+14(spaces)h
+15(separating)h
+14(them.)h
+177 1262(In)s
+14(addition)h
+13(there)h
+15(is)h
+14(a)h
+13(sp)h
+1(ecial)h
+14(form)h
+13(of)h
+13(argumen)h
+-1(t)h
+13(that)h
+14(do)h
+1(es)h
+14(not)h
+14(b)h
+1(egin)h
+14(with)h
+13(a)h
+14(sign.)h
+177 1547(This)s
+14(form)h
+12(is)h
+14(exactly)h
+14(equiv)h
+-2(alen)h
+-1(t)h
+13(to)h
+14(the)h
+14(same)h
+13(string)h
+14(with)h
+14(\\)h
+44(")h
+13(prep)h
+1(ended)h
+16(to)h
+13(it.)h
+177 1632(The)s
+11(seman)h
+-1(tic)h
+10(e\013ect)h
+12(of)h
+10(these)h
+12(argumen)h
+-1(ts)h
+9(is)h
+11(de\014ned)h
+11(in)h
+10(terms)h
+10(of)h
+172(whic)h
+-1(h)h
+11(are)h
+10(the)h
+11(in)h
+-1(ternal)h
+11(param-)h
+177 1682(eters)s
+17(of)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(and)h
+15(whic)h
+-1(h)h
+15(corresp)h
+1(ond)h
+17(closely)h
+16(with)h
+15(the)h
+16(set)h
+16(of)h
+15(legal)h
+14(command)h
+13(line)h
+15(argumen)h
+-1(ts.)h
+177 1732(F)s
+-3(unnelW)h
+-3(eb)h
+15(has)h
+15(a)h
+15(prede\014ned)h
+17(set)h
+16(of)h
+14(options)h
+15(eac)h
+-1(h)h
+15(iden)h
+-1(ti\014ed)h
+15(b)h
+-1(y)h
+15(an)h
+15(iden)h
+-1(tifying)h
+14(letter)h
+16(ha)h
+-1(ving)h
+14(t)h
+-1(w)h
+-1(o)h
+14(at-)h
+177 1781(tributes:)s
+22(a)h
+118(,)h
+15(and)h
+15(a)h
+143(.)h
+23(The)h
+15(b)h
+1(o)h
+1(olean)h
+15(determines)h
+15(whether)h
+17(an)h
+15(option)h
+14(is)h
+15(turned)h
+76(or)h
+61(.)h
+177 1831(The)s
+14(string)h
+14(con)h
+-1(tains)h
+14(additional)h
+12(informatio)h
+-1(n)h
+12(dep)h
+1(ending)h
+15(on)h
+13(the)h
+15(option.)h
+177 1916(When)s
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(starts)h
+14(up,)h
+12(its)h
+13(options)h
+13(ha)h
+-1(v)h
+-1(e)h
+12(prede\014ned)h
+15(default)h
+12(v)h
+-2(alues.)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+12(then)h
+14(parses)h
+14(its)h
+177 1966(comma)s
+-1(nd)h
+15(line)h
+16(sequen)h
+-1(tially)h
+16(from)h
+14(left)h
+16(to)h
+17(righ)h
+-1(t)h
+16(executing)h
+17(the)h
+17(e\013ect)h
+18(of)h
+16(eac)h
+-1(h)h
+17(argumen)h
+-1(t)h
+15(on)h
+16(the)h
+17(argu-)h
+177 2016(men)s
+-1(t's)h
+14(corresp)h
+1(onding)h
+15(option.)h
+20(The)h
+15(sign)h
+14(and)h
+15(the)h
+15(string)h
+14(comp)h
+1(onen)h
+-1(ts)h
+15(of)h
+14(the)h
+15(argumen)h
+-1(t)h
+13(are)h
+15(pro)h
+1(cesse)h
+1(d)h
+422 2066(.)s
+31(A)h
+18(sign)h
+17(of)h
+57(turns)h
+19(the)h
+18(option)h
+17(on.)h
+30(A)h
+18(sign)h
+17(of)h
+57(turns)h
+18(the)h
+19(option)h
+17(o\013.)h
+29(A)h
+18(sign)h
+18(of)h
+177 2116(lea)s
+-1(v)h
+-1(es)h
+16(the)h
+17(option's)h
+15(b)h
+1(o)h
+1(olean)h
+16(attribute)h
+16(unc)h
+-1(hanged.)h
+25(The)h
+16(argumen)h
+-1(t)h
+15(string)h
+16(replaces)h
+17(the)h
+17(string)h
+16(of)h
+15(the)h
+177 2166(corresp)s
+1(onding)h
+16(option,)h
+14(unless)h
+15(the)h
+16(argumen)h
+-1(t)h
+13(string)h
+15(is)h
+15(empt)h
+-1(y)h
+-3(,)h
+13(in)h
+14(whic)h
+-1(h)h
+15(case)h
+16(the)h
+15(option)h
+14(string)h
+15(is)h
+15(not)h
+177 2215(c)s
+-1(hanged.)h
+177 2301(Because)s
+20(F)h
+-3(unnelW)h
+-3(eb)h
+17(pro)h
+1(cesses)h
+20(its)h
+18(comma)h
+-1(nd)h
+16(line)h
+18(argumen)h
+-1(ts)h
+17(from)h
+16(left)h
+17(to)h
+18(righ)h
+-1(t,)h
+18(a)h
+17(later)h
+18(argumen)h
+-1(t)h
+177 2350(can)s
+16(cancel)h
+17(the)h
+17(e\013ect)h
+18(of)h
+15(an)h
+16(earlier)h
+16(one.)h
+25(F)h
+-3(or)h
+16(example)h
+205(will)h
+15(result)h
+16(in)h
+16(the)h
+55(option)h
+15(ending)h
+177 2400(up)s
+65(.)h
+32(This)h
+18(allo)h
+-1(ws)h
+17(users)h
+20(to)h
+18(set)h
+19(up)h
+18(their)h
+19(o)h
+-1(wn)h
+18(default)h
+18(argumen)h
+-1(ts)h
+18(b)h
+-1(y)h
+18(de\014ning)h
+18(a)h
+18(sym)h
+-1(b)h
+1(ol)h
+17(in)h
+17(their)h
+177 2450(op)s
+1(erating)h
+13(system's)h
+13(comm)h
+-1(and)h
+11(language.)h
+17(F)h
+-3(or)h
+13(example,)h
+11(a)h
+13(Unix)h
+12(user)h
+15(who)h
+12(w)h
+-1(an)h
+-1(ts)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(to)h
+13(delete)h
+177 2500(all)s
+11(iden)h
+-1(tical)h
+12(output)h
+12(\014les)h
+12(and)h
+12(create)h
+14(a)h
+12(do)h
+1(cumen)h
+-1(tation)h
+11(\014le)h
+12(on)h
+12(eac)h
+-1(h)h
+13(run)h
+12(with)h
+12(a)h
+12(default)h
+111(extension)h
+177 2550(could)s
+14(simply)h
+12(place)h
+14(the)h
+14(follo)h
+-1(wing)h
+12(de\014nition)h
+13(in)h
+13(their)h
+15(\\)h
+132(")h
+12(\014le.)h
+177 2835(These)s
+15(default)h
+14(options)h
+13(can)h
+14(then)h
+15(later)h
+14(b)h
+1(e)h
+14(easily)h
+14(o)h
+-1(v)h
+-1(erridden)h
+14(on)h
+14(the)h
+14(comma)h
+-1(nd)h
+12(line.)h
+1042 2940(67)s
+68 @eop
+69 @bop0
+69 @bop1
+cmbx12.300 sf
+177 42(3.7.3)s
+55(Options)h
+cmbx10.300 sf
+295 273(B1)s
+49(B6:)h
+36(T)h
+-4(racedumps:)h
+295 1331(B7:)s
+21(Determi)h
+-1(ni)h
+-1(sm:)h
+295 1607(C:)s
+18(Listi)h
+-1(ng)h
+14(File)h
+15(Con)h
+-1(text:)h
+295 1983(D:)s
+19(Delete)h
+17(Iden)h
+-1(tical)h
+16(Output)h
+17(Files:)h
+295 2608(F:)s
+19(F)h
+-4(unnelW)h
+-4(eb)h
+16(Input)h
+17(File:)h
+295 2785(H:)s
+21(Displ)h
+-1(a)h
+-1(y)h
+18(Help)h
+19(Message:)h
+cmtt10.300 sf
+1484 423(1..6)s
+850 1154(B)s
+749(B)h
+1722 1204(+B134)s
+607 1254(B1)s
+25(B3)h
+106(B4)h
+29(-B1)h
+310(B1)h
+30(Default:)h
+20(-B123456)h
+798 1331(B7)s
+366 1481(B7)s
+1242(B)h
+500 1530(+B7)s
+25(-B7)h
+29(Default:)h
+20(-B7)h
+901 1607(C)s
+1787 1856(+C)s
+702 1906(+C100)s
+24(+C10)h
+30(Default:)h
+20(+C2)h
+458 2182(stack.h)s
+863(stack.h)h
+742 2232(stack.h)s
+911 2282(stack.h)s
+1240 2332(make)s
+648 2382(stack.fw)s
+772(stack.h)h
+295 2432(stack.c)s
+333(stack.fw)h
+218(stack.c)h
+348(stack.h)h
+1216 2481(#include)s
+20(stack.h)h
+879 2531(+D)s
+299(-D)h
+25(+D)h
+25(Default:)h
+20(-D)h
+1601 2658(+Fsloth.fw)s
+295 2708(+Fwalrus)s
+24(-F)h
+25(Default:)h
+20(-F)h
+cmr10.300 sf
+177 146(F)s
+-3(unnelW)h
+-3(eb's)h
+14(options)h
+15(are)h
+15(in)h
+-1(ternal)h
+14(parameters)h
+15(whic)h
+-1(h)h
+15(can)h
+15(b)h
+1(e)h
+15(mo)h
+1(di\014ed)h
+13(b)h
+-1(y)h
+15(corresp)h
+1(onding)h
+16(argumen)h
+-1(ts)h
+177 196(on)s
+14(F)h
+-3(unnelW)h
+-3(eb's)h
+13(comm)h
+-1(and)h
+12(line.)h
+18(A)h
+14(description)h
+14(of)h
+14(eac)h
+-1(h)h
+14(argumen)h
+-1(t)h
+13(and)h
+13(option)h
+14(follo)h
+-1(ws.)h
+353 273(.)s
+7(.)h
+7(.)h
+405(These)h
+22(six)h
+20(options)h
+21(ha)h
+-1(v)h
+-1(e)h
+20(b)h
+1(een)h
+22(pro)h
+-1(vided)h
+20(to)h
+21(assist)h
+21(in)h
+20(the)h
+295 323(debugging)s
+18(and)h
+19(testing)h
+19(of)h
+18(F)h
+-3(unnelW)h
+-3(eb.)h
+32(They)h
+19(determine)h
+19(whic)h
+-1(h)h
+18(of)h
+18(six)h
+19(p)h
+1(ossible)h
+19(trace)h
+295 373(dumps)s
+19(are)h
+20(to)h
+19(b)h
+1(e)h
+20(written)h
+20(to)h
+19(the)h
+21(listing)h
+18(\014le.)h
+35(Only)h
+19(the)h
+20(b)h
+1(o)h
+1(olean)h
+19(attributes)h
+20(of)h
+19(these)h
+295 423(options)s
+14(are)h
+14(ev)h
+-1(er)h
+15(used.)h
+19(The)h
+14(six)h
+14(dumps)h
+13(are)h
+14(iden)h
+-1(ti\014ed)h
+14(b)h
+-1(y)h
+14(the)h
+14(digits)h
+114(as)h
+14(follo)h
+-1(ws:)h
+228 545(1.)s
+20(Dump)h
+12(a)h
+14(hexdump)h
+13(of)h
+13(eac)h
+-1(h)h
+15(mapp)h
+1(ed)h
+12(input)h
+14(and)h
+14(include)h
+14(\014le.)h
+228 632(2.)s
+20(Dump)h
+12(the)h
+15(global)h
+12(line)h
+13(list)h
+14(created)h
+15(b)h
+-1(y)h
+14(the)h
+14(scanner.)h
+228 720(3.)s
+20(Dump)h
+12(the)h
+15(tok)h
+-1(en)h
+14(list)h
+13(created)h
+16(b)h
+-1(y)h
+13(the)h
+15(scanner.)h
+228 807(4.)s
+20(Dump)h
+12(the)h
+15(macro)h
+12(table)h
+14(created)h
+16(b)h
+-1(y)h
+13(the)h
+15(parser.)h
+228 895(5.)s
+20(Dump)h
+12(the)h
+15(do)h
+1(cumen)h
+-1(t)h
+13(list)h
+14(created)h
+15(b)h
+-1(y)h
+14(the)h
+14(parser.)h
+228 983(6.)s
+20(Dump)h
+12(a)h
+14(table)h
+14(summ)h
+-1(arizing)h
+11(CPU)h
+15(and)h
+13(real)h
+14(time)h
+13(usage.)h
+295 1105(Because)s
+18(these)h
+16(options)h
+15(are)h
+16(so)h
+16(closely)h
+15(related,)h
+16(a)h
+15(hac)h
+-1(k)h
+15(has)h
+16(b)h
+1(een)h
+17(pulled)h
+15(to)h
+15(enable)h
+15(them)h
+295 1154(to)s
+16(all)h
+16(to)h
+16(b)h
+1(e)h
+17(con)h
+-1(trolled)h
+16(b)h
+-1(y)h
+16(the)h
+55(argumen)h
+-1(t.)h
+24(The)h
+17(string)h
+16(argumen)h
+-1(t)h
+16(to)h
+16(the)h
+55(argumen)h
+-1(t)h
+295 1204(determines)s
+15(whic)h
+-1(h)h
+14(of)h
+13(the)h
+15(six)h
+14(options)h
+14(are)h
+14(to)h
+14(b)h
+1(e)h
+15(a\013ected)h
+15(b)h
+-1(y)h
+14(the)h
+15(sign.)h
+18(Examples:)h
+295 1254(turns)s
+15(on)h
+14(options)h
+57(,)h
+57(,)h
+13(and)h
+58(.)h
+97(turns)h
+14(o\013)h
+14(option)h
+57(.)h
+390(.)h
+688 1331(If)s
+12(the)h
+69(option)h
+12(is)h
+12(turned)h
+13(on,)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(suppresse)h
+1(s)h
+14(the)h
+13(output)h
+295 1381(of)s
+13(an)h
+-1(ything)h
+13(non-deterministic,)h
+13(or)h
+14(mac)h
+-1(hine)h
+12(dep)h
+1(enden)h
+-1(t.)h
+20(This)h
+14(assists)h
+14(in)h
+14(regression)h
+15(test-)h
+295 1431(ing.)s
+23(Only)h
+16(the)h
+16(b)h
+1(o)h
+1(olean)h
+15(attribute)h
+16(is)h
+16(used)h
+17(in)h
+15(this)h
+16(option.)h
+22(This)h
+16(option)h
+15(is)h
+15(con)h
+-1(trolled)h
+16(b)h
+-1(y)h
+295 1481(the)s
+71(argumen)h
+-1(t)h
+13(whic)h
+-1(h)h
+13(falls)h
+12(under)h
+14(the)h
+14(same)h
+13(argumen)h
+-1(t)h
+12(syn)h
+-1(tax)h
+14(as)h
+13(the)h
+14(other)h
+49(options.)h
+295 1530(Examples:)s
+83(,)h
+79(.)h
+279(.)h
+815 1607(The)s
+51(option)h
+14(is)h
+14(alw)h
+-1(a)h
+-1(ys)h
+14(turned)h
+15(on)h
+15(and)h
+14(cannot)h
+15(b)h
+1(e)h
+15(turned)h
+295 1657(o\013.)s
+24(Its)h
+16(only)h
+15(attribute)h
+16(is)h
+16(a)h
+16(n)h
+-1(um)h
+-1(b)h
+1(er)h
+15(whic)h
+-1(h)h
+15(determines)h
+16(the)h
+17(n)h
+-1(um)h
+-1(b)h
+1(er)h
+15(of)h
+15(lines)h
+16(of)h
+15(con)h
+-1(text)h
+295 1707(that)s
+18(the)h
+18(lister)h
+18(will)h
+16(place)h
+17(around)h
+18(lines)h
+17(\015agged)h
+17(with)h
+17(diagnostics)h
+17(in)h
+17(the)h
+19(listing)h
+16(\014le)h
+17(\(if)h
+295 1757(a)s
+16(listing)h
+14(\014le)h
+16(is)h
+16(written\).)h
+24(A)h
+16(v)h
+-2(alue)h
+15(of)h
+16(100)h
+15(indicates)h
+16(in\014nite)h
+15(con)h
+-1(text)h
+17(whic)h
+-1(h)h
+16(means)h
+15(that)h
+295 1807(the)s
+18(en)h
+-1(tire)h
+17(listing)h
+15(\014le)h
+17(will)h
+15(b)h
+1(e)h
+17(written)h
+18(out)h
+16(if)h
+16(a)h
+16(single)h
+16(diagnostic)h
+16(o)h
+1(ccurs.)h
+28(The)h
+17(v)h
+-2(alue)h
+16(of)h
+295 1856(this)s
+16(n)h
+-1(um)h
+-1(b)h
+1(er)h
+15(can)h
+16(b)h
+1(e)h
+16(sp)h
+1(eci\014ed)h
+18(b)h
+-1(y)h
+15(sp)h
+1(ecifying)h
+16(it)h
+15(as)h
+16(a)h
+15(string)h
+16(of)h
+15(decimal)h
+14(digits)h
+15(to)h
+16(the)h
+295 1906(argumen)s
+-1(t.)h
+17(Examples:)h
+127(,)h
+100(.)h
+280(.)h
+1023 1983(Only)s
+16(the)h
+17(b)h
+1(o)h
+1(olean)h
+17(attribute)h
+17(of)h
+15(this)h
+17(option)h
+16(is)h
+295 2033(used.)s
+23(When)h
+15(turned)h
+16(on,)h
+15(the)h
+16(option)h
+14(causes)h
+16(the)h
+16(suppression)h
+17(\(deletion\))h
+15(of)h
+14(pro)h
+1(duct)h
+16(\014les)h
+295 2083(and)s
+19(do)h
+1(cumen)h
+-1(tation)h
+18(\014les)h
+20(\(but)h
+20(not)h
+19(listing)h
+18(or)h
+19(journal)h
+19(\014les\))h
+19(that)h
+20(are)h
+19(iden)h
+-1(tical)h
+19(to)h
+19(the)h
+295 2133(curren)s
+-1(tly)h
+14(existing)h
+13(\014les)h
+14(of)h
+13(the)h
+13(same)h
+13(name.)h
+16(F)h
+-3(or)h
+13(example,)h
+12(if)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(is)h
+13(instructed)h
+15(to)h
+295 2182(generate)s
+176(as)h
+11(an)h
+11(pro)h
+1(duct)h
+12(\014le,)h
+11(and)h
+10(the)h
+12(text)h
+11(to)h
+11(b)h
+1(e)h
+12(written)h
+11(to)h
+175(is)h
+10(iden)h
+-1(tical)h
+295 2232(to)s
+12(the)h
+13(curren)h
+-1(tly)h
+13(existing)h
+166(,)h
+11(then)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+11(will)h
+11(simply)h
+10(not)h
+12(write)h
+13(an)h
+-1(y)h
+12(pro)h
+1(duct)h
+295 2282(\014le,)s
+13(lea)h
+-1(ving)h
+11(the)h
+13(curren)h
+-1(tly)h
+14(existing)h
+177(as)h
+13(it)h
+12(is)h
+13(\(and)h
+13(in)h
+12(particular)h
+12(lea)h
+-1(ving)h
+12(the)h
+13(\014le's)h
+295 2332(date)s
+11(attribute)h
+11(the)h
+11(same\).)h
+17(This)h
+10(prev)h
+-1(en)h
+-1(ts)h
+12(unnecessary)h
+110(propagations.)h
+16(F)h
+-3(or)h
+10(example,)h
+295 2382(in)s
+16(a)h
+15(C)h
+16(program,)h
+14(if)h
+205(is)h
+16(a)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+16(input)h
+15(\014le)h
+16(that)h
+16(generates)h
+186(and)h
+449 2432(,)s
+9(a)h
+10(mo)h
+1(di\014catio)h
+-1(n)h
+8(to)h
+194(that)h
+10(a\013ects)h
+174(but)h
+10(do)h
+1(es)h
+11(not)h
+9(a\013ect)h
+295 2481(will)s
+10(not)h
+12(pro)h
+-1(v)h
+-1(ok)h
+-1(e)h
+11(the)h
+13(recompilatio)h
+-1(n)h
+10(of)h
+11(mo)h
+1(dules)h
+11(that)h
+362(,)h
+10(so)h
+12(long)h
+10(as)h
+12(the)h
+295 2531(in)s
+-1(terv)h
+-1(ening)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(run)h
+15(has)h
+71(set.)h
+19(Examples:)h
+61(,)h
+57(.)h
+253(.)h
+860 2608(If)s
+16(this)h
+16(option)h
+16(is)h
+16(turned)h
+17(on,)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+16(pro)h
+1(cesses)h
+19(the)h
+295 2658(input)s
+20(\014le)h
+21(whose)h
+20(name)h
+19(is)h
+20(sp)h
+1(eci\014ed)h
+22(b)h
+-1(y)h
+20(the)h
+21(option)h
+20(string.)h
+37(Examples:)h
+249(,)h
+471 2708(,)s
+56(.)h
+253(.)h
+873 2785(If)s
+17(this)h
+17(option)h
+17(is)h
+17(turned)h
+19(on,)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+17(displa)h
+-1(ys)h
+17(the)h
+295 2835(message)s
+14(sp)h
+1(eci\014ed)h
+15(b)h
+-1(y)h
+13(the)h
+14(argumen)h
+-1(t)h
+12(string.)h
+18(Eac)h
+-1(h)h
+14(message)h
+14(has)h
+13(a)h
+13(name.)h
+17(The)h
+14(main)h
+12(help)h
+1042 2940(68)s
+69 @eop
+70 @bop0
+cmtt8.300 sf
+[<FFFEFFFEE38EE38EE38E03800380038003800380038003800380038003800380038003
+801FF01FF0>
+16 20 -1 19 18] 84 dc
+cmbx10.300 sf
+[<003FE00001F07C0003C01E000F800F801F0007C01F0007C03E0003E07E0003F07C0001
+F07C0001F0FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001
+F87C0001F07C0001F07E0003F03E0003E03E0703E01F08C7C00F906F8003D03E0001F87C
+00003FF8080000180800001C1800001FF800001FF800000FF000000FF0000007E0000003
+C0>
+32 36 -3 27 36] 81 dc
+70 @bop1
+cmr7.300 sf
+1034 1913(3)s
+cmr6.300 sf
+223 2783(3)s
+cmtt8.300 sf
+774 2795(T)s
+cmr8.300 sf
+241 2795(This)s
+17(option)h
+16(is)h
+17(con)h
+-1(troll)h
+-1(ed)h
+15(b)h
+-1(y)h
+17(the)h
+52(comma)h
+-1(nd)h
+15(line)h
+16(argumen)h
+-1(t)h
+15(b)h
+1(ecause)h
+15(do)h
+1(cumen)h
+-1(t)h
+-1(ati)h
+-1(on)h
+15(\014les)h
+17(used)h
+16(to)h
+17(b)h
+1(e)h
+17(called)h
+177 2835(t)s
+-1(yp)h
+1(esetter)h
+9(\014les.)h
+cmbx10.300 sf
+295 165(I:)s
+16(Include)h
+14(default)h
+14(\014le)h
+14(sp)h
+1(eci\014cation)h
+-1(:)h
+295 388(J:)s
+17(Journal)h
+14(File:)h
+295 711(K:)s
+20(Keyb)h
+1(oard:)h
+295 885(L:)s
+17(Listin)h
+-1(g)h
+15(File:)h
+295 1058(O:)s
+18(Pro)h
+1(duct)h
+15(Files:)h
+1254 1208(O)s
+295 1332(Q:)s
+15(Quiet:)h
+295 1605(S:)s
+13(Screen:)h
+295 1928(T:)s
+18(Do)h
+1(cumen)h
+-1(tati)h
+-1(on)h
+15(\014le:)h
+295 2201(W:)s
+18(Width)h
+16(of)h
+16(Pro)h
+1(duct)h
+16(Files:)h
+295 2673(X:)s
+19(Execute:)h
+cmtt10.300 sf
+641 42(menu)s
+295 91(+Hregistration)s
+23(+Hoptions)h
+28(Default:)h
+20(-Hmenu)h
+743 315(=I/usr/dave/inc)s
+-1(ludes)h
+-1(/)h
+28(Default:)h
+20(+I)h
+1391 488(Q)s
+295 638(+Jjournfile)s
+23(-J)h
+25(Default:)h
+20(-J)h
+873 811(+K)s
+25(-K)h
+25(Default:)h
+20(-K)h
+1079 985(+L)s
+25(-L)h
+25(+Llisting.lis)h
+28(Default:)h
+20(-L)h
+1809 1158(O)s
+1776 1208(-O)s
+295 1258(+O/usr/dave/pr)s
+-1(oduct)h
+-1(/)h
+28(Default:)h
+20(+O)h
+1132 1531(-Q)s
+25(+Q)h
+25(Default:)h
+20(-Q)h
+1117 1754(S)s
+295 1854(-S)s
+25(+S6)h
+25(+S0)h
+29(Default:)h
+20(-S)h
+1201 2127(-T)s
+25(+Tsloth.tex)h
+28(Default:)h
+20(-T)h
+1521 2350(W)s
+367 2599(W)s
+625(-W)h
+25(+W100)h
+29(Default:)h
+20(-W80)h
+1289 2723(+Xmaster)s
+23(-X)h
+25(Default:)h
+21(-X)h
+cmr10.300 sf
+295 42(message)s
+16(is)h
+16(called)h
+15(\\)h
+88(")h
+15(and)h
+16(con)h
+-1(tains)h
+16(a)h
+15(list)h
+16(of)h
+15(the)h
+16(other)h
+17(help)h
+16(messages.)h
+24(Examples:)h
+602 91(,)s
+210(.)h
+344(.)h
+1038 165(This)s
+14(option)h
+13(is)h
+14(alw)h
+-1(a)h
+-1(ys)h
+12(turned)h
+15(on)h
+14(and)h
+13(cannot)h
+295 215(b)s
+1(e)h
+16(turned)h
+16(o\013.)h
+22(Its)h
+16(string)h
+15(attribute)h
+16(is)h
+15(used)h
+16(as)h
+15(the)h
+16(default)h
+15(\014le)h
+15(sp)h
+1(eci\014cation)h
+16(for)h
+15(include)h
+295 265(\014les.)s
+18(Usually)h
+12(this)h
+12(option)h
+12(is)h
+12(used)h
+13(to)h
+12(sp)h
+1(ecify)h
+13(a)h
+12(directory)h
+13(from)h
+11(whic)h
+-1(h)h
+12(include)h
+12(\014les)h
+13(should)h
+295 315(b)s
+1(e)h
+15(obtained.)h
+18(Examples:)h
+476(.)h
+256(.)h
+636 388(If)s
+14(this)h
+14(option)h
+14(is)h
+14(turned)h
+16(on,)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(generates)h
+16(a)h
+14(journal)h
+14(\014le.)h
+20(A)h
+295 438(journal)s
+15(\014le)h
+16(con)h
+-1(tains)h
+16(a)h
+16(log)h
+15(of)h
+15(all)h
+15(the)h
+17(console)h
+16(input)h
+16(and)h
+16(output)h
+16(to)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(during)h
+295 488(a)s
+16(single)h
+16(in)h
+-1(v)h
+-1(o)h
+1(cation)h
+15(of)h
+16(the)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(program)h
+15(\(Note:)h
+23(The)h
+55(option)h
+15(do)h
+1(es)h
+17(not)h
+17(a\013ect)h
+295 538(this.\).)s
+23(The)h
+16(journal)h
+15(\014le)h
+15(is)h
+16(particularly)h
+15(useful)h
+15(for)h
+15(examining)h
+14(what)h
+15(happ)h
+1(ened)h
+17(during)h
+15(a)h
+295 588(F)s
+-3(unnelW)h
+-3(eb)h
+13(shell)h
+14(run.)h
+18(The)h
+15(string)h
+13(attribute)h
+15(is)h
+13(the)h
+15(name)h
+12(of)h
+13(the)h
+14(journal)h
+13(\014le.)h
+18(Examples:)h
+537 638(,)s
+55(.)h
+253(.)h
+608 711(If)s
+16(this)h
+17(option)h
+16(is)h
+16(turned)h
+18(on,)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+16(en)h
+-1(ters)h
+18(an)h
+17(in)h
+-1(teractiv)h
+-1(e)h
+17(mo)h
+1(de)h
+295 761(in)s
+19(whic)h
+-1(h)h
+19(the)h
+20(user)h
+21(can)h
+19(en)h
+-1(ter)h
+20(F)h
+-3(unnelW)h
+-3(eb)h
+19(shell)h
+19(commands)h
+17(in)h
+-1(teractiv)h
+-1(ely)h
+-3(.)h
+34(The)h
+20(string)h
+295 811(attribute)s
+15(is)h
+13(un)h
+-1(used.)h
+19(Examples:)h
+61(,)h
+57(.)h
+253(.)h
+625 885(If)s
+14(this)h
+15(option)h
+13(is)h
+15(turned)h
+15(on,)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(generates)h
+16(a)h
+15(listing)h
+13(\014le)h
+15(con-)h
+295 935(taining)s
+13(a)h
+13(summary)h
+11(of)h
+13(a)h
+14(run)h
+14(on)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(prop)h
+1(er.)h
+18(The)h
+15(string)h
+13(argumen)h
+-1(t)h
+13(is)h
+14(the)h
+14(name)h
+295 985(of)s
+14(the)h
+14(listing)h
+13(\014le)h
+14(to)h
+13(b)h
+1(e)h
+15(created.)h
+19(Examples:)h
+61(,)h
+57(,)h
+299(.)h
+256(.)h
+680 1058(If)s
+15(this)h
+15(option)h
+14(is)h
+15(turned)h
+16(on,)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+15(generates)h
+16(a)h
+15(pro)h
+1(duct)h
+16(\014le)h
+295 1108(for)s
+14(eac)h
+-1(h)h
+15(macro)h
+13(in)h
+13(the)h
+15(input)h
+14(\014le)h
+14(that)h
+14(is)h
+14(b)h
+1(ound)h
+14(to)h
+14(an)h
+14(output)h
+15(\014le.)h
+18(The)h
+15(string)h
+14(attribute)h
+295 1158(con)s
+-1(tributes)h
+22(to)h
+20(the)h
+21(name)h
+19(of)h
+20(the)h
+21(pro)h
+1(duct)h
+21(\014les.)h
+38(This)h
+20(option)h
+20(is)h
+20(con)h
+-1(trolled)h
+20(b)h
+-1(y)h
+20(the)h
+295 1208(argumen)s
+-1(t)h
+18(b)h
+1(ecause)h
+21(pro)h
+1(duct)h
+19(\014les)h
+19(used)h
+20(to)h
+19(b)h
+1(e)h
+19(called)h
+19(\\)h
+36(utput)h
+19(\014les"\).)h
+33(Examples:)h
+71(,)h
+733 1258(.)s
+256(.)h
+506 1332(If)s
+12(this)h
+12(option)h
+12(is)h
+12(turned)h
+14(on,)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(suppresse)h
+1(s)h
+15(all)h
+11(output)h
+12(to)h
+13(the)h
+13(screen)h
+295 1381(\(standard)s
+17(output\))h
+16(unless)h
+16(one)h
+16(or)h
+16(more)h
+15(errors)h
+17(o)h
+1(ccur,)h
+17(in)h
+15(whic)h
+-1(h)h
+16(case)h
+17(a)h
+15(single)h
+16(line)h
+15(sum-)h
+295 1431(marizing)s
+12(the)h
+14(errors)h
+15(is)h
+13(sen)h
+-1(t)h
+15(to)h
+13(standard)h
+14(output)h
+14(at)h
+13(the)h
+15(end)h
+14(of)h
+13(the)h
+14(run.)h
+18(If)h
+13(this)h
+14(option)h
+13(is)h
+295 1481(turned)s
+16(o\013,)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(writes)h
+15(to)h
+15(the)h
+15(console)h
+15(in)h
+14(its)h
+14(normal)h
+13(garrulous)h
+14(w)h
+-1(a)h
+-1(y)h
+-3(.)h
+19(The)h
+15(string)h
+295 1531(attribute)s
+15(is)h
+13(un)h
+-1(used)h
+15(in)h
+14(this)h
+14(option.)h
+17(Examples:)h
+61(,)h
+57(.)h
+253(.)h
+517 1605(If)s
+11(this)h
+12(option)h
+11(is)h
+11(turned)h
+13(on,)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+12(writes)h
+12(all)h
+10(diagnostics)h
+12(to)h
+11(the)h
+13(screen)h
+295 1654(\(standard)s
+15(output\))h
+15(as)h
+15(w)h
+-1(ell)h
+14(as)h
+14(to)h
+15(the)h
+15(listing)h
+14(\014le.)h
+20(By)h
+14(default,)h
+14(they)h
+15(are)h
+15(sen)h
+-1(t)h
+16(only)h
+14(to)h
+14(the)h
+295 1704(listing)s
+16(\014le.)h
+28(This)h
+17(option)h
+17(has)h
+17(a)h
+17(single)h
+16(n)h
+-1(umerical)h
+16(attribute)h
+18(that)h
+17(can)h
+17(b)h
+1(e)h
+18(sp)h
+1(eci\014ed)h
+19(as)h
+17(a)h
+295 1754(decimal)s
+10(string)h
+12(in)h
+12(the)h
+12(string)h
+12(comp)h
+1(onen)h
+-1(t)h
+11(of)h
+11(the)h
+46(argumen)h
+-1(t.)h
+16(The)h
+12(n)h
+-1(um)h
+-1(b)h
+1(er)h
+11(is)h
+12(the)h
+12(n)h
+-1(um)h
+-1(b)h
+1(er)h
+295 1804(of)s
+12(lines)h
+11(of)h
+12(con)h
+-1(text)h
+12(that)h
+12(should)h
+12(surround)h
+12(eac)h
+-1(h)h
+13(diagnostic)h
+11(sen)h
+-1(t)h
+13(to)h
+11(the)h
+13(screen.)h
+19(Examples:)h
+339 1854(,)s
+79(,)h
+79(.)h
+257(.)h
+793 1928(If)s
+14(this)h
+16(option)h
+33(is)h
+14(turned)h
+17(on,)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+15(generates)h
+17(a)h
+14(do)h
+1(c-)h
+295 1977(umen)s
+-1(tation)h
+13(\014le)h
+15(in)h
+15(T)h
+657 1986(E)s
+680 1977(X)s
+15(format.)h
+19(The)h
+15(string)h
+15(argumen)h
+-1(t)h
+14(con)h
+-1(tributes)h
+16(to)h
+15(the)h
+15(name)h
+14(of)h
+14(the)h
+295 2027(do)s
+1(cumen)h
+-1(tation)h
+14(\014le)h
+15(to)h
+15(b)h
+1(e)h
+15(created.)h
+23(By)h
+15(default)h
+14(this)h
+15(option)h
+14(is)h
+15(turned)h
+16(o\013,)h
+15(as)h
+14(exp)h
+1(erience)h
+295 2077(has)s
+15(sho)h
+-1(wn)h
+14(that)h
+14(most)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(runs)h
+14(are)h
+15(made)h
+13(during)h
+14(program)h
+12(dev)h
+-1(elopmen)h
+-1(t;)h
+13(do)h
+1(cu-)h
+295 2127(men)s
+-1(tation)h
+12(runs)h
+15(o)h
+1(ccur)h
+15(far)h
+14(more)h
+12(rarely)h
+-3(.)h
+18(Examples:)h
+61(,)h
+255(.)h
+256(.)h
+901 2201(If)s
+15(this)h
+15(option)h
+14(is)h
+15(turned)h
+16(on,)h
+15(a)h
+15(lim)h
+-1(it)h
+13(is)h
+15(placed)h
+15(on)h
+15(the)h
+295 2250(length)s
+14(of)h
+14(lines)h
+14(in)h
+14(pro)h
+1(duct)h
+15(\014les)h
+15(generated)h
+15(during)h
+14(the)h
+15(run.)h
+20(Lines)h
+14(that)h
+14(breac)h
+-1(h)h
+16(the)h
+14(limit)h
+295 2300(are)s
+18(\015agged)h
+17(with)h
+17(error)h
+18(messages.)h
+28(This)h
+17(option)h
+17(has)h
+17(a)h
+17(single)h
+17(n)h
+-1(umerical)h
+16(attribute)h
+18(that)h
+295 2350(can)s
+14(b)h
+1(e)h
+15(sp)h
+1(eci\014ed)h
+16(as)h
+14(a)h
+13(decimal)h
+13(string)h
+14(in)h
+13(the)h
+15(string)h
+14(comp)h
+1(onen)h
+-1(t)h
+13(of)h
+14(the)h
+50(argumen)h
+-1(t.)h
+17(The)h
+295 2400(n)s
+-1(um)h
+-1(b)h
+1(er)h
+16(is)h
+17(the)h
+18(sp)h
+1(eci\014ed)h
+18(maxim)h
+-3(um)h
+14(width.)h
+26(This)h
+17(option)h
+16(is)h
+17(one)h
+17(of)h
+16(t)h
+-1(w)h
+-1(o)h
+17(lim)h
+-1(its)h
+15(that)h
+17(are)h
+295 2450(placed)s
+19(on)h
+18(the)h
+19(width)h
+18(of)h
+17(pro)h
+1(duct)h
+19(\014les.)h
+32(The)h
+18(other)h
+19(limi)h
+-1(t)h
+17(is)h
+18(an)h
+18(attribute)h
+18(of)h
+18(the)h
+19(input)h
+295 2500(\014le)s
+15(that)h
+14(defaults)h
+15(to)h
+15(80)h
+14(c)h
+-1(haracters,)h
+16(but)h
+14(can)h
+15(b)h
+1(e)h
+15(raised)h
+15(or)h
+15(lo)h
+-1(w)h
+-1(ered)h
+15(using)h
+14(an)h
+14(output)h
+15(line)h
+295 2549(length)s
+14(pragma.)h
+16(The)h
+13(width)h
+14(that)h
+13(is)h
+13(enforced)h
+15(is)h
+13(the)h
+14(lo)h
+-1(w)h
+-1(er)h
+13(of)h
+13(this)h
+13(v)h
+-2(alue)h
+13(and)h
+13(the)h
+15(v)h
+-2(alue)h
+12(of)h
+295 2599(the)s
+50(option)h
+14(\(if)h
+13(turned)h
+15(on\).)h
+18(Examples:)h
+60(,)h
+123(.)h
+301(.)h
+564 2673(If)s
+16(this)h
+15(option)h
+15(is)h
+16(turned)h
+16(on,)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(executes)h
+17(the)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+15(shell)h
+295 2723(script)s
+15(\014le)h
+14(sp)h
+1(eci\014ed)h
+15(b)h
+-1(y)h
+14(the)h
+14(string)h
+14(attribute.)h
+19(Examples:)h
+193(,)h
+55(.)h
+254(.)h
+1042 2940(69)s
+709 2 177 2757 r
+70 @eop
+71 @bop0
+71 @bop1
+cmti10.300 sf
+1578 480(network)s
+13(no)h
+-2(de)h
+26(devic)h
+-2(e)h
+177 530(name)s
+cmbx10.432 sf
+177 42(3.8)s
+70(File)h
+21(Nam)h
+-1(e)h
+21(Inheritance)h
+177 2620(3.9)s
+70(F)h
+-6(unnelW)h
+-6(eb)h
+22(Startup)h
+cmbx10.300 sf
+262 480(directory)s
+23(name)h
+104(extension)h
+1478 2735(Action)s
+19(options)h
+1759 2785(Ordinary)s
+177 2835(options)s
+cmtt10.300 sf
+769 819(@i)s
+739(@o)h
+427 869(+x)s
+134(+f)h
+120(+i)h
+138(+j)h
+143(+l)h
+134(+t)h
+192(+o)h
+448 919(.fws)s
+90(.fw)h
+98(.fwi)h
+94(.jrn)h
+99(.lis)h
+90(.tex)h
+769 969(+f)s
+138(+f)h
+143(+f)h
+134(+f)h
+1429 1133(+<letter>)s
+1358 1183(+F)s
+177 1522(fw)s
+22(/usr/ross/)h
+-1(work/)h
+-1(sloth)h
+-1(.fw)h
+20(+twalrus)h
+1324 1736(+T)s
+198 1786(walrus)s
+667 1836(walrus)s
+833(walrus)h
+1226 1886(.tex)s
+790 1935(.tex)s
+736(walrus)h
+249 2035(.tex)s
+487(walrus.tex)h
+510(+F)h
+469 2085(/usr/ross/wor)s
+-1(k/slo)h
+-1(th.fw)h
+584(/usr/ross)h
+-1(/work)h
+-1(/)h
+400 2135(sloth)s
+525(.fw)h
+158(walrus.tex)h
+1095 2234(/usr/ross/w)s
+-1(ork/w)h
+-1(alrus)h
+-1(.tex)h
+1103 2284(/usr/ross/pla)s
+-1(y/)h
+cmr10.300 sf
+177 157(During)s
+10(a)h
+11(single)h
+10(run)h
+11(of)h
+10(F)h
+-3(unnelW)h
+-3(eb,)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+11(can)h
+11(pro)h
+1(duce)h
+11(man)h
+-1(y)h
+9(di\013eren)h
+-1(t)h
+12(output)h
+11(\014les.)h
+17(As)h
+11(it)h
+11(w)h
+-1(ould)h
+177 207(b)s
+1(e)h
+13(v)h
+-1(ery)h
+13(tedious)h
+13(to)h
+12(ha)h
+-1(v)h
+-1(e)h
+12(to)h
+12(sp)h
+1(ecify)h
+13(the)h
+13(name)h
+12(of)h
+11(eac)h
+-1(h)h
+13(of)h
+12(these)h
+14(\014les)h
+13(explicitly)h
+11(eac)h
+-1(h)h
+13(time)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+12(is)h
+177 257(run,)s
+12(F)h
+-3(unnelW)h
+-3(eb)h
+10(pro)h
+-1(vides)h
+12(a)h
+11(system)h
+11(of)h
+10(defaults)h
+11(that)h
+11(allo)h
+-1(ws)h
+10(the)h
+12(user)h
+12(to)h
+11(sp)h
+1(ecify)h
+12(the)h
+12(minim)h
+-3(um)h
+8(required)h
+177 306(to)s
+15(success)h
+1(fully)h
+16(complete)h
+14(the)h
+16(run.)h
+23(T)h
+-3(o)h
+14(do)h
+15(this)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+14(allo)h
+-1(ws)h
+14(\014le)h
+16(sp)h
+1(eci\014cations)h
+16(to)h
+15(inherit)h
+15(\014elds)h
+177 356(from)s
+12(one)h
+14(another.)h
+177 430(F)s
+-3(unnelW)h
+-3(eb)h
+18(structures)h
+21(\014lenames)h
+18(in)h
+-1(to)h
+18(three)h
+20(\014elds)h
+19(whic)h
+-1(h)h
+18(are)h
+19(inherited)h
+19(indep)h
+1(enden)h
+-1(tly)h
+-3(.)h
+32(The)h
+19(\014elds)h
+177 480(are:)s
+210(,)h
+123(,)h
+12(and)h
+211(.)h
+16(On)h
+13(systems)h
+13(ha)h
+-1(ving)h
+12(other)h
+14(\014elds)h
+13(\(e.g.)h
+250(,)h
+274 530(\),)s
+11(the)h
+11(extra)h
+11(\014elds)h
+11(are)h
+11(considered)h
+11(to)h
+10(b)h
+1(e)h
+11(part)h
+11(of)h
+9(the)h
+11(directory)h
+11(\014eld.)h
+17(V)h
+-3(ersion)h
+11(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+10(are)h
+10(ignored.)h
+177 580(A)s
+14(\014eld)h
+14(can)h
+14(inherit)h
+14(a)h
+14(v)h
+-2(alue)h
+13(if)h
+13(its)h
+14(curren)h
+-1(t)h
+15(v)h
+-2(alue)h
+13(is)h
+14(the)h
+15(empt)h
+-1(y)h
+12(string.)h
+177 654(The)s
+14(follo)h
+-1(wing)h
+12(table)h
+14(giv)h
+-1(es)h
+13(the)h
+15(full)h
+12(inheritance)h
+15(sc)h
+-1(heme)h
+14(used)h
+15(in)h
+13(F)h
+-3(unnelW)h
+-3(eb.)h
+427 768(Script)s
+70(Input)h
+64(Include)h
+50(Journal)h
+50(List)h
+108(Do)h
+1(cumen)h
+-1(t)h
+49(Pro)h
+1(duct)h
+427 919(\\)s
+88(")h
+48(\\)h
+66(")h
+56(\\)h
+88(")h
+52(\\)h
+88(")h
+57(\\)h
+88(")h
+48(\\)h
+88(")h
+427 1019(DefDir)s
+55(Defdir)h
+50(Defdir)h
+68(Defdir)h
+73(Defdir)h
+64(Defdir)h
+122(Defdir)h
+177 1133(The)s
+13(table)h
+13(is)h
+12(arranged)h
+13(with)h
+12(items)h
+12(of)h
+12(highest)h
+12(priorit)h
+-1(y)h
+12(at)h
+13(the)h
+13(top.)h
+17(The)h
+13(\\)h
+198(")h
+10(cells)h
+13(refer)h
+14(to)h
+12(the)h
+177 1183(\014le)s
+13(sp)h
+1(eci\014cation)h
+14(supplied)h
+14(in)h
+12(the)h
+14(giv)h
+-1(en)h
+13(comm)h
+-1(and)h
+11(line)h
+13(argumen)h
+-1(t.)h
+17(\\)h
+44(")h
+12(is)h
+13(the)h
+14(name)h
+12(of)h
+12(the)h
+14(input)h
+13(\014le.)h
+177 1233(\\Defdir")s
+17(refers)h
+19(to)h
+18(the)h
+18(default)h
+17(directory)h
+19(sp)h
+1(eci\014cation)h
+18(pro)h
+-1(vided)h
+18(b)h
+-1(y)h
+17(the)h
+18(op)h
+1(erating)h
+18(system.)h
+29(Empt)h
+-1(y)h
+177 1283(cells)s
+14(do)h
+14(not)h
+14(con)h
+-1(tribute.)h
+177 1357(The)s
+14(follo)h
+-1(wing)h
+11(example)h
+13(sho)h
+-1(ws)h
+14(ho)h
+-1(w)h
+13(the)h
+14(table)h
+14(is)h
+13(used.)h
+19(Supp)h
+1(ose)h
+15(that)h
+14(the)h
+14(user)h
+15(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(as)h
+177 1407(follo)s
+-1(ws:)h
+177 1636(T)s
+-3(o)h
+19(w)h
+-1(ork)h
+19(out)h
+19(what)h
+20(the)h
+20(do)h
+1(cumen)h
+-1(tation)h
+18(\014le)h
+20(should)h
+19(b)h
+1(e)h
+20(called,)h
+20(F)h
+-3(unnelW)h
+-3(eb)h
+19(starts)h
+21(with)h
+19(the)h
+20(empt)h
+-1(y)h
+177 1686(string)s
+17(and)h
+17(then)h
+18(w)h
+-1(orks)h
+17(do)h
+-1(wn)h
+17(the)h
+18(Do)h
+1(cumen)h
+-1(t)h
+16(column)h
+15(of)h
+17(the)h
+18(table.)h
+27(The)h
+18(top)h
+17(en)h
+-1(try)h
+17(is)h
+17(empt)h
+-1(y)h
+16(so)h
+18(w)h
+-1(e)h
+177 1736(ignore)s
+18(it)h
+17(and)h
+17(pro)h
+1(ceed)h
+20(to)h
+17(the)h
+19(second)h
+18(en)h
+-1(try)h
+19(whic)h
+-1(h)h
+17(consists)h
+19(of)h
+17(\\)h
+44(".)h
+16(The)h
+18(user)h
+19(sp)h
+1(eci\014ed)h
+19(the)h
+19(string)h
+177 1786(\\)s
+132(")h
+16(as)h
+18(the)h
+18(v)h
+-2(alue)h
+17(of)h
+17(this)h
+18(option,)h
+17(and)h
+18(as)h
+18(our)h
+17(curren)h
+-1(t)h
+19(\(empt)h
+-1(y\))h
+17(string)h
+18(do)h
+1(es)h
+19(not)h
+17(ha)h
+-1(v)h
+-1(e)h
+18(a)h
+17(name)h
+177 1836(\014eld,)s
+14(w)h
+-1(e)h
+14(insert)h
+15(the)h
+15(string)h
+14(\\)h
+132(")h
+12(in)h
+-1(to)h
+14(the)h
+15(name)h
+12(\014eld,)h
+14(resulting)h
+14(in)h
+14(the)h
+15(string)h
+14(\\)h
+132(".)h
+17(Mo)h
+-1(ving)h
+177 1886(do)s
+-1(wn)h
+14(to)h
+14(the)h
+15(next)h
+14(ro)h
+-1(w,)h
+14(w)h
+-1(e)h
+14(encoun)h
+-1(ter)h
+16(the)h
+15(constan)h
+-1(t)h
+14(string)h
+15(\\)h
+88(".)h
+17(This)h
+14(string)h
+14(consists)h
+15(of)h
+14(an)h
+14(empt)h
+-1(y)h
+177 1935(directory)s
+17(and)h
+15(name)h
+15(\014eld,)h
+16(but)h
+16(a)h
+15(\\)h
+88(")h
+15(\014le)h
+16(extension.)h
+24(As)h
+16(our)h
+16(curren)h
+-1(t)h
+17(string)h
+16(\\)h
+132(",)h
+14(do)h
+1(es)h
+17(not)h
+177 1985(already)s
+16(ha)h
+-1(v)h
+-1(e)h
+16(a)h
+16(\014le)h
+17(extension)h
+17(\(i.e.)h
+15(the)h
+17(\014le)h
+16(extension)h
+17(\014eld)h
+17(of)h
+15(our)h
+17(curren)h
+-1(t)h
+17(string)h
+17(is)h
+16(empt)h
+-1(y\),)h
+15(w)h
+-1(e)h
+17(add)h
+177 2035(in)s
+16(\\)h
+88(",)h
+15(resulting)h
+16(in)h
+16(the)h
+17(string)h
+16(\\)h
+219(".)h
+23(Next)h
+17(w)h
+-1(e)h
+16(encoun)h
+-1(ter)h
+18(the)h
+17(\\)h
+44(")h
+15(\014eld)h
+16(whic)h
+-1(h)h
+16(is)h
+16(the)h
+177 2085(input)s
+12(\014lename)h
+11(\\)h
+503(")h
+10(consisting)h
+13(of)h
+11(a)h
+12(directory)h
+13(\014eld)h
+13(\\)h
+328(",)h
+10(a)h
+177 2135(name)s
+13(\014eld)h
+15(\\)h
+110(",)h
+12(and)h
+15(a)h
+14(\014le)h
+14(extension)h
+15(\014eld)h
+15(\\)h
+66(".)h
+18(Our)h
+15(\\)h
+220(")h
+12(string)h
+14(already)h
+14(has)h
+15(name)h
+177 2184(and)s
+14(\014le)h
+14(extension)h
+15(\014elds,)h
+13(but)h
+15(its)h
+14(directory)h
+14(\014eld)h
+14(is)h
+14(empt)h
+-1(y)h
+-3(,)h
+12(and)h
+14(so)h
+14(w)h
+-1(e)h
+14(add)h
+14(in)h
+13(the)h
+15(directory)h
+15(\014eld)h
+14(from)h
+177 2234(the)s
+13(input)h
+13(\014le)h
+13(sp)h
+1(eci\014cation,)h
+13(resulting)h
+13(in)h
+12(the)h
+13(string)h
+13(\\)h
+546(".)h
+16(Finally)h
+-3(,)h
+10(w)h
+-1(e)h
+13(hit)h
+177 2284(the)s
+15(default)h
+14(directory)h
+16(sp)h
+1(eci\014cation,)h
+15(whic)h
+-1(h)h
+14(is)h
+15(\(sa)h
+-1(y\))h
+14(\\)h
+329(".)h
+18(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(as)h
+15(the)h
+15(directory)h
+177 2334(\014eld)s
+14(of)h
+13(our)h
+14(w)h
+-1(alrus)h
+14(string)h
+14(is)h
+14(already)h
+13(full,)h
+12(it)h
+14(has)h
+14(no)h
+14(e\013ect.)h
+177 2408(In)s
+17(general,)h
+16(there)h
+18(is)h
+17(no)h
+16(need)h
+17(to)h
+17(remem)h
+-1(b)h
+1(er)h
+15(the)h
+17(exact)h
+17(details)h
+17(of)h
+15(F)h
+-3(unnelW)h
+-3(eb's)h
+16(\014lename)h
+16(inheritance.)h
+177 2458(The)s
+14(imp)h
+1(ortan)h
+-1(t)h
+13(thing)h
+13(is)h
+14(to)h
+14(kno)h
+-1(w)h
+13(that)h
+14(it)h
+13(exists,)h
+14(and)h
+14(to)h
+14(use)h
+15(it.)h
+177 2735(F)s
+-3(unnelW)h
+-3(eb's)h
+18(comm)h
+-1(and)h
+16(line)h
+18(options)h
+17(can)h
+19(b)h
+1(e)h
+18(divided)h
+18(in)h
+-1(to)h
+17(t)h
+-1(w)h
+-1(o)h
+18(groups.)h
+361(instruct)h
+177 2785(F)s
+-3(unnelW)h
+-3(eb)h
+19(to)h
+19(p)h
+1(erforms)h
+19(some)h
+19(sort)h
+20(of)h
+19(indep)h
+1(enden)h
+-1(t)h
+21(action)h
+19(suc)h
+-1(h)h
+20(as)h
+19(pro)h
+1(cessing)h
+21(a)h
+19(\014le.)h
+342 2835(merely)s
+13(mo)h
+1(dify)h
+12(the)h
+14(w)h
+-1(a)h
+-1(y)h
+14(in)h
+13(whic)h
+-1(h)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(executes)h
+16(the)h
+15(actions.)h
+1042 2940(70)s
+1323 2 402 733 r
+2 50 401 783 r
+2 50 579 783 r
+2 50 743 783 r
+2 50 925 783 r
+2 50 1112 783 r
+2 50 1290 783 r
+2 50 1526 783 r
+2 50 1723 783 r
+1323 2 402 785 r
+2 50 401 834 r
+2 50 579 834 r
+2 50 743 834 r
+2 50 925 834 r
+2 50 1112 834 r
+2 50 1290 834 r
+2 50 1526 834 r
+2 50 1723 834 r
+2 50 401 884 r
+2 50 579 884 r
+2 50 743 884 r
+2 50 925 884 r
+2 50 1112 884 r
+2 50 1290 884 r
+2 50 1526 884 r
+2 50 1723 884 r
+2 50 401 934 r
+2 50 579 934 r
+2 50 743 934 r
+2 50 925 934 r
+2 50 1112 934 r
+2 50 1290 934 r
+2 50 1526 934 r
+2 50 1723 934 r
+2 50 401 984 r
+2 50 579 984 r
+2 50 743 984 r
+2 50 925 984 r
+2 50 1112 984 r
+2 50 1290 984 r
+2 50 1526 984 r
+2 50 1723 984 r
+2 50 401 1034 r
+2 50 579 1034 r
+2 50 743 1034 r
+2 50 925 1034 r
+2 50 1112 1034 r
+2 50 1290 1034 r
+2 50 1526 1034 r
+2 50 1723 1034 r
+1323 2 402 1036 r
+71 @eop
+72 @bop0
+cmbx12.300 sf
+[<00FE0007FFC00F83E01F01F03E00F83E00F87C007C7C007C7C007CFC007CFC007EFC00
+7EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C00
+7C7C007C7C007C3E00F83E00F81F01F00F83E007FFC000FE00>
+24 32 -2 31 28] 48 dc
+cmbx10.300 sf
+[<FFFC03FFFFFC03FF0FC000300FC000300FC000300FC000300FC000300FC000300FC000
+300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000
+300FC000300FC000300FC0003007C0003007C0006003E000E001F001C000FC0780007FFE
+00000FF800>
+32 28 -2 27 37] 85 dc
+cmr10.300 sf
+[<FFFFF0>
+24 1 0 11 21] 123 dc
+72 @bop1
+cmbx10.432 sf
+177 1588(3.10)s
+70(Scanner)h
+cmbx12.300 sf
+177 1879(3.10.1)s
+55(Basic)h
+19(Input)h
+19(File)h
+17(Pro)h
+2(cessing)h
+cmtt10.300 sf
+696 42(+F)s
+23(+K)h
+24(+X)h
+101(+H)h
+503 427(fwinit.fws)s
+1133 527(set)s
+1628 645(+X)s
+1622 763(+F)s
+1400 881(+H)s
+1138 999(+K)s
+214 1335(+Xscript.fws)s
+1048(+Hcommand)h
+1239 2727(@p)s
+21(maximum)h
+14(input)h
+15(line)h
+15(length)h
+cmbx10.300 sf
+295 377(Initial)s
+-1(izati)h
+-1(on)h
+17(script:)h
+295 645(Execute)s
+13(argumen)h
+-1(t)h
+11(script:)h
+295 763(Pro)s
+1(cess)h
+20(input)h
+17(\014le:)h
+295 881(Displa)s
+-1(y)h
+17(help)h
+17(message:)h
+295 999(In)s
+-1(teractiv)h
+-1(e)h
+13(mo)h
+1(de:)h
+1790 1974(mapp)s
+1(er)h
+295 2192(File)s
+10(T)h
+-4(erminati)h
+-1(on)h
+-1(:)h
+295 2459(Unprin)s
+-2(tab)h
+-1(le)h
+15(Characters:)h
+295 2627(Line)s
+22(Lengths:)h
+cmr10.300 sf
+177 42(The)s
+13(four)h
+11(action)h
+12(options)h
+12(are:)h
+61(,)h
+55(,)h
+56(,)h
+11(and)h
+55(.)h
+12(F)h
+-3(or)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+12(to)h
+12(b)h
+1(e)h
+12(success)h
+1(fully)h
+13(in)h
+-1(v)h
+-1(ok)h
+-1(ed,)h
+11(at)h
+12(least)h
+177 91(one)s
+17(action)h
+16(option)h
+16(m)h
+-1(ust)h
+16(b)h
+1(e)h
+17(sp)h
+1(eci\014ed.)h
+28(If)h
+16(zero)h
+18(action)h
+16(options)h
+16(are)h
+18(sp)h
+1(eci\014ed,)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+16(terminates)h
+177 141(with)s
+14(failure)h
+13(status.)h
+19(If)h
+14(more)h
+13(than)h
+14(one)h
+14(action)h
+14(option)h
+13(is)h
+14(sp)h
+1(eci\014ed,)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(p)h
+1(erforms)h
+14(the)h
+14(sp)h
+1(eci\014ed)h
+177 191(actions)s
+14(in)h
+14(a)h
+13(prede\014ned)h
+16(order.)h
+177 259(Assuming)s
+14(that)h
+15(the)h
+15(user)h
+16(has)h
+15(sp)h
+1(eci\014ed)h
+16(at)h
+15(least)h
+15(one)h
+15(action,)h
+14(the)h
+15(order)h
+16(in)h
+14(whic)h
+-1(h)h
+15(actions)h
+15(are)h
+15(executed)h
+177 309(is)s
+14(as)h
+14(follo)h
+-1(ws:)h
+738 377(F)s
+-3(unnelW)h
+-3(eb)h
+17(starts)h
+18(b)h
+-1(y)h
+17(lo)h
+1(oking)h
+16(in)h
+17(the)h
+18(curren)h
+-1(t)h
+19(directory)h
+18(for)h
+17(a)h
+295 427(\014le)s
+15(called)h
+15(\\)h
+220(")h
+-1(.)h
+20(If)h
+14(it)h
+15(do)h
+1(esn't)h
+15(\014nd)h
+16(one,)h
+15(it)h
+14(do)h
+1(esn't)h
+16(raise)h
+15(an)h
+-1(y)h
+14(error.)h
+23(If)h
+14(it)h
+15(do)h
+1(es)h
+295 477(\014nd)s
+13(one,)h
+13(it)h
+12(executes)h
+15(it)h
+12(as)h
+13(a)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(shellscript.)h
+18(Initialization)h
+10(scripts)h
+14(are)h
+13(useful)h
+13(for)h
+295 527(setting)s
+13(up)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+12(options)h
+11(\(e.g.)h
+11(using)h
+12(the)h
+12(\\)h
+66(")h
+11(comma)h
+-1(nd)h
+10(without)h
+12(ha)h
+-1(ving)h
+10(to)h
+12(t)h
+-1(yp)h
+1(e)h
+295 577(them)s
+13(eac)h
+-1(h)h
+15(time\).)h
+835 645(If)s
+11(a)h
+11(shellscript)h
+12(has)h
+12(b)h
+1(een)h
+12(sp)h
+1(eci\014ed)h
+13(using)h
+11(the)h
+12(\\)h
+44(")h
+11(option,)h
+295 695(F)s
+-3(unnelW)h
+-3(eb)h
+14(executes)h
+16(it.)h
+706 763(If)s
+17(the)h
+19(user)h
+18(has)h
+18(sp)h
+1(eci\014ed)h
+19(an)h
+18(input)h
+17(\014le)h
+18(using)h
+17(the)h
+18(\\)h
+44(")h
+17(option,)h
+295 813(then)s
+15(this)h
+14(is)h
+14(pro)h
+1(cessed)h
+16(next)h
+14(\(b)h
+-1(y)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(prop)h
+1(er\).)h
+783 881(If)s
+16(the)h
+17(user)h
+18(requested,)h
+19(using)h
+16(the)h
+18(\\)h
+44(")h
+15(option,)h
+17(that)h
+16(a)h
+17(help)h
+295 931(message)s
+14(b)h
+1(e)h
+14(displa)h
+-1(y)h
+-1(ed,)h
+13(the)h
+15(message)h
+13(is)h
+14(displa)h
+-1(y)h
+-1(ed)h
+13(at)h
+14(this)h
+14(time.)h
+681 999(If)s
+13(the)h
+13(user)h
+15(sp)h
+1(eci\014ed)h
+15(the)h
+13(\\)h
+44(")h
+13(option,)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(en)h
+-1(ters)h
+14(in)h
+-1(terac-)h
+295 1049(tiv)s
+-1(e)h
+14(\(k)h
+-1(eyb)h
+1(oard\))h
+14(mo)h
+1(de.)h
+177 1117(F)s
+-3(unnelW)h
+-3(eb)h
+12(pro)h
+1(cesses)h
+15(these)h
+14(actions)h
+12(in)h
+12(the)h
+13(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+12(order)h
+14(regardless)h
+13(of)h
+12(the)h
+13(order)h
+13(in)h
+12(whic)h
+-1(h)h
+12(they)h
+13(app)h
+1(ear)h
+177 1167(on)s
+14(the)h
+14(comma)h
+-1(nd)h
+12(line.)h
+177 1236(It)s
+17(ma)h
+-1(y)h
+15(b)h
+1(e)h
+17(hard)h
+17(to)h
+17(see)h
+17(ho)h
+-1(w)h
+17(some)h
+16(of)h
+16(these)h
+18(actions)h
+17(migh)h
+-2(t)h
+15(b)h
+1(e)h
+18(com)h
+-1(bined.)h
+25(Nev)h
+-1(ertheless,)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+177 1285(allo)s
+-1(ws)h
+17(this.)h
+31(F)h
+-3(or)h
+18(example,)h
+18(a)h
+18(user)h
+19(migh)h
+-1(t)h
+16(wish)h
+18(to)h
+18(pro)h
+1(cess)h
+20(a)h
+18(batc)h
+-1(h)h
+19(of)h
+18(\014les)h
+18(as)h
+18(sp)h
+1(eci\014ed)h
+20(in)h
+18(a)h
+18(script)h
+177 1335(\(\\)s
+264(")h
+-1(\),)h
+14(b)h
+1(e)h
+16(reminded)h
+15(of)h
+15(the)h
+16(in)h
+-1(teractiv)h
+-1(e)h
+15(comma)h
+-1(nds)h
+14(a)h
+-1(v)h
+-2(ailable)h
+14(\(\\)h
+198(")h
+-1(\),)h
+14(and)h
+15(then)h
+177 1385(en)s
+-1(ter)h
+12(in)h
+-1(teractiv)h
+-1(e)h
+12(mo)h
+1(de)h
+10(so)h
+11(as)h
+11(to)h
+11(b)h
+1(e)h
+12(able)h
+10(to)h
+11(repro)h
+1(cess)h
+14(\014les)h
+11(for)h
+11(whic)h
+-1(h)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+10(rep)h
+1(orted)h
+13(errors)h
+12(\(after)h
+177 1435(correcting)s
+15(the)h
+15(errors)h
+15(in)h
+13(a)h
+14(di\013eren)h
+-1(t)h
+15(w)h
+-1(orkstation)h
+13(windo)h
+-1(w\).)h
+177 1697(The)s
+16(scanner)h
+17(reads)h
+16(in)h
+15(the)h
+16(input)h
+15(\014le)h
+15(and)h
+15(pro)h
+1(duces)h
+17(a)h
+15(list)h
+15(of)h
+15(tok)h
+-1(ens)h
+16(whic)h
+-1(h)h
+15(it)h
+15(hands)h
+15(on)h
+-1(to)h
+15(the)h
+16(parser.)h
+177 1747(In)s
+12(addition,)h
+11(some)h
+12(input)h
+12(constructs)h
+14(ma)h
+-1(y)h
+11(cause)h
+13(the)h
+13(scanner)h
+14(to)h
+12(mo)h
+1(dify)h
+10(some)h
+11(of)h
+12(F)h
+-3(unnelW)h
+-3(eb's)h
+12(options.)h
+177 1974(In)s
+14(order)h
+15(to)h
+14(read)h
+15(in)h
+14(an)h
+14(input)h
+14(\014le)h
+14(or)h
+14(include)h
+15(\014le,)h
+14(the)h
+14(scanner)h
+16(calls)h
+14(a)h
+14(submo)h
+1(dule)h
+13(called)h
+14(the)h
+177 2024(that)s
+12(reads)h
+12(a)h
+11(\014le)h
+12(in)h
+11(and)h
+11(creates)h
+14(a)h
+11(con)h
+-1(tiguous)h
+11(cop)h
+-1(y)h
+12(of)h
+11(it)h
+11(in)h
+11(memo)h
+-1(ry)h
+-3(.)h
+15(The)h
+12(scanner)h
+13(then)h
+12(p)h
+1(erforms)h
+11(three)h
+177 2074(c)s
+-1(hec)h
+-1(ks)h
+18(on)h
+16(the)h
+17(\014le,)h
+17(the)h
+17(\014rst)h
+17(\(\014le)h
+17(termination\))h
+15(of)h
+16(whic)h
+-1(h)h
+16(is)h
+16(p)h
+1(erformed)h
+16(b)h
+1(efore)h
+18(scanning)h
+16(commences,)h
+177 2124(and)s
+14(the)h
+14(other)h
+15(t)h
+-1(w)h
+-1(o)h
+13(of)h
+14(whic)h
+-1(h)h
+13(tak)h
+-1(e)h
+14(place)h
+14(during)h
+14(scanning)h
+14(b)h
+1(efore)h
+14(eac)h
+-1(h)h
+15(line)h
+13(is)h
+14(scanned.)h
+670 2192(The)s
+10(\014rst)h
+10(c)h
+-1(hec)h
+-1(k)h
+11(the)h
+10(scanner)h
+11(mak)h
+-1(es)h
+8(is)h
+9(whether)h
+11(the)h
+10(\014le)h
+10(is)h
+9(terminated)h
+295 2242(prop)s
+1(erly)h
+-3(.)h
+19(A)h
+14(\014le)h
+14(is)h
+14(considered)h
+16(to)h
+14(b)h
+1(e)h
+14(prop)h
+1(erly)h
+15(terminated)h
+13(if)h
+14(it)h
+13(either)h
+15(con)h
+-1(tains)h
+14(no)h
+14(lines,)h
+295 2291(or)s
+17(if)h
+16(the)h
+17(last)h
+17(line)h
+16(in)h
+16(the)h
+18(\014le)h
+16(is)h
+17(terminated)h
+16(b)h
+-1(y)h
+17(an)h
+16(end-of-line)h
+16(mark)h
+-1(er.)h
+26(If)h
+16(the)h
+17(scanner)h
+295 2341(detects)s
+19(that)h
+17(an)h
+16(input)h
+16(\014le)h
+17(is)h
+17(not)h
+16(prop)h
+1(erly)h
+17(terminated,)h
+16(it)h
+17(adds)h
+16(an)h
+17(end-of-line)h
+16(mark)h
+-1(er)h
+295 2391(itself)s
+14(\(to)h
+14(the)h
+14(cop)h
+-1(y)h
+14(in)h
+13(memory)h
+12(only\).)h
+826 2459(The)s
+16(second)h
+17(c)h
+-1(hec)h
+-1(k)h
+16(the)h
+16(scanner)h
+17(mak)h
+-1(es)h
+14(is)h
+16(for)h
+15(unprin)h
+-1(table)h
+295 2509(c)s
+-1(haracters)h
+18(\(ASCI)h
+1(I)h
+17(0{31)h
+15(and)h
+16(127{255)h
+15(\(except)h
+18(for)h
+16(EOL\(10\)\)\))h
+17(whic)h
+-1(h)h
+16(it)h
+16(\015ags)h
+16(as)h
+16(errors)h
+295 2559(and)s
+14(replaces)h
+15(b)h
+-1(y)h
+14(question)h
+14(marks.)h
+620 2627(The)s
+21(third)h
+21(c)h
+-1(hec)h
+-1(k)h
+21(the)h
+22(scanner)h
+22(mak)h
+-1(es)h
+19(is)h
+21(input)h
+21(line)h
+20(length.)h
+38(When)h
+295 2677(F)s
+-3(unnelW)h
+-3(eb)h
+18(starts)h
+18(up,)h
+19(a)h
+17(default)h
+18(maxim)h
+-3(um)h
+15(input)h
+17(line)h
+18(length)h
+18(of)h
+17(80)h
+17(is)h
+18(set.)h
+31(This)h
+17(can)h
+295 2727(b)s
+1(e)h
+22(c)h
+-1(hanged)h
+21(dynamical)h
+-1(ly)h
+19(during)h
+20(scanning)h
+21(using)h
+20(a)h
+295 2777(pragma.)s
+17(If)h
+13(the)h
+15(n)h
+-1(um)h
+-1(b)h
+1(er)h
+13(of)h
+13(c)h
+-1(haracters)h
+16(on)h
+14(a)h
+13(line)h
+14(\(not)h
+14(including)h
+13(the)h
+14(end)h
+15(of)h
+13(line)h
+13(mark)h
+-1(er\))h
+295 2827(exceeds)s
+16(this)h
+14(limi)h
+-1(t,)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(generates)h
+16(an)h
+13(error.)h
+1042 2940(71)s
+14 2 1461 2727 r
+14 2 1585 2727 r
+14 2 1688 2727 r
+72 @eop
+73 @bop0
+/cmti8.300 127 @newfont
+cmbx12.300 sf
+[<00FE030007FF87000FC1C7001F006F003F003F007E003F007E001F007C001F00FC001F
+00FC001F00FC001F00FC001F00FC001F00FC001F00FC001F007E001F007E001F003E003F
+001F007F000FC1DF0007FF9F0001FC1F0000001F0000001F0000001F0000001F0000001F
+0000001F0000001F0000001F000000FFE00000FFE0>
+32 32 -2 21 30] 113 dc
+cmti8.300 sf
+[<07800C4018E018E038001E001F8007C000C060C0E0C0C180C3003E00>
+16 14 -3 13 15] 115 dc
+[<1C702288230C230C460C060C060C060C0C180C180C100C301A601B8018001800300030
+003000FC00>
+16 20 -2 13 18] 112 dc
+[<07001880304060404080FF00C000C000C0008000C040C08043003C00>
+16 14 -5 13 16] 101 dc
+[<03C00C6018E030E030006000600060004000C0004020604021801E00>
+16 14 -4 13 16] 99 dc
+[<030706000000000000384C4C4C8C181818303262622438>
+8 23 -3 22 11] 105 dc
+[<072008E018E0306030C060C060C060C0C180C188C1884388659038E0>
+16 14 -4 13 18] 97 dc
+[<3E0C0C0C0C181818183030303060606060C0D0D0D0D060>
+8 23 -4 22 9] 108 dc
+[<1F0006000600060006000C000C000C000C0019C01A601C201830306030603060306060
+C060C461846188C098C0E0>
+16 23 -3 22 18] 104 dc
+[<38F04518463846308C000C000C000C00180018001800180030003000>
+16 14 -3 13 15] 114 dc
+[<030003000600060006000600FF800C000C000C00180018001800180030003100310031
+0032001C00>
+16 20 -3 19 12] 116 dc
+[<072008A018E0306030C060C060C060C0C180C180C180438067003B0003000300060006
+0006003F80>
+16 20 -4 13 16] 113 dc
+[<1C0826184618461886300C300C300C30186018621862186208E40738>
+16 14 -3 13 19] 117 dc
+[<387044984708460C8C180C180C180C18183018311861186230263038>
+16 14 -3 13 20] 110 dc
+73 @bop1
+cmr6.300 sf
+223 2704(4)s
+cmr7.300 sf
+1931 179(4)s
+cmmi10.300 sf
+1469 529(<)s
+121(>)h
+22(<)h
+208(>)h
+850 579(<)s
+121(>)h
+cmbx12.300 sf
+177 42(3.10.2)s
+55(Sp)h
+2(ecial)h
+18(Sequences)h
+cmti8.300 sf
+1620 2795(sp)s
+-2(e)h
+-2(cial)h
+16(char)h
+-2(acter)h
+177 2835(sp)s
+-2(e)h
+-2(cial)h
+14(se)h
+-2(quenc)h
+-2(e)h
+cmbx10.300 sf
+1581 194(sp)s
+1(ecial)h
+14(c)h
+-1(haracter)h
+538 244(sp)s
+1(ecial)h
+17(sequence)h
+1815 1128(simple)s
+177 1178(sequence)s
+cmr8.300 sf
+241 2716(This)s
+10(sort)h
+10(of)h
+11(c)h
+-1(haracte)h
+-1(r)h
+9(is)h
+11(often)h
+9(referred)h
+9(to)h
+10(as)h
+11(the)h
+10(\\escap)h
+1(e)h
+9(c)h
+-1(haract)h
+-1(er")h
+8(or)h
+11(the)h
+10(\\con)h
+-1(tro)h
+-1(l)h
+9(c)h
+-1(haracter)h
+-1(")h
+9(in)h
+10(other)h
+10(systems.)h
+177 2756(Ho)s
+-1(w)h
+-1(ev)h
+-1(er,)h
+15(as)h
+14(there)h
+14(is)h
+14(great)h
+14(p)h
+1(oten)h
+-1(ti)h
+-1(al)h
+13(to)h
+14(confuse)h
+13(these)h
+13(names)h
+13(with)h
+15(the)h
+13(\\escap)h
+1(e")h
+13(c)h
+-1(haracte)h
+-1(r)h
+13(\(ASCI)h
+1(I)h
+14(27\))h
+14(and)h
+14(ASCI)h
+1(I)h
+177 2795(\\con)s
+-1(trol")h
+11(c)h
+-1(haracte)h
+-1(rs,)h
+12(the)h
+12(term)h
+12(\\sp)h
+1(ecial")h
+11(has)h
+13(b)h
+1(een)h
+12(c)h
+-1(hosen)h
+12(instead.)h
+18(This)h
+14(results)h
+12(in)h
+12(the)h
+13(terms)h
+284(and)h
+420 2835(.)s
+cmtt10.300 sf
+177 411(input_file)s
+20(=)h
+21({ordinary_text)h
+19(|)h
+22(special_sequ)h
+-1(ence})h
+857 529(@)s
+775(=)h
+973 629(@)s
+417 1128(-)s
+718(S)h
+1197 1228(C)s
+177 1395(ASC)s
+43(SEQ)h
+43(COMMENT)h
+177 1445(-------------)s
+-1(----)h
+177 1495(000)s
+152(\\)h
+177 1545(016)s
+174(|)h
+21(Unprintable)h
+20(characters)h
+20(and)h
+21(hence)h
+21(illegal)h
+20(specials.)h
+177 1595(031)s
+152(/)h
+177 1644(032)s
+43(@)h
+87(-)h
+22(Illegal)h
+20(\(space\).)h
+177 1694(033)s
+43(@!)h
+65(C)h
+22(Comment.)h
+177 1744(034)s
+43(@")h
+65(S)h
+22(Parameter)h
+20(delimeter.)h
+177 1794(035)s
+43(@#)h
+65(C)h
+22(Short)h
+20(name)h
+21(sequence.)h
+177 1844(036)s
+43(@$)h
+65(S)h
+22(Start)h
+20(of)h
+22(macro)h
+21(definition.)h
+177 1894(037)s
+43(@%)h
+65(-)h
+22(Illegal.)h
+177 1943(038)s
+43(@&)h
+65(-)h
+22(Illegal.)h
+177 1993(039)s
+43(@')h
+65(-)h
+22(Illegal.)h
+177 2043(040)s
+43(@\()h
+65(S)h
+22(Open)h
+21(parameter)h
+20(list.)h
+177 2093(041)s
+43(@\))h
+65(S)h
+22(Close)h
+20(parameter)h
+20(list.)h
+177 2143(042)s
+43(@*)h
+65(-)h
+22(Illegal.)h
+177 2192(043)s
+43(@+)h
+65(C)h
+22(Insert)h
+20(newline.)h
+177 2242(044)s
+43(@,)h
+65(S)h
+22(Parameter)h
+20(separator.)h
+177 2292(045)s
+43(@-)h
+65(C)h
+22(Suppress)h
+20(end)h
+21(of)h
+21(line)h
+21(marker.)h
+177 2342(046)s
+43(@.)h
+65(-)h
+22(Illegal.)h
+177 2392(047)s
+43(@/)h
+65(S)h
+22(Open)h
+21(or)h
+21(close)h
+21(emphasised)h
+20(text.)h
+177 2441(048)s
+43(@0)h
+65(-)h
+22(Illegal.)h
+177 2491(049)s
+43(@1)h
+65(S)h
+22(Formal)h
+20(parameter)h
+20(1.)h
+177 2541(050)s
+43(@2)h
+65(S)h
+22(Formal)h
+20(parameter)h
+20(2.)h
+177 2591(051)s
+43(@3)h
+65(S)h
+22(Formal)h
+20(parameter)h
+20(3.)h
+177 2641(052)s
+43(@4)h
+65(S)h
+22(Formal)h
+20(parameter)h
+20(4.)h
+cmr10.300 sf
+177 144(The)s
+11(scanner)h
+11(scans)h
+11(the)h
+11(input)h
+9(\014le)h
+10(from)h
+9(top)h
+10(to)h
+10(b)h
+1(ottom,)h
+8(left)h
+10(to)h
+10(righ)h
+-1(t,)h
+10(treating)h
+10(the)h
+11(input)h
+10(as)h
+10(ordinary)h
+9(text)h
+177 194(\(to)s
+14(b)h
+1(e)h
+14(handed)h
+14(directly)h
+13(to)h
+14(the)h
+14(parser)h
+14(as)h
+14(a)h
+13(text)h
+14(tok)h
+-1(en\))h
+14(unless)h
+14(it)h
+13(encoun)h
+-1(ters)h
+15(the)h
+177 244(whic)s
+-1(h)h
+16(in)h
+-1(tro)h
+1(duces)h
+17(a)h
+359(.)h
+23(Th)h
+-1(us,)h
+17(the)h
+16(scanner)h
+18(partitions)h
+15(the)h
+17(input)h
+16(\014le)h
+16(in)h
+-1(to)h
+15(ordinary)h
+177 293(text)s
+15(and)h
+13(sp)h
+1(ecial)h
+15(sequences.)h
+177 529(Up)s
+1(on)h
+11(startup,)h
+11(the)h
+11(sp)h
+1(ecial)h
+11(c)h
+-1(haracter)h
+12(is)h
+32(,)h
+11(but)h
+11(it)h
+10(can)h
+10(b)h
+1(e)h
+12(c)h
+-1(hanged)h
+10(using)h
+11(the)h
+43(sp)h
+1(ecial)h
+86(new)h
+16(sp)h
+1(ecial)h
+177 579(sp)s
+1(ecial)h
+15(sequence.)h
+22(Rather)h
+15(than)h
+15(using)h
+46(sp)h
+1(ecial)h
+48(whenev)h
+-1(er)h
+16(the)h
+15(sp)h
+1(ecial)h
+15(c)h
+-1(haracter)h
+16(app)h
+1(ears,)h
+15(this)h
+15(do)h
+1(c-)h
+177 629(umen)s
+-1(t)h
+18(uses)h
+21(the)h
+20(default)h
+18(sp)h
+1(ecial)h
+20(c)h
+-1(haracter)h
+20(\\)h
+22(")h
+19(to)h
+19(represen)h
+-1(t)h
+21(the)h
+20(curren)h
+-1(t)h
+21(sp)h
+1(ecial)h
+19(c)h
+-1(haracter.)h
+35(More)h
+177 679(imp)s
+1(ortan)h
+-1(tly)h
+-4(,)h
+14(F)h
+-3(unnelW)h
+-3(eb's)h
+15(error)h
+16(messages)h
+16(all)h
+14(use)h
+16(the)h
+16(default)h
+16(sp)h
+1(ecial)h
+15(c)h
+-1(haracter)h
+17(in)h
+15(their)h
+16(error)h
+17(mes-)h
+177 728(sages)s
+15(ev)h
+-1(en)h
+14(if)h
+13(the)h
+15(sp)h
+1(ecial)h
+14(c)h
+-1(haracter)h
+15(has)h
+14(b)h
+1(een)h
+15(c)h
+-1(hanged.)h
+177 804(An)s
+17(o)h
+1(ccurrence)h
+19(of)h
+15(the)h
+17(sp)h
+1(ecial)h
+17(c)h
+-1(haracter)h
+17(in)h
+16(the)h
+17(input)h
+16(\014le)h
+16(in)h
+-1(tro)h
+1(duces)h
+18(a)h
+16(sp)h
+1(ecial)h
+16(sequence.)h
+28(The)h
+16(kind)h
+177 853(of)s
+14(sp)h
+1(ecial)h
+14(sequence)h
+16(is)h
+14(determined)h
+14(b)h
+-1(y)h
+14(the)h
+15(c)h
+-1(haracter)h
+16(follo)h
+-1(wi)h
+-1(ng)h
+12(the)h
+15(sp)h
+1(ecial)h
+14(c)h
+-1(haracter.)h
+20(Only)h
+14(prin)h
+-1(table)h
+177 903(c)s
+-1(haracters)h
+16(can)h
+14(follo)h
+-1(w)h
+12(the)h
+14(sp)h
+1(ecial)h
+14(c)h
+-1(haracter.)h
+177 979(The)s
+17(follo)h
+-1(wi)h
+-1(ng)h
+14(list)h
+16(giv)h
+-1(es)h
+16(all)h
+14(the)h
+17(p)h
+1(ossible)h
+16(c)h
+-1(haracters)h
+18(that)h
+16(can)h
+17(follo)h
+-1(w)h
+14(the)h
+16(sp)h
+1(ecial)h
+17(c)h
+-1(haracter,)h
+17(and)h
+16(the)h
+177 1028(legalit)s
+-1(y)h
+12(of)h
+12(eac)h
+-1(h)h
+14(sequence.)h
+20(The)h
+13(\014rst)h
+14(column)h
+12(giv)h
+-1(es)h
+12(the)h
+14(ASCI)h
+1(I)h
+13(n)h
+-1(um)h
+-1(b)h
+1(er)h
+13(of)h
+12(eac)h
+-1(h)h
+14(ASCI)h
+1(I)h
+13(c)h
+-1(haracter.)h
+19(The)h
+177 1078(second)s
+12(column)h
+10(giv)h
+-1(es)h
+10(the)h
+12(sp)h
+1(ecial)h
+11(sequence)h
+13(for)h
+11(that)h
+11(c)h
+-1(haracter.)h
+19(The)h
+11(next)h
+12(column)h
+9(con)h
+-1(tains)h
+11(one)h
+11(of)h
+10(three)h
+177 1128(c)s
+-1(haracters:)h
+25(\\)h
+22(")h
+16(means)h
+16(that)h
+17(the)h
+17(sequence)h
+19(is)h
+16(illegal.)h
+24(\\)h
+22(")h
+16(indicates)h
+17(that)h
+17(the)h
+17(sequence)h
+19(is)h
+16(a)h
+380 1178(\(with)s
+20(no)h
+19(attributes)h
+20(or)h
+20(side)h
+19(e\013ects\))h
+22(that)h
+19(app)h
+1(ears)h
+21(exactly)h
+19(as)h
+20(sho)h
+-1(wn)h
+19(and)h
+19(is)h
+20(con)h
+-1(v)h
+-1(erted)h
+177 1228(directly)s
+19(in)h
+-1(to)h
+17(a)h
+18(tok)h
+-1(en)h
+19(and)h
+18(fed)h
+18(to)h
+18(the)h
+19(parser.)h
+33(Finally)h
+-3(,)h
+17(\\)h
+22(")h
+17(indicates)h
+19(that)h
+18(the)h
+19(sp)h
+1(ecial)h
+18(sequence)h
+21(is)h
+177 1278(complex,)s
+12(p)h
+1(ossibly)h
+14(ha)h
+-1(ving)h
+13(a)h
+13(follo)h
+-1(wing)h
+11(syn)h
+-1(tax)h
+14(or)h
+14(pro)h
+1(ducing)h
+14(funn)h
+-1(y)h
+14(side)h
+14(e\013ects.)h
+1042 2940(72)s
+13 2 1781 529 r
+709 2 177 2678 r
+73 @eop
+74 @bop0
+74 @bop1
+cmti10.300 sf
+1346 2685(nothing)s
+12(happ)h
+-2(ens)h
+13(unless)h
+12(the)h
+11(sp)h
+-2(e)h
+-2(cial)h
+177 2735(char)s
+-2(acter)h
+17(is)h
+17(se)h
+-2(en.)h
+cmr10.300 sf
+177 2685(The)s
+11(most)h
+9(imp)h
+1(ortan)h
+-1(t)h
+8(thing)h
+10(to)h
+10(remem)h
+-1(b)h
+1(er)h
+10(ab)h
+1(out)h
+10(the)h
+11(scanner)h
+11(is)h
+10(that)h
+525 2735(There)s
+18(are)h
+16(no)h
+17(funn)h
+-1(y)h
+16(sequences)h
+19(that)h
+17(will)h
+15(cause)h
+17(strange)h
+18(things)h
+16(to)h
+17(happ)h
+1(en.)h
+26(The)h
+177 2785(b)s
+1(est)h
+16(w)h
+-1(a)h
+-1(y)h
+14(to)h
+14(view)h
+15(a)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(do)h
+1(cumen)h
+-1(t)h
+14(at)h
+15(the)h
+15(scanner)h
+16(lev)h
+-1(el)h
+14(is)h
+14(as)h
+15(a)h
+14(b)h
+1(o)h
+1(dy)h
+15(of)h
+14(text)h
+15(punctuated)h
+16(b)h
+-1(y)h
+177 2835(sp)s
+1(ecial)h
+14(sequence)h
+1(s)h
+16(that)h
+14(serv)h
+-1(e)h
+15(to)h
+14(structure)h
+16(the)h
+14(text)h
+15(at)h
+13(a)h
+14(higher)h
+14(lev)h
+-1(el.)h
+1042 2940(73)s
+cmtt10.300 sf
+177 42(053)s
+43(@5)h
+65(S)h
+22(Formal)h
+20(parameter)h
+20(5.)h
+177 91(054)s
+43(@6)h
+65(S)h
+22(Formal)h
+20(parameter)h
+20(6.)h
+177 141(055)s
+43(@7)h
+65(S)h
+22(Formal)h
+20(parameter)h
+20(7.)h
+177 191(056)s
+43(@8)h
+65(S)h
+22(Formal)h
+20(parameter)h
+20(8.)h
+177 241(057)s
+43(@9)h
+65(S)h
+22(Formal)h
+20(parameter)h
+20(9.)h
+177 291(058)s
+43(@:)h
+65(-)h
+22(Illegal.)h
+177 340(059)s
+43(@;)h
+65(-)h
+22(Illegal.)h
+177 390(060)s
+43(@<)h
+65(S)h
+22(Open)h
+21(macro)h
+20(name.)h
+177 440(061)s
+43(@=)h
+65(C)h
+22(Set)h
+21(special)h
+20(character.)h
+177 490(062)s
+43(@>)h
+65(S)h
+22(Close)h
+20(macro)h
+21(name.)h
+177 540(063)s
+43(@?)h
+65(-)h
+22(Illegal.)h
+20(Reserved)h
+20(for)h
+21(future)h
+21(use.)h
+177 589(064)s
+43(@@)h
+65(C)h
+22(Insert)h
+20(special)h
+21(character)h
+20(into)h
+20(text.)h
+177 639(065)s
+43(@A)h
+65(S)h
+22(New)h
+21(section)h
+20(\(level)h
+21(1\).)h
+177 689(066)s
+43(@B)h
+65(S)h
+22(New)h
+21(section)h
+20(\(level)h
+21(2\).)h
+177 739(067)s
+43(@C)h
+65(S)h
+22(New)h
+21(section)h
+20(\(level)h
+21(3\).)h
+177 789(068)s
+43(@D)h
+65(S)h
+22(New)h
+21(section)h
+20(\(level)h
+21(4\).)h
+177 839(069)s
+43(@E)h
+65(S)h
+22(New)h
+21(section)h
+20(\(level)h
+21(5\).)h
+177 888(070)s
+43(@F)h
+65(-)h
+22(Illegal.)h
+177 938(071)s
+43(@G)h
+65(-)h
+22(Illegal.)h
+177 988(072)s
+43(@H)h
+65(-)h
+22(Illegal.)h
+177 1038(073)s
+43(@I)h
+65(C)h
+22(Include)h
+20(file.)h
+177 1088(074)s
+43(@J)h
+65(-)h
+22(Illegal.)h
+177 1137(075)s
+43(@K)h
+65(-)h
+22(Illegal.)h
+177 1187(076)s
+43(@L)h
+65(-)h
+22(Illegal.)h
+177 1237(077)s
+43(@M)h
+65(S)h
+22(Tag)h
+21(macro)h
+21(as)h
+21(being)h
+21(allowed)h
+20(to)h
+21(be)h
+22(called)h
+20(many)h
+21(times.)h
+177 1287(078)s
+43(@N)h
+65(-)h
+22(Illegal.)h
+177 1337(079)s
+43(@O)h
+65(S)h
+22(New)h
+21(macro)h
+21(attached)h
+20(to)h
+21(product)h
+20(file.)h
+21(Has)h
+21(to)h
+22(be)h
+21(at)h
+22(start)h
+20(of)h
+22(line.)h
+177 1386(080)s
+43(@P)h
+65(C)h
+22(Pragma.)h
+177 1436(081)s
+43(@Q)h
+65(-)h
+22(Illegal.)h
+177 1486(082)s
+43(@R)h
+65(-)h
+22(Illegal.)h
+177 1536(083)s
+43(@S)h
+65(-)h
+22(Illegal.)h
+177 1586(084)s
+43(@T)h
+65(C)h
+22(Typesetter)h
+19(directive.)h
+177 1636(085)s
+43(@U)h
+65(-)h
+22(Illegal.)h
+177 1685(086)s
+43(@V)h
+65(-)h
+22(Illegal.)h
+177 1735(087)s
+43(@W)h
+65(-)h
+22(Illegal.)h
+177 1785(088)s
+43(@X)h
+65(-)h
+22(Illegal.)h
+177 1835(089)s
+43(@Y)h
+65(-)h
+22(Illegal.)h
+177 1885(090)s
+43(@Z)h
+65(S)h
+22(Tags)h
+21(macro)h
+20(as)h
+22(being)h
+21(allowed)h
+20(to)h
+21(be)h
+22(called)h
+20(zero)h
+21(times.)h
+177 1934(091)s
+43(@[)h
+65(-)h
+22(Illegal.)h
+20(Reserved)h
+20(for)h
+21(future)h
+21(use.)h
+177 1984(092)s
+43(@\\)h
+65(-)h
+22(Illegal.)h
+177 2034(093)s
+43(@])h
+65(-)h
+22(Illegal.)h
+20(Reserved)h
+20(for)h
+21(future)h
+21(use.)h
+177 2084(094)s
+43(@^)h
+65(C)h
+22(Insert)h
+20(control)h
+21(character)h
+20(into)h
+20(text)h
+177 2134(095)s
+43(@_)h
+65(-)h
+22(Illegal.)h
+177 2183(096)s
+43(@`)h
+65(-)h
+22(Illegal.)h
+177 2233(097)s
+43(@a)h
+65(\\)h
+177 2283(109)s
+43(@m)h
+87(|)h
+21(Identical)h
+20(to)h
+22(@A..@Z.)h
+177 2333(122)s
+43(@z)h
+65(/)h
+177 2383(123)s
+43(@{)h
+65(S)h
+22(Open)h
+21(macro)h
+20(body/Open)h
+20(literal)h
+21(directive.)h
+177 2433(124)s
+43(@|)h
+65(-)h
+22(Illegal.)h
+177 2482(125)s
+43(@})h
+65(S)h
+22(Close)h
+20(macro)h
+21(body/Close)h
+20(literal)h
+20(directive.)h
+177 2532(126)s
+43(@~)h
+65(-)h
+22(Illegal.)h
+177 2582(127)s
+21(to)h
+22(255)h
+21(are)h
+21(not)h
+21(standard)h
+20(printable)h
+20(ASCII)h
+21(characters)h
+20(and)h
+21(are)h
+21(illegal.)h
+74 @eop
+75 @bop0
+cmmi10.300 sf
+[<60F0F0701010101020204080>
+8 12 -4 3 12] 59 dc
+cmr10.300 sf
+[<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+C0C0C0C0FEFE>
+8 41 -4 30 12] 91 dc
+[<FEFE060606060606060606060606060606060606060606060606060606060606060606
+06060606FEFE>
+8 41 0 30 12] 93 dc
+75 @bop1
+cmmi10.300 sf
+1138 349(<)s
+121(>)h
+22(<)h
+270(>)h
+231 498(;)s
+565 905(<)s
+121(>)h
+cmbx12.300 sf
+177 243(3.10.3)s
+55(Setting)h
+18(the)h
+18(Sp)h
+2(ecial)h
+18(Character)h
+177 799(3.10.4)s
+55(Inserting)h
+18(the)h
+18(Sp)h
+2(ecial)h
+18(Character)h
+19(in)h
+-2(to)h
+18(the)h
+18(T)h
+-5(ext)h
+177 1206(3.10.5)s
+55(Inserting)h
+18(Arbitrary)h
+18(Characters)h
+19(in)h
+-2(to)h
+19(the)h
+18(T)h
+-5(ext)h
+cmtt10.300 sf
+1323 349(=)s
+177 399(@=#)s
+858(#)h
+674 598(@)s
+626 648(@)s
+750 905(@)s
+388 955(@)s
+528 1005(P)s
+343(P@)h
+233(P)h
+452(@@#@=#@#@#=)h
+-1(@@@)h
+418 1055(@#@#@)s
+345 1412(@^)s
+177 1636(control_seque)s
+-1(nce)h
+20(=)h
+21("@^")h
+21(char_spec)h
+177 1686(char_spec)s
+173(=)h
+21(binary)h
+21(|)h
+21(octal)h
+21(|)h
+22(decimal)h
+20(|)h
+22(hexadecimal)h
+177 1736(binary)s
+239(=)h
+21(\("b")h
+21(|)h
+22("B"\))h
+282("\(")h
+21({binary_digit}8)h
+41("\)")h
+177 1786(octal)s
+261(=)h
+21(\("o")h
+21(|)h
+22("O")h
+21(|)h
+22("q")h
+21(|)h
+21("Q"\))h
+21("\(")h
+21({octal_digit}3)h
+63("\)")h
+177 1835(decimal)s
+217(=)h
+21(\("d")h
+21(|)h
+22("D"\))h
+282("\(")h
+21({decimal_digit})h
+-1(3)h
+20("\)")h
+177 1885(hexadecimal)s
+129(=)h
+21(\("h")h
+21(|)h
+22("H")h
+21(|)h
+22("x")h
+21(|)h
+21("X"\))h
+21("\(")h
+21({hex_digit}2)h
+107("\)")h
+177 1935(binary_digit)s
+107(=)h
+21("0")h
+21(|)h
+22("1")h
+177 1985(octal_digit)s
+129(=)h
+21(binary_digit)h
+20(|)h
+21("2")h
+21(|)h
+22("3")h
+21(|)h
+22("4")h
+21(|)h
+21("5")h
+22(|)h
+21("6")h
+21(|)h
+22("7")h
+177 2035(decimal_digit)s
+85(=)h
+21(octal_digit)h
+20(|)h
+21("8")h
+22(|)h
+21("9")h
+177 2085(hex_digit)s
+173(=)h
+21(decimal_digit)h
+19(|)h
+22("A")h
+21(|)h
+22("B")h
+21(|)h
+21("C")h
+22(|)h
+21("D")h
+21(|)h
+22("E")h
+21(|)h
+22("F")h
+896 2134(|)s
+22("a")h
+21(|)h
+22("b")h
+21(|)h
+21("c")h
+22(|)h
+21("d")h
+21(|)h
+22("e")h
+21(|)h
+22("f")h
+177 2383(@!)s
+22(Unix)h
+21(Make)h
+20(requires)h
+21(that)h
+21(productions)h
+19(commence)h
+20(with)h
+21(tab)h
+21(characters.)h
+177 2433(@^D\(009\)prog.)s
+-1(o)h
+20(<-)h
+21(prog.c)h
+619 2557(9)s
+687(009)h
+1084 2735(@^)s
+cmr10.300 sf
+177 42(The)s
+18(remaining)h
+15(description)h
+18(of)h
+17(the)h
+18(scanner)h
+19(consists)h
+18(of)h
+17(a)h
+17(detailed)h
+17(description)h
+18(of)h
+17(the)h
+18(e\013ect)h
+19(of)h
+16(eac)h
+-1(h)h
+177 91(complex)s
+13(sp)h
+1(ecial)h
+14(sequence.)h
+177 349(The)s
+16(sp)h
+1(ecial)h
+15(c)h
+-1(haracter)h
+16(can)h
+15(b)h
+1(e)h
+16(set)h
+15(using)h
+15(the)h
+16(sequence)h
+49(sp)h
+1(ecial)h
+86(newsp)h
+1(ec)h
+1(ialc)h
+-1(har)h
+32(.)h
+22(F)h
+-3(or)h
+15(example,)h
+256 399(w)s
+-1(ould)h
+13(c)h
+-1(hange)h
+15(the)h
+14(sp)h
+1(ecial)h
+14(c)h
+-1(haracter)h
+15(to)h
+14(a)h
+14(hash)h
+14(\()h
+22(\))h
+13(c)h
+-1(haracter.)h
+20(The)h
+14(sp)h
+1(ecial)h
+14(c)h
+-1(haracter)h
+15(ma)h
+-1(y)h
+12(b)h
+1(e)h
+15(set)h
+177 449(to)s
+12(an)h
+-1(y)h
+11(prin)h
+-1(table)h
+11(ASCI)h
+1(I)h
+12(c)h
+-1(haracter)h
+13(except)h
+13(the)h
+13(blank)h
+11(c)h
+-1(haracter)h
+13(\(i.e.)h
+11(an)h
+-1(y)h
+11(c)h
+-1(haracter)h
+13(in)h
+11(the)h
+13(ASCI)h
+1(I)h
+12(range)h
+177 498([33)s
+19(126])h
+-1(\).)h
+16(In)h
+12(normal)h
+11(use,)h
+13(it)h
+12(should)h
+12(not)h
+12(b)h
+1(e)h
+13(necessary)h
+15(to)h
+12(c)h
+-1(hange)h
+13(the)h
+13(sp)h
+1(ecial)h
+12(c)h
+-1(haracter)h
+14(of)h
+12(F)h
+-3(unnelW)h
+-3(eb,)h
+177 548(and)s
+17(it)h
+16(is)h
+17(probably)h
+16(b)h
+1(est)h
+18(to)h
+16(a)h
+-1(v)h
+-1(oid)h
+16(c)h
+-1(hanging)h
+16(the)h
+17(sp)h
+1(ecial)h
+17(c)h
+-1(haracter)h
+18(so)h
+17(as)h
+17(not)h
+16(to)h
+17(confuse)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+177 598(readers)s
+17(conditioned)h
+16(to)h
+15(the)h
+54(c)h
+-1(haracter.)h
+25(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+16(the)h
+17(feature)h
+16(is)h
+16(v)h
+-1(ery)h
+16(useful)h
+15(where)h
+17(the)h
+17(text)h
+16(b)h
+1(eing)h
+177 648(prepared)s
+15(con)h
+-1(tains)h
+14(man)h
+-1(y)h
+48(c)h
+-1(haracters)h
+15(\(e.g.)h
+14(a)h
+13(list)h
+14(of)h
+13(in)h
+-1(ternet)h
+15(electronic)h
+15(mail)h
+11(addresses\).)h
+177 905(The)s
+13(sp)h
+1(ecial)h
+12(sequence)h
+47(sp)h
+1(ecial)h
+67(inserts)h
+13(the)h
+13(sp)h
+1(ecial)h
+13(c)h
+-1(haracter)h
+13(in)h
+-1(to)h
+12(the)h
+13(text)h
+12(as)h
+13(if)h
+11(it)h
+12(w)h
+-1(ere)h
+13(not)h
+13(sp)h
+1(ecial)h
+177 955(at)s
+14(all.)h
+18(The)h
+50(of)h
+13(this)h
+15(sequence)h
+16(has)h
+14(nothing)h
+14(to)h
+13(do)h
+14(with)h
+14(the)h
+15(curren)h
+-1(t)h
+15(sp)h
+1(ecial)h
+15(c)h
+-1(haracter.)h
+20(If)h
+14(the)h
+14(curren)h
+-1(t)h
+177 1005(sp)s
+1(ecial)h
+12(c)h
+-1(haracter)h
+13(is)h
+45(then)h
+12(the)h
+12(sequence)h
+69(will)h
+10(insert)h
+13(a)h
+44(in)h
+-1(to)h
+11(the)h
+12(text.)h
+18(Example:)h
+177 1055(translates)s
+15(to)h
+124(.)h
+177 1313(While)s
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(do)h
+1(es)h
+15(not)h
+14(tolerate)h
+14(unprin)h
+-1(table)h
+14(c)h
+-1(haracters)h
+16(in)h
+13(the)h
+15(input)h
+14(\014le)h
+14(\(except)h
+15(for)h
+14(the)h
+15(end)h
+14(of)h
+177 1362(line)s
+13(c)h
+-1(haracter\),)h
+14(it)h
+12(do)h
+1(es)h
+14(allo)h
+-1(w)h
+11(the)h
+13(user)h
+14(to)h
+13(sp)h
+1(ecify)h
+14(that)h
+12(unprin)h
+-1(table)h
+13(c)h
+-1(haracters)h
+15(app)h
+1(ear)h
+13(in)h
+12(the)h
+14(pro)h
+1(duct)h
+177 1412(\014le.)s
+18(The)h
+71(sequence)h
+16(inserts)h
+15(a)h
+13(single)h
+13(c)h
+-1(haracter)h
+15(of)h
+13(the)h
+15(user's)h
+14(c)h
+-1(ho)h
+1(osing)h
+14(in)h
+-1(to)h
+13(the)h
+14(text.)h
+18(The)h
+14(c)h
+-1(haracter)h
+177 1462(can)s
+19(b)h
+1(e)h
+19(sp)h
+1(eci\014ed)h
+21(b)h
+-1(y)h
+18(giving)h
+17(its)h
+19(ASCI)h
+1(I)h
+19(n)h
+-1(um)h
+-1(b)h
+1(er)h
+18(in)h
+18(one)h
+19(of)h
+18(four)h
+19(bases:)h
+28(binary)h
+-3(,)h
+19(o)h
+1(ctal,)h
+19(decimal,)h
+18(and)h
+177 1512(hexadecimal.)s
+17(Here)h
+15(is)h
+14(the)h
+14(syn)h
+-1(tax:)h
+177 2259(Example:)s
+177 2557(Note)s
+16(that)h
+16(the)h
+16(decimal)h
+14(\\)h
+22(")h
+15(is)h
+15(expressed)h
+18(with)h
+15(leading)h
+15(zeros)h
+17(as)h
+15(\\)h
+66(".)h
+22(F)h
+-3(unnelW)h
+-3(eb)h
+15(requires)h
+17(a)h
+15(\014xed)h
+177 2607(n)s
+-1(um)h
+-1(b)h
+1(er)h
+13(of)h
+13(digits)h
+13(for)h
+13(eac)h
+-1(h)h
+14(base.)h
+19(Eigh)h
+-1(t)h
+13(digits)h
+13(for)h
+13(base)h
+14(t)h
+-1(w)h
+-1(o,)h
+13(three)h
+15(digits)h
+13(for)h
+13(base)h
+14(ten,)h
+14(three)h
+15(digits)h
+13(for)h
+177 2657(base)s
+15(eigh)h
+-1(t)h
+13(and)h
+14(t)h
+-1(w)h
+-1(o)h
+13(digits)h
+14(for)h
+13(base)h
+15(sixteen.)h
+177 2735(F)s
+-3(unnelW)h
+-3(eb)h
+16(treats)h
+17(the)h
+17(c)h
+-1(haracter)h
+17(resulting)h
+16(from)h
+14(a)h
+76(sequence)h
+18(as)h
+16(ordinary)h
+16(text)h
+16(in)h
+16(ev)h
+-1(ery)h
+17(sense.)h
+26(If)h
+177 2785(y)s
+-1(our)h
+13(input)h
+14(\014le)h
+13(con)h
+-1(tains)h
+14(man)h
+-1(y)h
+11(instances)h
+15(of)h
+13(a)h
+13(particular)h
+14(con)h
+-1(trol)h
+13(c)h
+-1(haracter,)h
+14(y)h
+-1(ou)h
+14(can)h
+13(pac)h
+-1(k)h
+-2(age)h
+13(it)h
+14(up)h
+13(in)h
+177 2835(a)s
+14(macro)h
+12(lik)h
+-1(e)h
+14(an)h
+-1(y)h
+13(other)h
+14(text.)h
+19(In)h
+14(particular,)h
+13(quic)h
+-1(k)h
+14(names)h
+13(can)h
+14(b)h
+1(e)h
+14(used)h
+15(to)h
+14(great)h
+14(e\013ect:)h
+1042 2940(74)s
+75 @eop
+76 @bop0
+76 @bop1
+cmbx12.300 sf
+177 736(3.10.6)s
+55(Commen)h
+-2(ts)h
+cmtt10.300 sf
+177 42(@!)s
+22(Unix)h
+21("Make")h
+20(requires)h
+20(that)h
+21(productions)h
+20(commence)h
+20(with)h
+21(tab)h
+21(characters.)h
+177 91(@!)s
+22(So)h
+21(we)h
+21(define)h
+21(a)h
+21(macro)h
+21(with)h
+21(a)h
+22(quick)h
+21(name)h
+20(as)h
+22(a)h
+21(tab)h
+22(character.)h
+177 141($@#T@{@^D\(009)s
+-1(\)@})h
+177 191(@!)s
+22(And)h
+21(use)h
+21(it)h
+21(in)h
+22(our)h
+21(productions.)h
+177 241(@#Tprog.o)s
+20(<-)h
+21(prog.c)h
+177 291(@#Ta.out)s
+20(<-)h
+22(prog.o)h
+805 835(@!)s
+534 934(@i)s
+66(@t)h
+147(@p)h
+177 1215(@!)s
+22(I)h
+21(have)h
+21(used)h
+21(a)h
+22(quick)h
+20(macro)h
+21(for)h
+21(this)h
+21(definition)h
+20(as)h
+21(it)h
+22(will)h
+21(be)h
+21(used)h
+21(often.)h
+177 1264(@$@#C@{--@})s
+177 1530(for)s
+21(\(i=0;i<MAXVAL;)h
+-1(i++\))h
+128(@!)h
+22(Print)h
+21(out)h
+21(a[0..MAXVAL)h
+-1(-1].)h
+243 1580(printf\("%u)s
+-1(\\n",a)h
+-1([i]\);)h
+177 1796(for)s
+21(\(i=0;i<MAXVAL;)h
+-1(i++\))h
+194(printf\("%u\\)h
+-1(n",a[)h
+-1(i]\);)h
+177 2162(@!)s
+22(Print)h
+20(out)h
+21(a[0..MAXVAL-1].)h
+177 2212(for)s
+21(\(i=0;i<MAXVAL;)h
+-1(i++\))h
+243 2261(printf\("%u)s
+-1(\\n",a)h
+-1([i]\);)h
+564 2419(@+)s
+541(@!)h
+177 2527(for)s
+21(\(i=0;i<MAXVAL;)h
+-1(i++\))h
+128(@+@!)h
+21(Print)h
+21(out)h
+21(a[0..MAXVAL-1])h
+-1(.)h
+243 2577(printf\("%u)s
+-1(\\n",a)h
+-1([i]\);)h
+cmr10.300 sf
+177 399(W)s
+-3(arning:)h
+18(If)h
+14(y)h
+-1(ou)h
+13(insert)h
+16(a)h
+14(Unix)h
+14(newline)h
+14(c)h
+-1(haracter)h
+16(\(decimal)h
+12(10\))h
+14(in)h
+-1(to)h
+14(the)h
+15(text,)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(will)h
+13(treat)h
+177 448(this)s
+15(as)h
+14(an)h
+15(end)h
+15(of)h
+14(line)h
+14(sequence)h
+17(regardless)h
+16(of)h
+14(what)h
+14(the)h
+15(c)h
+-1(haracter)h
+16(sequence)h
+17(for)h
+14(end)h
+15(of)h
+14(line)h
+14(is)h
+15(on)h
+14(the)h
+177 498(mac)s
+-1(hine)h
+15(up)h
+1(on)h
+17(whic)h
+-1(h)h
+16(it)h
+17(is)h
+16(running.)h
+26(Unix)h
+16(EOL)h
+17(is)h
+16(F)h
+-3(unnelW)h
+-3(eb's)h
+16(in)h
+-1(ternal)h
+16(represen)h
+-1(tation)h
+18(for)h
+16(end)h
+17(of)h
+177 548(line.)s
+18(Th)h
+-1(us,)h
+13(in)h
+14(the)h
+14(curren)h
+-1(t)h
+15(v)h
+-1(ersion)h
+14(of)h
+14(F)h
+-3(unnelW)h
+-3(eb,)h
+12(inserting)h
+14(c)h
+-1(haracter)h
+16(10)h
+13(in)h
+-1(to)h
+13(the)h
+14(text)h
+15(is)h
+13(imp)h
+1(ossible)h
+177 598(unless)s
+14(this)h
+13(also)h
+12(happ)h
+1(ens)h
+14(to)h
+13(b)h
+1(e)h
+14(the)h
+13(c)h
+-1(haracter)h
+14(used)h
+14(b)h
+-1(y)h
+13(the)h
+14(op)h
+1(erating)h
+12(system)h
+13(to)h
+13(mark)h
+11(the)h
+14(end)h
+13(of)h
+13(line.)h
+177 835(When)s
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(encoun)h
+-1(ters)h
+18(the)h
+88(sequence)h
+18(during)h
+17(its)h
+16(left-to-righ)h
+-1(t)h
+16(scan)h
+17(of)h
+16(the)h
+17(line,)h
+16(it)h
+16(thro)h
+-1(ws)h
+177 885(a)s
+-1(w)h
+-1(a)h
+-1(y)h
+12(the)h
+14(rest)h
+15(of)h
+13(the)h
+14(line)h
+13(\(including)h
+12(the)h
+14(EOL\))h
+14(without)h
+13(analysing)h
+12(it)h
+13(further.)h
+19(Comm)h
+-1(en)h
+-1(ts)h
+12(can)h
+13(app)h
+1(ear)h
+177 934(in)s
+14(an)h
+-1(y)h
+13(line)h
+13(except)h
+16(\\)h
+44(",)h
+12(\\)h
+44(",)h
+13(and)h
+13(\\)h
+44(")h
+13(lines.)h
+177 1007(F)s
+-3(unnelW)h
+-3(eb)h
+12(commen)h
+-1(ts)h
+11(can)h
+13(b)h
+1(e)h
+13(used)h
+14(to)h
+12(insert)h
+14(comm)h
+-1(en)h
+-1(ts)h
+12(in)h
+-1(to)h
+11(y)h
+-1(our)h
+13(input)h
+12(\014le)h
+13(that)h
+13(will)h
+11(neither)h
+13(app)h
+1(ear)h
+177 1057(in)s
+12(the)h
+13(pro)h
+1(duct)h
+13(\014les)h
+12(nor)h
+12(in)h
+12(the)h
+13(do)h
+1(cumen)h
+-1(tation)h
+11(\014le,)h
+12(but)h
+12(will)h
+11(b)h
+1(e)h
+13(solely)h
+11(for)h
+12(the)h
+13(b)h
+1(ene\014t)h
+13(of)h
+12(those)h
+13(reading)h
+177 1106(and)s
+14(editing)h
+13(the)h
+15(input)h
+13(\014le)h
+14(directly)h
+-3(.)h
+18(Example:)h
+177 1372(Because)s
+18(commen)h
+-1(ts)h
+15(are)h
+17(de\014ned)h
+17(to)h
+17(include)h
+16(the)h
+17(end-of-line)h
+16(mark)h
+-1(er,)h
+15(care)h
+17(m)h
+-1(ust)h
+16(b)h
+1(e)h
+17(tak)h
+-1(en)h
+16(when)h
+17(they)h
+177 1422(are)s
+14(b)h
+1(eing)h
+14(added)h
+15(or)h
+13(remo)h
+-1(v)h
+-1(ed)h
+13(within)h
+14(the)h
+14(text)h
+15(of)h
+13(macro)h
+12(b)h
+1(o)h
+1(dies.)h
+19(F)h
+-3(or)h
+13(example)h
+13(the)h
+15(text)h
+14(fragmen)h
+-1(t)h
+177 1688(will)s
+13(expand)h
+14(to)h
+177 1904(This)s
+19(problem)h
+18(really)h
+18(has)h
+20(no)h
+18(solution;)h
+21(if)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+19(comm)h
+-1(en)h
+-1(ts)h
+18(w)h
+-1(ere)h
+20(de\014ned)h
+20(to)h
+19(omit)h
+17(the)h
+20(end)h
+19(of)h
+177 1954(line)s
+14(mark)h
+-1(er,)h
+14(the)h
+15(expanded)h
+16(text)h
+15(w)h
+-1(ould)h
+14(con)h
+-1(tain)h
+14(trailing)h
+13(blanks!)h
+20(As)h
+16(it)h
+14(is,)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(commen)h
+-1(ts)h
+13(are)h
+177 2004(designed)s
+18(to)h
+17(supp)h
+1(ort)h
+18(single)h
+17(line)h
+17(comm)h
+-1(en)h
+-1(ts)h
+17(whic)h
+-1(h)h
+17(can)h
+17(b)h
+1(e)h
+18(inserted)h
+19(and)h
+17(remo)h
+-1(v)h
+-1(ed)h
+16(as)h
+17(a)h
+17(line)h
+17(without)h
+177 2054(causing)s
+14(trouble.)h
+18(F)h
+-3(or)h
+14(example:)h
+177 2369(If)s
+13(y)h
+-1(ou)h
+13(w)h
+-1(an)h
+-1(t)h
+13(a)h
+13(commen)h
+-1(t)h
+12(construct)h
+15(that)h
+13(do)h
+1(es)h
+14(not)h
+14(enclose)h
+14(the)h
+14(end)h
+14(of)h
+13(line)h
+13(mark)h
+-1(er,)h
+12(com)h
+-1(bine)h
+12(the)h
+14(insert)h
+177 2419(end)s
+15(of)h
+13(line)h
+13(construct)h
+73(with)h
+14(the)h
+14(commen)h
+-1(t)h
+12(construct)h
+78(as)h
+14(in)h
+177 2685(F)s
+-3(unnelW)h
+-3(eb)h
+18(commen)h
+-1(ts)h
+17(should)h
+18(really)h
+18(only)h
+18(b)h
+1(e)h
+19(used)h
+19(to)h
+19(comm)h
+-1(en)h
+-1(t)h
+17(the)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+18(constructs)h
+21(b)h
+1(eing)h
+177 2735(used)s
+18(in)h
+16(the)h
+17(input)h
+16(\014le.)h
+26(Comm)h
+-1(en)h
+-1(ts)h
+15(on)h
+17(the)h
+17(target)h
+17(co)h
+1(de)h
+17(are)h
+17(b)h
+1(est)h
+18(placed)h
+16(in)h
+16(commen)h
+-1(ts)h
+15(in)h
+16(the)h
+17(target)h
+177 2785(language)s
+14(or)h
+15(in)h
+14(the)h
+15(do)h
+1(cumen)h
+-1(ting)h
+14(text)h
+16(surrounding)h
+15(the)h
+15(macro)h
+13(de\014nitions.)h
+21(In)h
+15(the)h
+15(example)h
+14(ab)h
+1(o)h
+-1(v)h
+-1(e,)h
+14(a)h
+177 2835(C)s
+14(comm)h
+-1(en)h
+-1(t)h
+13(w)h
+-1(ould)h
+13(ha)h
+-1(v)h
+-1(e)h
+13(b)h
+1(een)h
+16(more)h
+12(appropriate.)h
+1042 2940(75)s
+76 @eop
+77 @bop0
+cmmi10.300 sf
+[<07878008C84010F0C020F1E020E3C040E18000E00000E00001C00001C00001C00001C0
+00638080F38080F38100E5810084C600787800>
+24 18 -2 17 24] 120 dc
+cmbx12.300 sf
+[<0007FC0000003FFF800000FC07E00003F001F80007E000FC000FC0007E001F80003F00
+1F80003F003F00001F803F00001F807F00001FC07E00000FC07E00000FC0FE00000FE0FE
+00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00
+000FE07E00000FC07F00001FC07F00001FC03F00001F803F81F03F801F83F83F000FC70C
+7E0007E606FC0003F607F80000FF07E000003FFF80000007FF80200000038020000001C0
+20000001E0E0000001FFE0000001FFC0000000FFC0000000FFC00000007F800000007F00
+0000001E00>
+40 44 -3 33 42] 81 dc
+[<00FE0003FFC00601E00C00701800701800383800383C00383F00383F80783FE0701FF8
+E01FFFC00FFF8007FFC003FFE007FFF01E7FF83C1FFC7807FC7801FEF000FEF0003EF000
+1EF0001EF0001CF8001C7800383C00381F01F00FFFC001FF00>
+24 32 -2 31 28] 56 dc
+77 @bop1
+cmmi10.300 sf
+421 248(x)s
+134(x)h
+cmbx10.300 sf
+590 148(quic)s
+-1(k)h
+14(name)h
+cmbx12.300 sf
+177 42(3.10.7)s
+55(Quic)h
+-2(k)h
+19(Names)h
+177 1478(3.10.8)s
+55(Inserting)h
+18(End)h
+19(of)h
+19(Line)h
+17(Mark)h
+-2(ers)h
+cmtt10.300 sf
+1294 198(@<Sloth@>)s
+377 248(@#)s
+177 374(quick_name)s
+20(=)h
+21("@#")h
+21(non_space_print)h
+-1(able)h
+1842 499(@#X)s
+429 549(@<X@>)s
+177 775(@!)s
+22(Define)h
+20(@<D@>)h
+21(as)h
+21("")h
+22(to)h
+21(turn)h
+21(on)h
+21(debug)h
+21(code)h
+21(and)h
+21("--")h
+21(to)h
+22(turn)h
+21(it)h
+21(off.)h
+177 824(@$@<D@>@{--@})s
+177 874(@<D@>assert\(b)s
+-1(>3\);)h
+177 924(@<D@>if)s
+21(x>7)h
+21(then)h
+21(write\("erro)h
+-1(r"\))h
+20(end)h
+21(if)h
+177 1175(@!)s
+22(Define)h
+20(@#|)h
+21(as)h
+22("")h
+21(to)h
+21(turn)h
+21(on)h
+22(debug)h
+21(code)h
+20(and)h
+22("--")h
+21(to)h
+21(turn)h
+21(it)h
+21(off.)h
+177 1225(@$@#|@{--@})s
+177 1275(@#|assert\(b>3)s
+-1(\);)h
+177 1325(@#|if)s
+21(x>7)h
+21(then)h
+21(write\("error")h
+-1(\))h
+20(end)h
+21(if)h
+1448 1585(@+)s
+177 1860(Animal)s
+21(=)h
+21(Kangaroo)h
+177 1910(Size)s
+65(=)h
+21(Medium)h
+177 1959(Speed)s
+43(=)h
+21(Fast)h
+177 2059(Animal)s
+21(=)h
+21(Sloth)h
+177 2109(Size)s
+65(=)h
+21(Medium)h
+177 2159(Speed)s
+43(=)h
+21(Slow)h
+177 2258(Animal)s
+21(=)h
+21(Walrus)h
+177 2308(Size)s
+65(=)h
+21(Big)h
+177 2358(Speed)s
+43(=)h
+21(Medium)h
+177 2609(Animal)s
+21(=)h
+21(Kangaroo)h
+42(@+Size)h
+21(=)h
+21(Medium)h
+43(@+Speed)h
+20(=)h
+22(Fast)h
+86(@+)h
+177 2659(Animal)s
+21(=)h
+21(Sloth)h
+108(@+Size)h
+21(=)h
+21(Medium)h
+43(@+Speed)h
+20(=)h
+22(Slow)h
+86(@+)h
+177 2709(Animal)s
+21(=)h
+21(Walrus)h
+86(@+Size)h
+21(=)h
+21(Big)h
+109(@+Speed)h
+20(=)h
+22(Medium)h
+42(@+)h
+cmr10.300 sf
+177 148(F)s
+-3(unnelW)h
+-3(eb)h
+13(pro)h
+-1(vides)h
+13(a)h
+261(syn)h
+-1(tax)h
+13(as)h
+13(an)h
+13(alternativ)h
+-1(e,)h
+12(for)h
+13(macros)h
+12(whose)h
+13(name)h
+12(consists)h
+14(of)h
+12(a)h
+177 198(single)s
+11(c)h
+-1(haracter,)h
+12(to)h
+10(the)h
+12(angle)h
+10(brac)h
+-1(k)h
+-1(et)h
+11(syn)h
+-1(tax)h
+11(usually)h
+10(used)h
+12(\(e.g.)h
+208(\).)h
+15(A)h
+11(quic)h
+-1(k)h
+10(name)h
+10(sequence)h
+177 248(consists)s
+15(of)h
+94(where)h
+40(,)h
+13(the)h
+14(name)h
+13(of)h
+13(the)h
+15(macro,)h
+12(can)h
+14(b)h
+1(e)h
+14(an)h
+-1(y)h
+14(prin)h
+-1(table)h
+13(c)h
+-1(haracter)h
+16(except)h
+15(space.)h
+177 499(The)s
+14(result)h
+14(is)h
+13(iden)h
+-1(tical)h
+12(to)h
+13(the)h
+14(equiv)h
+-2(alen)h
+-1(t)h
+12(ordinary)h
+13(name)h
+12(syn)h
+-1(tax,)h
+13(but)h
+13(is)h
+13(shorter.)h
+19(F)h
+-3(or)h
+13(example,)h
+90(is)h
+177 549(equiv)s
+-2(alen)h
+-1(t)h
+15(to)h
+126(.)h
+22(This)h
+16(shorter)h
+17(w)h
+-1(a)h
+-1(y)h
+15(of)h
+15(writing)h
+15(one-c)h
+-1(haracter)h
+18(macro)h
+14(names)h
+15(is)h
+16(more)h
+14(con)h
+-1(v)h
+-1(enien)h
+-1(t)h
+177 599(where)s
+14(a)h
+13(macro)h
+12(m)h
+-1(ust)h
+12(b)h
+1(e)h
+13(used)h
+14(v)h
+-1(ery)h
+13(often.)h
+18(F)h
+-3(or)h
+12(example,)h
+12(the)h
+13(macro)h
+12(calls)h
+13(in)h
+12(the)h
+14(follo)h
+-1(wi)h
+-1(ng)h
+11(fragmen)h
+-1(t)h
+11(of)h
+177 649(an)s
+14(Ada)h
+14(program)h
+12(are)h
+14(a)h
+14(little)h
+13(clumsy)h
+-3(.)h
+177 1050(The)s
+14(calls)h
+14(can)h
+14(b)h
+1(e)h
+15(shortened)h
+15(using)h
+14(the)h
+14(alternativ)h
+-1(e)h
+14(syn)h
+-1(tax.)h
+177 1585(An)s
+11(end)h
+11(of)h
+10(line)h
+10(mark)h
+-1(er/c)h
+-1(haracter)h
+11(can)h
+11(b)h
+1(e)h
+11(inserted)h
+12(in)h
+-1(to)h
+10(the)h
+11(text)h
+12(using)h
+10(the)h
+66(sequence.)h
+19(This)h
+10(is)h
+11(exactly)h
+177 1635(equiv)s
+-2(alen)h
+-1(t)h
+15(to)h
+16(a)h
+16(real)h
+16(end)h
+16(of)h
+16(line)h
+15(in)h
+16(the)h
+16(text)h
+17(at)h
+15(the)h
+17(p)h
+1(oin)h
+-1(t)h
+15(where)h
+18(it)h
+15(o)h
+1(ccurs.)h
+26(While)h
+15(this)h
+16(feature)h
+17(ma)h
+-1(y)h
+177 1684(sound)s
+12(rather)h
+13(useless,)h
+14(it)h
+11(is)h
+12(v)h
+-1(ery)h
+13(useful)h
+12(for)h
+12(la)h
+-1(ying)h
+10(out)h
+12(the)h
+12(input)h
+12(\014le.)h
+18(F)h
+-3(or)h
+11(example,)h
+11(the)h
+13(follo)h
+-1(wi)h
+-1(ng)h
+10(input)h
+177 1734(data)s
+14(for)h
+13(a)h
+14(database)h
+14(program)h
+177 2484(can)s
+14(b)h
+1(e)h
+15(con)h
+-1(v)h
+-1(erted)h
+15(in)h
+-1(to)h
+177 2835(whic)s
+-1(h)h
+14(is)h
+14(easier)h
+14(to)h
+14(read,)h
+14(and)h
+14(more)h
+13(easily)h
+13(allo)h
+-1(ws)h
+13(comparisons)h
+12(b)h
+1(et)h
+-1(w)h
+-1(een)h
+16(records.)h
+1042 2940(76)s
+77 @eop
+78 @bop0
+cmbx12.300 sf
+[<01FE0007FF800F83E01E01F03E00F07C00F87C0078FC007CFC007CFC007CFC007EFC00
+7EFC007EFC007E7C00FE7C00FE3E01FE1E037E0FFE7E07FC7E00207E00007C00007C1E00
+7C3F00F83F00F83F00F03F01E01E03C01C0F800FFE0003F800>
+24 32 -2 31 28] 57 dc
+78 @bop1
+cmsy10.300 sf
+1130 486(f)s
+cmti10.300 sf
+1621 187(exactly)s
+cmbx10.300 sf
+1445 2398(inpu)s
+-1(t)h
+14(\014le)h
+690 2447(inclu)s
+-1(de)h
+14(\014les)h
+cmbx12.300 sf
+177 42(3.10.9)s
+55(Suppressing)h
+19(End)h
+19(of)h
+19(Line)h
+17(Mark)h
+-2(ers)h
+177 1155(3.10.10)s
+55(Include)h
+18(Files)h
+cmtt10.300 sf
+1028 137(@-)s
+660(@-)h
+1238 237(@!)s
+637 287(@-)s
+1224(@-)h
+943 386(@+)s
+1108 486(@)s
+177 583(@$@<Walrus@>@)s
+-1({@-)h
+177 633(I)s
+22(am)h
+21(the)h
+21(walrus!@})h
+177 826(@$@<Walrus@>@)s
+-1({I)h
+20(am)h
+21(the)h
+21(walrus!@})h
+638 922(@!)s
+1041(@-)h
+473 1301(@i)s
+21(<filename>)h
+261 1519(@i)s
+738 1619(@!)s
+177 1715("Uh)s
+21(Oh,)h
+22(It's)h
+20(the)h
+22(Fuzz.)h
+20(We're)h
+21(busted!")h
+20(said)h
+21(Baby)h
+21(Bear.)h
+177 1765(@i)s
+22(mr_plod.tx)h
+-1(t)h
+177 1815("Quick!)s
+21(Flush)h
+20(the)h
+21(stash)h
+21(down)h
+21(the)h
+21(dunny)h
+21(and)h
+21(let's)h
+21(split.")h
+20(said)h
+21(Father)h
+21(Bear.)h
+625 1912(mr)s
+15(plod.txt)h
+177 2008("'Ello,)s
+21('Ello,)h
+20('Ello!)h
+21(What's)h
+20(all)h
+21(this)h
+21('ere)h
+21(then?")h
+21(Mr)h
+21(Plod)h
+21(exclaimed.)h
+177 2201("Uh)s
+21(Oh,)h
+22(It's)h
+20(the)h
+22(Fuzz.)h
+20(We're)h
+21(busted!")h
+20(said)h
+21(Baby)h
+21(Bear.)h
+177 2251("'Ello,)s
+21('Ello,)h
+20('Ello!)h
+21(What's)h
+20(all)h
+21(this)h
+21('ere)h
+21(then?")h
+21(Mr)h
+21(Plod)h
+21(exclaimed.)h
+177 2301("Quick!)s
+21(Flush)h
+20(the)h
+21(stash)h
+21(down)h
+21(the)h
+21(dunny)h
+21(and)h
+21(let's)h
+21(split.")h
+20(said)h
+21(Father)h
+21(Bear.)h
+1124 2635(@)s
+cmr10.300 sf
+177 137(End)s
+15(of)h
+15(line)h
+14(mark)h
+-1(ers)h
+15(can)h
+15(b)h
+1(e)h
+15(suppresse)h
+1(d)h
+17(b)h
+-1(y)h
+14(the)h
+74(sequence)h
+1(.)h
+23(A)h
+15(single)h
+14(o)h
+1(ccurrenc)h
+1(e)h
+17(of)h
+14(a)h
+74(sequence)h
+177 187(serv)s
+-1(es)h
+20(to)h
+18(suppress)h
+20(only)h
+18(the)h
+18(end)h
+19(of)h
+18(line)h
+17(mark)h
+-1(er)h
+18(follo)h
+-1(wi)h
+-1(ng)h
+16(it)h
+18(and)h
+18(m)h
+-1(ust)h
+17(app)h
+1(ear)h
+160(b)h
+1(efore)h
+19(the)h
+177 237(end)s
+17(of)h
+16(line)h
+17(mark)h
+-1(er)h
+15(to)h
+17(b)h
+1(e)h
+17(suppresse)h
+1(d.)h
+28(No)h
+17(trailing)h
+15(spaces,)h
+89(comm)h
+-1(en)h
+-1(ts,)h
+16(or)h
+16(an)h
+-1(y)h
+17(other)h
+17(c)h
+-1(haracters)h
+177 287(are)s
+15(p)h
+1(ermitted)h
+15(b)h
+1(et)h
+-1(w)h
+-1(een)h
+16(a)h
+72(sequence)h
+17(and)h
+14(the)h
+15(end)h
+15(of)h
+14(line)h
+14(that)h
+15(it)h
+14(is)h
+15(supp)h
+1(osed)h
+16(to)h
+14(suppress.)h
+22(The)h
+177 337(sequence)s
+17(is)h
+14(useful)h
+14(for)h
+14(constructing)h
+15(long)h
+14(output)h
+14(lines)h
+14(without)h
+14(them)h
+14(ha)h
+-1(ving)h
+13(to)h
+14(app)h
+1(ear)h
+15(in)h
+14(the)h
+14(input.)h
+177 386(It)s
+12(can)h
+13(also)h
+11(b)h
+1(e)h
+13(used)h
+13(in)h
+11(the)h
+13(same)h
+11(w)h
+-1(a)h
+-1(y)h
+12(as)h
+12(the)h
+68(w)h
+-1(as)h
+12(used)h
+13(in)h
+12(the)h
+12(previous)h
+13(section)h
+13(to)h
+12(assist)h
+12(in)h
+12(exp)h
+1(osing)h
+177 436(the)s
+17(structure)h
+19(of)h
+15(output)h
+17(text)h
+17(without)h
+15(a\013ecting)h
+17(the)h
+17(output)h
+16(text)h
+17(itself.)h
+25(Finally)h
+-3(,)h
+15(it)h
+16(is)h
+16(in)h
+-1(v)h
+-2(aluabl)h
+-1(e)h
+15(for)h
+177 486(suppressing)s
+15(the)h
+15(EOL)h
+14(after)h
+14(the)h
+15(op)h
+1(ening)h
+13(macro)h
+13(text)h
+71(construct.)h
+20(F)h
+-3(or)h
+13(example:)h
+177 729(is)s
+14(equiv)h
+-2(alen)h
+-1(t)h
+13(to)h
+177 922(The)s
+14(comm)h
+-1(en)h
+-1(t)h
+12(construct)h
+15(\()h
+44(\))h
+18(can)h
+13(also)h
+13(b)h
+1(e)h
+13(used)h
+14(to)h
+13(suppress)h
+15(end)h
+14(of)h
+13(lines.)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(the)h
+70(construct)h
+177 972(should)s
+15(b)h
+1(e)h
+15(preferred)h
+17(for)h
+14(this)h
+15(purp)h
+1(ose)h
+16(as)h
+14(it)h
+15(mak)h
+-1(es)h
+13(explicit)h
+15(the)h
+15(programm)h
+-1(er's)h
+13(in)h
+-1(ten)h
+-1(t)h
+15(to)h
+14(suppress)h
+17(the)h
+177 1022(end)s
+15(of)h
+13(line.)h
+177 1251(F)s
+-3(unnelW)h
+-3(eb)h
+12(pro)h
+-1(vides)h
+13(an)h
+13(include)h
+13(\014le)h
+12(facilit)h
+-1(y)h
+11(with)h
+13(a)h
+12(maxim)h
+-2(um)h
+9(depth)h
+13(of)h
+12(10.)h
+18(When)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(sees)h
+14(a)h
+177 1301(line)s
+14(of)h
+13(the)h
+15(form)h
+297(,)h
+12(it)h
+14(replaces)h
+15(the)h
+15(en)h
+-1(tire)h
+14(line)h
+14(\(including)h
+13(the)h
+15(EOL\))h
+14(with)h
+14(the)h
+15(con)h
+-1(ten)h
+-1(ts)h
+177 1350(of)s
+11(the)h
+12(sp)h
+1(eci\014ed)h
+13(include)h
+12(\014le.)h
+17(F)h
+-3(unnelW)h
+-3(eb's)h
+11(include)h
+11(\014le)h
+12(facilit)h
+-1(y)h
+10(is)h
+11(in)h
+-1(tended)h
+12(to)h
+12(op)h
+1(erate)h
+12(at)h
+11(the)h
+13(line)h
+11(lev)h
+-1(el.)h
+177 1400(If)s
+15(the)h
+16(last)h
+15(line)h
+15(of)h
+14(the)h
+16(include)h
+16(\014le)h
+15(is)h
+15(not)h
+15(terminated)h
+15(b)h
+-1(y)h
+15(an)h
+15(EOL,)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(issues)h
+16(a)h
+15(w)h
+-1(arning)h
+15(and)h
+177 1450(in)s
+-1(terts)h
+15(one)h
+14(\(in)h
+13(the)h
+15(cop)h
+-1(y)h
+14(in)h
+13(memory\).)h
+177 1519(The)s
+70(construct)h
+14(is)h
+13(illegal)h
+11(if)h
+12(it)h
+12(app)h
+1(ears)h
+14(an)h
+-1(ywhere)h
+13(except)h
+15(at)h
+12(the)h
+14(start)h
+13(of)h
+12(a)h
+13(line.)h
+17(The)h
+13(construct)h
+15(m)h
+-1(ust)h
+177 1569(b)s
+1(e)h
+13(follo)h
+-1(w)h
+-1(ed)h
+11(b)h
+-1(y)h
+12(a)h
+12(single)h
+12(blank.)h
+17(The)h
+13(\014le)h
+12(name)h
+11(is)h
+12(de\014ned)h
+14(to)h
+12(b)h
+1(e)h
+13(ev)h
+-1(erything)h
+13(b)h
+1(et)h
+-1(w)h
+-1(een)h
+13(the)h
+13(blank)h
+12(and)h
+12(the)h
+177 1619(end)s
+15(of)h
+13(the)h
+14(line)h
+14(\(no)h
+14(comm)h
+-1(en)h
+-1(ts)h
+13(\()h
+44(\))h
+18(please!\).)h
+18(Example:)h
+17(If)h
+13(the)h
+15(input)h
+13(\014le)h
+14(is)h
+177 1912(and)s
+14(there)h
+15(is)h
+14(a)h
+13(\014le)h
+14(called)h
+261(con)h
+-1(taining)h
+177 2105(then)s
+15(the)h
+14(scanner)h
+15(translates)h
+15(the)h
+15(input)h
+13(\014le)h
+14(in)h
+-1(to)h
+177 2398(As)s
+14(a)h
+14(p)h
+1(oin)h
+-1(t)h
+13(of)h
+13(terminology)h
+-4(,)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+14(calls)h
+13(the)h
+14(original)h
+12(input)h
+14(\014le)h
+13(the)h
+217(and)h
+13(calls)h
+14(include)h
+177 2447(\014les)s
+14(and)h
+14(their)h
+14(included)h
+14(\014les)h
+262(.)h
+177 2516(The)s
+13(include)h
+12(\014le)h
+12(construct)h
+14(op)h
+1(erates)h
+14(at)h
+12(a)h
+12(v)h
+-1(ery)h
+12(lo)h
+-1(w)h
+12(lev)h
+-1(el.)h
+17(An)h
+12(include)h
+13(line)h
+11(can)h
+13(app)h
+1(ear)h
+12(an)h
+-1(ywhere)h
+13(in)h
+12(the)h
+177 2566(input)s
+14(\014le)h
+14(regardless)h
+15(of)h
+13(the)h
+15(con)h
+-1(text)h
+14(of)h
+13(the)h
+15(surrounding)h
+14(lines.)h
+177 2635(F)s
+-3(unnelW)h
+-3(eb)h
+11(sets)h
+13(the)h
+13(sp)h
+1(ecial)h
+12(c)h
+-1(haracter)h
+13(to)h
+11(the)h
+13(default)h
+11(\()h
+22(\))h
+12(at)h
+12(the)h
+12(start)h
+12(of)h
+11(eac)h
+-1(h)h
+13(include)h
+11(\014le)h
+12(and)h
+12(restores)h
+177 2685(it)s
+13(to)h
+13(its)h
+12(previous)h
+14(v)h
+-2(alue)h
+12(at)h
+13(the)h
+13(end)h
+14(of)h
+12(the)h
+14(include)h
+13(\014le.)h
+17(This)h
+13(allo)h
+-1(ws)h
+12(macro)h
+12(libraries)h
+12(to)h
+13(b)h
+1(e)h
+14(constructed)h
+177 2735(and)s
+12(included)h
+11(that)h
+12(are)h
+12(indep)h
+1(enden)h
+-1(t)h
+13(of)h
+11(the)h
+12(prev)h
+-2(ailing)h
+10(sp)h
+1(ecial)h
+11(c)h
+-1(haracter)h
+13(at)h
+12(the)h
+12(p)h
+1(oin)h
+-1(t)h
+11(of)h
+11(inclusion.)h
+16(The)h
+177 2785(same)s
+16(go)h
+1(es)h
+17(for)h
+16(the)h
+17(input)h
+16(line)h
+16(length)h
+16(limit)h
+14(whic)h
+-1(h)h
+16(is)h
+17(reset)h
+18(to)h
+16(the)h
+17(default)h
+16(v)h
+-2(alue)h
+16(at)h
+16(the)h
+17(start)h
+17(of)h
+16(eac)h
+-1(h)h
+177 2835(include)s
+14(\014le)h
+14(and)h
+14(restored)h
+15(to)h
+14(its)h
+14(previous)h
+14(v)h
+-2(alue)h
+13(afterw)h
+-1(ards.)h
+1042 2940(77)s
+14 2 672 1912 r
+78 @eop
+79 @bop0
+79 @bop1
+cmti10.300 sf
+1350 193(pr)s
+-2(agma)h
+cmbx12.300 sf
+177 42(3.10.11)s
+55(Pragmas)h
+cmbx10.300 sf
+1100 193(pragma)s
+177 1418(3.10.11.1)s
+48(Inden)h
+-1(tat)h
+-1(ion)h
+556 2402(no)s
+15(inden)h
+-2(tati)h
+-1(on)h
+556 2835(blank)s
+14(inden)h
+-1(t)h
+-1(ati)h
+-1(on)h
+cmtt10.300 sf
+1688 268(@p)s
+177 485(pragma)s
+21(=)h
+21(pragma_ident)h
+20(|)h
+21(pragma_mill)h
+20(|)h
+21(pragma_moll)h
+20(|)h
+21(pragma_typesett)h
+-1(er)h
+177 719(s)s
+174(=)h
+22({")h
+21("}+)h
+177 768(ps)s
+152(=)h
+22(\("@p")h
+21(|)h
+21("@P"\))h
+21(")h
+22(")h
+177 818(number)s
+64(=)h
+22({)h
+21(decimal_digit)h
+20(}+)h
+177 868(numorinf)s
+20(=)h
+22(number)h
+20(|)h
+22("infinity")h
+177 1836(@$@<Loop)s
+20(Structure@>@{@)h
+-1(-)h
+177 1886(i=1;)s
+177 1936(while)s
+21(\(i<=N\))h
+243 1986(@<Loop)s
+20(body@>)h
+177 2036(endwhile)s
+177 2085(@})s
+177 2185(@$@<Loop)s
+20(body@>@{@-)h
+177 2235(a[i]:=0;)s
+177 2285(i:=i+1;@})s
+177 2518(i=1;)s
+177 2568(while)s
+21(\(i<=N\))h
+243 2618(a[i]:=0;)s
+177 2668(i:=i+1;)s
+177 2718(endwhile)s
+cmr10.300 sf
+177 143(Most)s
+19(to)h
+1(ols)h
+19(ha)h
+-1(v)h
+-1(e)h
+18(to)h
+19(supp)h
+1(ort)h
+19(some)h
+18(essen)h
+-1(tial,)h
+20(but)h
+19(rather)h
+20(inelegan)h
+-1(t)h
+18(features.)h
+33(In)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+18(these)h
+177 193(messy)s
+14(bits)h
+14(ha)h
+-1(v)h
+-1(e)h
+13(all)h
+13(b)h
+1(een)h
+15(stu\013ed)h
+15(in)h
+-1(to)h
+13(the)h
+15(scanner's)h
+185(\(for)h
+146(tic\))h
+14(construct.)h
+177 268(A)s
+15(pragma)h
+13(consists)h
+16(of)h
+14(a)h
+15(single)h
+14(line)h
+14(of)h
+14(input)h
+15(\(including)h
+14(the)h
+15(EOL\))h
+16(comm)h
+-1(encing)h
+13(with)h
+59(.)h
+20(This)h
+15(m)h
+-1(ust)h
+177 318(b)s
+1(e)h
+15(follo)h
+-1(w)h
+-1(ed)h
+13(b)h
+-1(y)h
+14(a)h
+14(single)h
+14(space,)h
+14(and)h
+14(then)h
+15(the)h
+15(pragma)h
+13(v)h
+-1(erb.)h
+19(This)h
+14(m)h
+-1(ust)h
+14(b)h
+1(e)h
+14(follo)h
+-1(w)h
+-1(ed)h
+13(b)h
+-1(y)h
+14(a)h
+14(sequence)h
+16(of)h
+177 368(zero)s
+15(or)h
+14(more)h
+13(argumen)h
+-1(ts)h
+13(separated)h
+15(b)h
+-1(y)h
+14(one)h
+14(or)h
+14(more)h
+12(spaces.)h
+20(F)h
+-3(our)h
+13(pragmas)h
+13(are)h
+14(a)h
+-1(v)h
+-2(ailabl)h
+-1(e)h
+177 602(The)s
+14(follo)h
+-1(wing)h
+12(syn)h
+-1(tax)h
+14(de\014nitions)h
+13(assist)h
+15(in)h
+13(de\014ning)h
+14(the)h
+15(pragmas.)h
+177 985(The)s
+14(argumen)h
+-1(ts)h
+14(to)h
+13(pragmas)h
+13(are)h
+14(case-sensitiv)h
+-1(e)h
+15(and)h
+14(m)h
+-1(ust)h
+13(b)h
+1(e)h
+14(sp)h
+1(eci\014ed)h
+16(in)h
+13(lo)h
+-1(w)h
+-1(er)h
+14(case.)h
+177 1060(Pragmas)s
+13(are)h
+14(pro)h
+1(cessed)h
+16(and)h
+13(consumed)h
+14(en)h
+-1(tirely)h
+14(b)h
+-1(y)h
+13(the)h
+15(scanner.)h
+19(The)h
+14(parser)h
+15(nev)h
+-1(er)h
+15(sees)h
+15(them)h
+13(and)h
+14(so)h
+177 1110(they)s
+16(can)h
+15(pla)h
+-1(y)h
+14(no)h
+15(part)h
+16(in)h
+14(the)h
+16(parser)h
+16(lev)h
+-1(el)h
+15(syn)h
+-1(tax.)h
+22(As)h
+15(a)h
+15(result,)h
+16(pragma)h
+13(lines)h
+15(can)h
+15(app)h
+1(ear)h
+16(an)h
+-1(ywhere)h
+177 1160(in)s
+16(the)h
+16(en)h
+-1(tire)h
+16(input)h
+16(\014le)h
+16(regardless)h
+17(of)h
+15(the)h
+16(surrounding)h
+16(con)h
+-1(text)h
+17(\(e.g.)h
+15(ev)h
+-1(en)h
+17(in)h
+15(the)h
+16(middle)h
+14(of)h
+15(a)h
+16(macro)h
+177 1209(de\014nition\).)s
+18(The)h
+14(sole)h
+14(e\013ect)h
+16(of)h
+13(a)h
+14(pragma)h
+12(is)h
+13(to)h
+14(mo)h
+1(dify)h
+12(some)h
+13(in)h
+-1(ternal)h
+13(parameter)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb.)h
+177 1284(The)s
+14(follo)h
+-1(wing)h
+12(sections)h
+15(describ)h
+1(e)h
+15(the)h
+15(four)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(pragmas.)h
+177 1520(When)s
+18(F)h
+-3(unnelW)h
+-3(eb)h
+18(expands)h
+18(a)h
+18(macro,)h
+17(it)h
+17(can)h
+18(do)h
+18(so)h
+18(in)h
+17(t)h
+-1(w)h
+-1(o)h
+18(w)h
+-1(a)h
+-1(ys.)h
+29(First)h
+18(it)h
+18(can)h
+18(treat)h
+19(the)h
+18(text)h
+18(it)h
+18(is)h
+177 1570(pro)s
+1(cessing)h
+16(as)h
+14(a)h
+14(one-dimensional)h
+12(stream)h
+14(of)h
+14(text,)h
+15(and)h
+14(merely)h
+13(insert)h
+15(the)h
+15(b)h
+1(o)h
+1(dy)h
+15(of)h
+14(the)h
+15(macro)h
+13(in)h
+14(place)h
+177 1620(of)s
+11(the)h
+11(macro)h
+10(call.)h
+17(Second,)h
+12(it)h
+10(can)h
+12(treat)h
+12(the)h
+11(text)h
+12(of)h
+11(the)h
+11(macro)h
+10(as)h
+11(a)h
+11(t)h
+-1(w)h
+-1(o)h
+11(dimensional)h
+9(ob)h
+2(ject)h
+12(and)h
+11(inden)h
+-1(t)h
+177 1670(eac)s
+-1(h)h
+15(line)h
+14(of)h
+14(the)h
+15(macro)h
+14(b)h
+1(o)h
+1(dy)h
+14(b)h
+-1(y)h
+14(the)h
+16(amoun)h
+-1(t)h
+12(that)h
+15(the)h
+15(macro)h
+13(call)h
+14(itself)h
+14(w)h
+-1(as)h
+15(inden)h
+-1(ted.)h
+20(Consider)h
+15(the)h
+177 1719(follo)s
+-1(wing)h
+11(macros.)h
+177 2402(Under)s
+15(the)h
+14(regime)h
+13(of)h
+331(the)h
+15(lo)h
+1(op)h
+13(structure)h
+16(macro)h
+12(expands)h
+15(to:)h
+177 2835(Under)s
+15(the)h
+14(regime)h
+13(of)h
+395(the)h
+15(lo)h
+1(op)h
+13(structure)h
+16(macro)h
+13(expands)h
+14(to:)h
+1042 2940(78)s
+79 @eop
+80 @bop0
+80 @bop1
+cmti10.300 sf
+1031 1742(dynamic)s
+-2(al)h
+2(ly)h
+cmbx10.300 sf
+177 1242(3.10.11.2)s
+48(Maxim)h
+-1(um)h
+15(Input)h
+14(Line)h
+14(Length)h
+177 2358(3.10.11.3)s
+48(Maxim)h
+-1(um)h
+15(Output)h
+13(File)h
+14(Line)h
+15(Length)h
+cmtt10.300 sf
+177 42(i=1;)s
+177 91(while)s
+21(\(i<=N\))h
+243 141(a[i]:=0;)s
+243 191(i:=i+1;)s
+177 241(endwhile)s
+259 363(indentation)s
+177 535(pragma_ident)s
+19(=)h
+22(ps)h
+21("indentation")h
+20(s)h
+21("=")h
+21(s)h
+22(\("blank")h
+20(|)h
+22("none"\))h
+177 780(@p)s
+22(indentatio)h
+-1(n)h
+20(=)h
+22(blank)h
+177 830(@p)s
+22(indentatio)h
+-1(n)h
+20(=)h
+22(none)h
+177 1619(pragma_mill)s
+20(=)h
+21(ps)h
+22("maximum_in)h
+-1(put_l)h
+-1(ine_l)h
+-1(engt)h
+-1(h")h
+20(s)h
+21("=")h
+22(s)h
+21(numorinf)h
+177 2835(pragma_moll)s
+20(=)h
+21(ps)h
+22("maximum_ou)h
+-1(tput_)h
+-1(line_)h
+-1(leng)h
+-1(th")h
+20(s)h
+21("=")h
+21(s)h
+22(numorinf)h
+cmr10.300 sf
+177 363(The)s
+261(pragma)h
+9(determines)h
+10(whic)h
+-1(h)h
+11(of)h
+10(these)h
+12(t)h
+-1(w)h
+-1(o)h
+9(regimes)h
+10(will)h
+9(b)h
+1(e)h
+11(used)h
+12(to)h
+10(expand)h
+11(the)h
+11(macros)h
+177 413(when)s
+15(constructing)h
+14(the)h
+15(pro)h
+1(duct)h
+15(\014les.)h
+18(The)h
+14(syn)h
+-1(tax)h
+14(of)h
+14(the)h
+14(pragma)h
+12(is:)h
+177 658(Its)s
+15(t)h
+-1(w)h
+-1(o)h
+13(forms)h
+12(lo)h
+1(ok)h
+13(lik)h
+-1(e)h
+13(this:)h
+177 952(In)s
+13(the)h
+14(curren)h
+-1(t)h
+15(v)h
+-1(ersion)h
+14(of)h
+12(F)h
+-3(unnelW)h
+-3(eb,)h
+13(the)h
+14(inden)h
+-1(tation)h
+12(regime)h
+12(is)h
+14(an)h
+13(attribute)h
+13(that)h
+14(is)h
+13(attac)h
+-1(hed)h
+14(to)h
+13(an)h
+177 1002(en)s
+-1(tire)h
+13(run)h
+13(of)h
+11(T)h
+-3(angle;)h
+12(it)h
+12(is)h
+12(not)h
+12(p)h
+1(ossible)h
+13(to)h
+12(bind)h
+12(it)h
+12(to)h
+12(particular)h
+12(pro)h
+1(duct)h
+13(\014les)h
+13(or)h
+12(to)h
+12(particular)h
+12(macros.)h
+177 1052(As)s
+13(a)h
+11(result,)h
+13(it)h
+11(do)h
+1(esn't)h
+13(matter)h
+11(where)h
+13(inden)h
+-1(tation)h
+12(pragmas)h
+10(o)h
+1(ccur)h
+13(in)h
+12(the)h
+12(input)h
+12(\014le)h
+12(or)h
+12(ho)h
+-1(w)h
+11(man)h
+-1(y)h
+10(there)h
+177 1102(are)s
+14(so)h
+14(long)h
+13(as)h
+14(they)h
+15(are)h
+14(all)h
+13(the)h
+14(same.)h
+17(By)h
+14(default)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(uses)h
+15(blank)h
+14(inden)h
+-1(tation.)h
+177 1348(F)s
+-3(unnelW)h
+-3(eb)h
+19(generates)h
+21(an)h
+19(error)h
+20(for)h
+19(eac)h
+-1(h)h
+20(input)h
+19(line)h
+19(that)h
+19(exceeds)h
+22(a)h
+19(certain)h
+20(maxi)h
+-1(m)h
+-2(um)h
+16(n)h
+-1(um)h
+-1(b)h
+1(er)h
+18(of)h
+177 1397(c)s
+-1(haracters.)h
+20(A)h
+-1(t)h
+13(the)h
+14(start)h
+14(of)h
+13(the)h
+14(pro)h
+1(cessing)h
+15(of)h
+12(eac)h
+-1(h)h
+14(input)h
+13(\014le)h
+14(and)h
+13(eac)h
+-1(h)h
+14(include)h
+13(\014le,)h
+13(this)h
+14(maxi)h
+-1(m)h
+-2(um)h
+10(is)h
+177 1447(set)s
+15(to)h
+14(a)h
+14(default)h
+14(v)h
+-2(alue)h
+14(of)h
+13(80.)h
+19(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(the)h
+15(maxim)h
+-3(um)h
+11(can)h
+15(b)h
+1(e)h
+15(c)h
+-1(hanged)h
+14(using)h
+14(a)h
+14(maxim)h
+-3(um)h
+11(input)h
+14(line)h
+177 1497(length)s
+14(pragma.)h
+177 1742(The)s
+15(maxim)h
+-3(um)h
+11(input)h
+14(line)h
+13(length)h
+15(can)h
+14(b)h
+1(e)h
+15(v)h
+-2(aried)h
+242(throughout)h
+14(the)h
+15(input)h
+14(\014le.)h
+19(Eac)h
+-1(h)h
+14(maxi-)h
+177 1792(m)s
+-1(um)h
+7(input)h
+9(line)h
+9(length)h
+10(pragma's)h
+8(scop)h
+1(e)h
+10(co)h
+-1(v)h
+-1(ers)h
+11(the)h
+10(line)h
+9(follo)h
+-1(wing)h
+7(the)h
+10(pragma)h
+8(through)h
+10(to)h
+9(and)h
+10(including)h
+177 1841(the)s
+17(next)h
+17(maxim)h
+-3(um)h
+13(input)h
+16(line)h
+16(length)h
+17(pragma,)h
+14(but)h
+17(not)h
+16(co)h
+-1(v)h
+-1(ering)h
+16(an)h
+-1(y)h
+16(in)h
+-1(terv)h
+-1(ening)h
+16(include)h
+17(\014les.)h
+26(A)h
+-1(t)h
+177 1891(the)s
+14(start)h
+14(of)h
+13(an)h
+13(include)h
+14(\014le,)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(resets)h
+15(the)h
+14(maxim)h
+-2(um)h
+10(input)h
+13(line)h
+13(length)h
+13(to)h
+14(the)h
+14(default)h
+13(v)h
+-2(alue.)h
+177 1941(It)s
+14(restores)h
+16(it)h
+14(to)h
+13(its)h
+14(previous)h
+14(v)h
+-2(alue)h
+14(at)h
+13(the)h
+15(end)h
+14(of)h
+14(the)h
+14(include)h
+14(\014le.)h
+177 2018(This)s
+18(pragma)h
+17(is)h
+18(useful)h
+18(for)h
+18(detecting)h
+20(text)h
+19(that)h
+18(has)h
+19(stra)h
+-1(y)h
+-1(ed)h
+19(o\013)h
+18(the)h
+19(righ)h
+-1(t)h
+18(side)h
+18(of)h
+18(the)h
+19(screen)h
+20(when)h
+177 2068(editing.)s
+25(If)h
+16(y)h
+-1(ou)h
+15(use)h
+17(F)h
+-3(unnelW)h
+-3(eb,)h
+16(and)h
+16(set)h
+18(the)h
+16(maxim)h
+-2(um)h
+13(input)h
+16(line)h
+15(length)h
+17(to)h
+16(b)h
+1(e)h
+17(the)h
+16(width)h
+16(of)h
+16(y)h
+-1(our)h
+177 2118(editing)s
+16(windo)h
+-1(w,)h
+16(y)h
+-1(ou)h
+16(will)h
+14(nev)h
+-1(er)h
+18(b)h
+1(e)h
+17(caugh)h
+-1(t)h
+16(b)h
+-1(y)h
+-3(,)h
+16(for)h
+16(example,)h
+15(o\013-screen)h
+18(op)h
+1(ening)h
+16(commen)h
+-1(t)h
+15(sym)h
+-1(b)h
+1(ols.)h
+177 2168(Y)s
+-3(ou)h
+12(can)h
+12(also)h
+11(b)h
+1(e)h
+13(sure)h
+13(that)h
+12(y)h
+-1(our)h
+12(source)h
+13(text)h
+12(can)h
+13(b)h
+1(e)h
+12(prin)h
+-1(ted)h
+13(ra)h
+-1(w,)h
+11(if)h
+11(necess)h
+1(ary)h
+-3(,)h
+13(without)h
+11(lines)h
+12(wrapping)h
+177 2218(around.)s
+177 2463(As)s
+13(w)h
+-1(ell)h
+11(as)h
+13(k)h
+-1(eeping)h
+12(an)h
+12(ey)h
+-1(e)h
+13(on)h
+12(input)h
+12(line)h
+12(lengths,)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(also)h
+12(k)h
+-1(eeps)h
+13(an)h
+12(ey)h
+-1(e)h
+13(on)h
+12(the)h
+13(line)h
+12(lengths)h
+12(of)h
+177 2513(pro)s
+1(duct)h
+11(\014les)h
+10(and)h
+10(\015ags)h
+10(all)h
+9(lines)h
+10(longer)h
+10(than)h
+10(a)h
+9(certain)h
+11(limi)h
+-1(t)h
+8(with)h
+10(error)h
+11(messages.)h
+17(Unlik)h
+-1(e)h
+9(the)h
+11(maxim)h
+-3(um)h
+177 2563(input)s
+17(line)h
+16(length,)h
+17(whic)h
+-1(h)h
+17(can)h
+17(v)h
+-2(ary)h
+16(dynamicall)h
+-1(y)h
+15(throughout)h
+17(the)h
+17(input)h
+17(\014le,)h
+17(the)h
+17(maxim)h
+-3(um)h
+14(pro)h
+1(duct)h
+177 2613(\014le)s
+18(line)h
+16(length)h
+18(remains)h
+16(\014xed)h
+18(throughout)h
+17(the)h
+18(generation)h
+18(of)h
+17(all)h
+16(the)h
+18(pro)h
+1(duct)h
+18(\014les.)h
+29(The)h
+18(maxim)h
+-3(um)h
+177 2662(pro)s
+1(duct)h
+15(\014le)h
+14(line)h
+13(length)h
+14(pragma)h
+11(allo)h
+-1(ws)h
+13(this)h
+14(v)h
+-2(alue)h
+13(to)h
+13(b)h
+1(e)h
+15(set.)h
+19(If)h
+13(there)h
+15(is)h
+14(more)h
+12(than)h
+14(one)h
+14(suc)h
+-1(h)h
+15(pragma)h
+177 2712(in)s
+14(an)h
+13(input)h
+14(\014le,)h
+13(the)h
+15(pragmas)h
+12(m)h
+-1(ust)h
+13(all)h
+13(sp)h
+1(ecify)h
+14(the)h
+15(same)h
+13(v)h
+-2(alue.)h
+1042 2940(79)s
+80 @eop
+81 @bop0
+cmsy10.300 sf
+[<0000600000600000E00000C00001C0000180000380000300000700000600000600000E
+00000C00001C0000180000380000300000700000600000E00000C00000C00001C0000180
+000380000300000700000600000E00000C00000C00001C00001800003800003000007000
+00600000E00000C00000C00000>
+24 40 -6 29 0] 54 dc
+81 @bop1
+cmsy10.300 sf
+619 2118(6)s
+cmti10.300 sf
+295 1535(dir)s
+-2(e)h
+-2(ctly)h
+cmbx10.300 sf
+177 524(3.10.11.4)s
+48(T)h
+-1(yp)h
+1(esetter)h
+295 1485(Handling)s
+18(of)h
+19(free)h
+18(text:)h
+295 1968(Restricti)s
+-1(ons)h
+14(on)h
+16(the)h
+16(target)h
+15(t)h
+-1(yp)h
+1(esetter)h
+-1(:)h
+cmtt10.300 sf
+1905 126(+W)s
+270 639(typesetter)s
+177 879(pragma_typese)s
+-1(tter)h
+19(=)h
+22(ps)h
+21("typesetter")h
+20(s)h
+21("=")h
+21(s)h
+22(\("none")h
+20(|)h
+22("tex"\))h
+177 1161(@)s
+22(typesetter)h
+19(=)h
+22(none)h
+177 1210(@)s
+22(typesetter)h
+19(=)h
+22(tex)h
+567 1401(none)s
+1224 1485(none)s
+434 1585(\\centerline)s
+876 1635(none)s
+1114 1784(none)s
+431 1834($)s
+1077 1884(\\$)s
+383 2118(typesetter)s
+67(none)h
+1363 2168(troff)s
+1100 2217(typesetter)s
+20(=)h
+22(tex)h
+1134 2317(none)s
+177 2501(none)s
+1229(typesetter)h
+20(=)h
+22(x)h
+343 2651(typesetter)s
+792 2735(typesetter)s
+619(@p)h
+793 2785(@t)s
+cmr10.300 sf
+177 42(The)s
+14(default)h
+14(v)h
+-2(alue)h
+13(is)h
+14(80)h
+13(c)h
+-1(haracters.)h
+177 126(This)s
+14(pragma)h
+13(is)h
+14(only)h
+13(one)h
+15(of)h
+14(t)h
+-1(w)h
+-1(o)h
+13(constrain)h
+-1(ts)h
+15(on)h
+14(the)h
+15(length)h
+14(of)h
+14(the)h
+15(lines)h
+14(of)h
+14(the)h
+15(pro)h
+1(duct)h
+15(\014les.)h
+20(The)h
+177 176(comma)s
+-1(nd)h
+13(line)h
+15(option)h
+14(also)h
+14(con)h
+-1(tributes.)h
+22(The)h
+15(actual)h
+14(v)h
+-2(alue)h
+15(that)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+15(uses)h
+16(is)h
+14(the)h
+16(minim)h
+-3(um)h
+11(of)h
+177 226(the)s
+15(lim)h
+-1(its)h
+12(sp)h
+1(eci\014ed)h
+16(in)h
+13(the)h
+15(comm)h
+-1(and)h
+12(line)h
+13(and)h
+14(pragmas.)h
+177 310(F)s
+-3(unnelW)h
+-3(eb)h
+16(do)h
+1(es)h
+17(not)h
+16(monitor)h
+14(the)h
+17(length)h
+16(of)h
+16(the)h
+17(lines)h
+16(of)h
+15(its)h
+16(other)h
+17(output)h
+17(\014les)h
+16(\(journal)h
+16(\014le,)h
+16(listing)h
+177 360(\014le,)s
+14(do)h
+1(cumen)h
+-1(tation)h
+12(\014le\).)h
+177 639(The)s
+261(pragma)h
+19(allo)h
+-1(ws)h
+20(the)h
+22(user)h
+23(to)h
+21(sp)h
+1(ecify)h
+22(whether)h
+22(the)h
+22(input)h
+21(\014le)h
+21(is)h
+21(supp)h
+1(osed)h
+23(to)h
+21(b)h
+1(e)h
+177 689(t)s
+-1(yp)h
+1(esetter)h
+1(-indep)h
+1(ende)h
+1(n)h
+-1(t,)h
+14(or)h
+11(whether)h
+14(it)h
+11(con)h
+-1(tains)h
+12(comm)h
+-1(ands)h
+10(in)h
+12(a)h
+11(particular)h
+12(t)h
+-1(yp)h
+1(esetter)h
+14(language.)h
+16(The)h
+177 739(pragma)s
+12(has)h
+14(the)h
+15(follo)h
+-1(wi)h
+-1(ng)h
+12(syn)h
+-1(tax.)h
+177 1020(The)s
+14(t)h
+-1(w)h
+-1(o)h
+14(forms)h
+12(of)h
+14(the)h
+14(pragma)h
+12(lo)h
+1(ok)h
+13(lik)h
+-1(e)h
+13(this.)h
+177 1351(A)s
+17(source)h
+18(\014le)h
+17(can)h
+17(con)h
+-1(tain)h
+16(more)h
+16(than)h
+17(one)h
+17(t)h
+-1(yp)h
+1(esetter)h
+19(pragma,)h
+15(but)h
+17(they)h
+18(m)h
+-1(ust)h
+15(all)h
+16(sp)h
+1(ecify)h
+17(the)h
+18(same)h
+177 1401(v)s
+-2(alue.)h
+18(The)h
+14(default)h
+13(is)h
+102(.)h
+17(The)h
+15(t)h
+-1(yp)h
+1(esetter)h
+16(setting)h
+14(a\013ects)h
+15(t)h
+-1(w)h
+-1(o)h
+14(things:)h
+784 1485(If)s
+17(the)h
+17(t)h
+-1(yp)h
+1(esette)h
+1(r)h
+19(is)h
+17(not)h
+105(,)h
+17(W)h
+-3(ea)h
+-1(v)h
+-1(e)h
+16(writes)h
+18(the)h
+18(free)h
+18(text)h
+440 1535(to)s
+16(the)h
+16(do)h
+1(cumen)h
+-1(tation)h
+14(\014le)h
+15(without)h
+15(c)h
+-1(hanging)h
+15(it)h
+14(whatso)h
+1(ev)h
+-1(er.)h
+24(This)h
+15(means)h
+15(that)h
+295 1585(if)s
+12(\(sa)h
+-1(y\))h
+264(app)h
+1(ears)h
+13(in)h
+12(the)h
+13(input)h
+12(\014le,)h
+12(it)h
+12(will)h
+11(copied)h
+13(directly)h
+12(to)h
+12(the)h
+13(do)h
+1(cumen-)h
+295 1635(tation)s
+17(\014le.)h
+27(If)h
+17(the)h
+18(t)h
+-1(yp)h
+1(esetter)h
+19(is)h
+105(,)h
+16(W)h
+-3(ea)h
+-1(v)h
+-1(e)h
+17(in)h
+-1(tercepts)h
+19(an)h
+-1(y)h
+16(c)h
+-1(haracters)h
+19(or)h
+17(sequences)h
+295 1685(that)s
+17(mig)h
+-1(h)h
+-1(t)h
+15(ha)h
+-1(v)h
+-1(e)h
+16(a)h
+16(sp)h
+1(ecial)h
+16(meaning)h
+15(to)h
+16(the)h
+17(target)h
+16(t)h
+-1(yp)h
+1(esetter)h
+19(and)h
+16(replaces)h
+18(them)h
+15(with)h
+295 1734(t)s
+-1(yp)h
+1(esetter)h
+16(comm)h
+-1(ands)h
+12(to)h
+13(t)h
+-1(yp)h
+1(eset)h
+15(the)h
+14(sequences)h
+16(so)h
+13(that)h
+14(they)h
+14(will)h
+12(app)h
+1(ear)h
+14(as)h
+13(they)h
+14(do)h
+13(in)h
+295 1784(the)s
+17(input.)h
+26(F)h
+-3(or)h
+16(example,)h
+15(if)h
+15(the)h
+17(t)h
+-1(yp)h
+1(esette)h
+1(r)h
+18(is)h
+120(and)h
+16(the)h
+17(target)h
+17(t)h
+-1(yp)h
+1(esetter)h
+19(is)h
+16(T)h
+1765 1793(E)s
+1788 1784(X,)s
+295 1834(then)s
+17(if)h
+52(\(the)h
+16(T)h
+581 1843(E)s
+604 1834(X)s
+16(\\mathem)h
+-1(atics)h
+14(mo)h
+1(de")h
+14(c)h
+-1(haracter\))h
+17(app)h
+1(ears)h
+17(in)h
+15(the)h
+16(input)h
+15(\014le,)h
+16(it)h
+15(will)h
+295 1884(b)s
+1(e)h
+15(b)h
+1(e)h
+14(written)h
+15(to)h
+13(the)h
+15(do)h
+1(cumen)h
+-1(tation)h
+13(\014le)h
+13(as)h
+58(.)h
+1099 1968(A)s
+-1(t)h
+15(a)h
+14(later)h
+14(date,)h
+15(di\013eren)h
+-1(t)h
+15(w)h
+-1(ea)h
+-1(v)h
+-1(e)h
+15(mo)h
+1(dules)h
+295 2018(migh)s
+-1(t)h
+12(b)h
+1(e)h
+15(incorp)h
+1(orated)h
+15(in)h
+-1(to)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(to)h
+14(cater)h
+15(for)h
+14(a)h
+14(v)h
+-2(ariet)h
+-1(y)h
+14(of)h
+13(di\013eren)h
+-1(t)h
+15(t)h
+-1(yp)h
+1(esette)h
+1(rs.)h
+295 2068(If)s
+19(this)h
+18(happ)h
+1(ens,)h
+21(it)h
+18(will)h
+18(b)h
+1(e)h
+19(imp)h
+1(ortan)h
+-1(t)h
+17(to)h
+19(ensure)h
+20(that)h
+19(t)h
+-1(yp)h
+1(esetter-sp)h
+2(eci\014c)h
+21(source)h
+20(\014les)h
+295 2118(\(i.e.)s
+254(=)h
+107(\))h
+17(are)h
+19(not)h
+19(pro)h
+1(cessed)h
+20(with)h
+18(di\013eren)h
+-1(t)h
+20(target)h
+19(t)h
+-1(yp)h
+1(esetters.)h
+34(F)h
+-3(or)h
+295 2168(example,)s
+18(a)h
+18(user)h
+19(migh)h
+-1(t)h
+16(inno)h
+1(cen)h
+-1(tly)h
+18(attempt)h
+17(to)h
+18(generate)h
+20(a)h
+145(do)h
+1(cumen)h
+-1(tation)h
+17(\014le)h
+295 2217(from)s
+16(a)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+17(source)h
+19(\014le)h
+17(con)h
+-1(taining)h
+16(a)h
+383(\(and)h
+18(b)h
+-1(y)h
+17(impl)h
+-1(ication)h
+295 2267(T)s
+318 2276(E)s
+341 2267(X)s
+20(con)h
+-1(trol)h
+19(sequences\).)h
+36(The)h
+20(pragma)h
+17(could)h
+19(also)h
+19(b)h
+1(e)h
+20(useful)h
+19(for)h
+19(catc)h
+-1(hing)h
+19(t)h
+-1(yp)h
+1(esetter)h
+295 2317(clashes)s
+12(in)h
+11(source)h
+12(and)h
+11(include)h
+11(\014les.)h
+18(The)h
+11(setting)h
+110(is)h
+11(sp)h
+1(ecial)h
+11(b)h
+1(ecause)h
+13(it)h
+10(is)h
+11(guaran)h
+-1(teed)h
+295 2367(to)s
+14(w)h
+-1(ork)h
+14(with)h
+13(an)h
+-1(y)h
+14(future)h
+14(target)h
+14(t)h
+-1(yp)h
+1(esette)h
+1(r.)h
+177 2451(The)s
+16(aim)h
+13(of)h
+14(all)h
+14(this)h
+15(is)h
+15(to)h
+15(ensure)h
+16(that)h
+16(an)h
+-1(y)h
+14(t)h
+-1(yp)h
+1(esetter)h
+17(dep)h
+1(endenc)h
+1(y)h
+17(is)h
+15(correctly)h
+16(pro)h
+1(claimed.)h
+20(Because)h
+277 2501(is)s
+13(the)h
+14(default)h
+13(t)h
+-1(yp)h
+1(esetter,)h
+15(a)h
+13(user)h
+14(who)h
+13(creates)h
+15(a)h
+13(source)h
+15(\014le)h
+13(without)h
+13(a)h
+331(pragma)h
+177 2551(will)s
+10(so)h
+1(on)h
+12(\014nd)h
+12(that)h
+12(the)h
+13(con)h
+-1(trol)h
+11(sequences)h
+14(they)h
+13(are)h
+12(inserting)h
+12(in)h
+-1(to)h
+11(the)h
+12(source)h
+13(do)h
+1(cumen)h
+-1(t)h
+12(are)h
+12(app)h
+1(earing)h
+177 2601(v)s
+-1(erbatim)h
+14(in)h
+15(the)h
+15(prin)h
+-1(ted)h
+16(do)h
+1(cumen)h
+-1(tation!)h
+21(In)h
+15(order)h
+16(to)h
+15(activ)h
+-2(ate)h
+15(these)h
+16(sequence)h
+1(s,)h
+17(they)h
+16(will)h
+13(b)h
+1(e)h
+16(forced)h
+177 2651(to)s
+14(add)h
+14(a)h
+245(pragma,)h
+12(th)h
+-1(us)h
+14(making)h
+11(the)h
+15(dep)h
+1(endency)h
+16(explicit.)h
+177 2735(It)s
+15(ma)h
+-1(y)h
+12(seem)h
+15(strange)h
+15(to)h
+14(place)h
+15(the)h
+247(setting)h
+15(facilit)h
+-1(y)h
+13(within)h
+14(a)h
+14(pragma)h
+13(\()h
+44(\))h
+14(when)h
+15(there)h
+16(is)h
+177 2785(a)s
+14(separate)h
+16(t)h
+-1(yp)h
+1(esetting)h
+16(construct)h
+16(\()h
+44(\).)h
+20(This)h
+15(has)h
+15(b)h
+1(een)h
+15(done)h
+15(to)h
+15(sustain)h
+15(the)h
+15(rule)h
+15(of)h
+14(th)h
+-1(um)h
+-1(b)h
+13(that)h
+15(sa)h
+-1(ys)h
+177 2835(that)s
+14(pragmas)h
+12(do)h
+14(not)h
+14(participate)h
+14(in)h
+13(the)h
+15(parser-lev)h
+-1(el)h
+14(syn)h
+-1(tax,)h
+14(but)h
+14(t)h
+-1(yp)h
+1(esetter)h
+16(directiv)h
+-1(es)h
+15(do.)h
+1042 2940(80)s
+81 @eop
+82 @bop0
+cmbx10.300 sf
+[<FFFC01FF80FFFC01FF800FC000180007E000300007E000300007F000700003F0006000
+03F800E00001F800C00001FC00C00000FC01800000FC018000007E030000007E03000000
+7F070000003F060000003F8E0000001F8C0000001FCC0000000FD80000000FD800000007
+F000000007F000000007F000000003E000000003E000000001C000000001C00000>
+40 28 -1 27 36] 86 dc
+82 @bop1
+cmbx12.300 sf
+177 42(3.10.12)s
+55(F)h
+-5(reestanding)h
+19(T)h
+-2(yp)h
+2(esetter)h
+16(Directiv)h
+-2(es)h
+cmbx10.300 sf
+367 191(inlin)s
+-1(e)h
+93(freestandi)h
+-1(ng)h
+177 853(3.10.12.1)s
+48(New)h
+17(P)h
+-1(age)h
+177 1624(3.10.12.2)s
+48(T)h
+-4(able)h
+15(of)h
+15(Con)h
+-1(ten)h
+-1(ts)h
+177 2345(3.10.12.3)s
+48(V)h
+-4(ertical)h
+14(Skip)h
+cmtt10.300 sf
+177 673(ftd)s
+21(=)h
+22(ftd_newpage)h
+19(|)h
+22(ftd_toc)h
+20(|)h
+22(ftd_vskip)h
+20(|)h
+21(ftd_title)h
+177 723(ts)s
+43(=)h
+22("@t)h
+21(")h
+177 1063(ftd_newpage)s
+20(=)h
+21(ts)h
+22("new_page")h
+177 1284(@t)s
+22(new_page)h
+177 1834(ftd_toc)s
+21(=)h
+21(ts)h
+21("table_of_conte)h
+-1(nts")h
+177 2055(@t)s
+22(table_of_c)h
+-1(onten)h
+-1(ts)h
+177 2605(ftd_vskip)s
+20(=)h
+22(ts)h
+21("vskip")h
+20(s)h
+22(number)h
+21(s)h
+21("mm")h
+177 2825(@t)s
+22(vskip)h
+20(26)h
+22(mm)h
+cmr10.300 sf
+177 141(F)s
+-3(unnelW)h
+-3(eb)h
+12(pro)h
+-1(vides)h
+12(t)h
+-1(w)h
+-1(o)h
+12(kinds)h
+12(of)h
+12(t)h
+-1(yp)h
+1(esetter)h
+15(directiv)h
+-1(e)h
+13(to)h
+12(assist)h
+13(the)h
+12(user)h
+14(to)h
+12(pro)h
+1(duce)h
+13(do)h
+1(cumen)h
+-1(tation.)h
+177 191(These)s
+16(are)h
+143(and)h
+271(.)h
+17(Unlik)h
+-1(e)h
+14(pragmas,)h
+12(eac)h
+-1(h)h
+15(of)h
+14(these)h
+15(categories)h
+15(of)h
+14(directiv)h
+-1(e)h
+15(partic-)h
+177 241(ipates)s
+15(in)h
+14(the)h
+15(parser-lev)h
+-1(el)h
+16(syn)h
+-1(tax)h
+14(and)h
+15(can)h
+15(app)h
+1(ear)h
+15(only)h
+13(in)h
+15(certain)h
+15(con)h
+-1(texts)h
+15(\(see)h
+16(the)h
+16(parser)h
+15(section\).)h
+177 291(Inline)s
+14(directiv)h
+-1(es)h
+16(are)h
+15(designed)h
+15(to)h
+14(b)h
+1(e)h
+15(used)h
+16(within)h
+14(paragraphs)h
+14(to)h
+15(alter)h
+14(the)h
+15(lo)h
+1(ok)h
+14(of)h
+14(the)h
+15(enclosed)h
+16(text.)h
+177 341(F)s
+-3(reestanding)h
+15(t)h
+-1(yp)h
+1(esette)h
+1(r)h
+16(directiv)h
+-1(es)h
+16(are)h
+15(designed)h
+16(to)h
+14(app)h
+1(ear)h
+16(on)h
+14(lines)h
+15(of)h
+14(their)h
+15(o)h
+-1(wn)h
+14(and)h
+15(ha)h
+-1(v)h
+-1(e)h
+15(a)h
+14(bigger)h
+177 390(t)s
+-1(yp)h
+1(ographical)h
+13(impact.)h
+177 463(The)s
+18(syn)h
+-1(tax)h
+17(of)h
+16(freestanding)h
+18(t)h
+-1(yp)h
+1(esetter)h
+20(directiv)h
+-1(es)h
+18(is)h
+17(almo)h
+-1(st)h
+16(iden)h
+-1(tical)h
+17(to)h
+17(that)h
+17(of)h
+16(pragmas.)h
+27(All)h
+16(the)h
+177 513(same)s
+11(syn)h
+-1(tax)h
+13(rules)h
+12(apply)h
+12(\(except)h
+14(that)h
+12(the)h
+13(actual)h
+11(k)h
+-1(eyw)h
+-1(ords)h
+13(are)h
+12(di\013eren)h
+-1(t\).)h
+19(The)h
+13(follo)h
+-1(wi)h
+-1(ng)h
+10(subsections)h
+177 563(describ)s
+1(e)h
+16(the)h
+14(four)h
+14(t)h
+-1(yp)h
+1(esetter)h
+16(directiv)h
+-1(es)h
+15(a)h
+-1(v)h
+-2(ailabl)h
+-1(e.)h
+177 953(The)s
+14(new)h
+15(page)h
+14(pragma)h
+12(is)h
+13(a)h
+14(t)h
+-1(yp)h
+1(esetting)h
+15(pragma)h
+12(with)h
+13(the)h
+15(follo)h
+-1(wing)h
+11(syn)h
+-1(tax.)h
+177 1174(It)s
+14(only)h
+13(form)h
+12(lo)h
+1(oks)h
+14(lik)h
+-1(e)h
+13(this.)h
+177 1394(Its)s
+15(sole)h
+14(e\013ect)h
+16(is)h
+14(to)h
+14(cause)h
+16(a)h
+14(\\skip)h
+14(to)h
+14(a)h
+14(new)h
+14(page")h
+14(command)h
+12(to)h
+14(b)h
+1(e)h
+15(inserted)h
+16(in)h
+-1(to)h
+13(the)h
+15(do)h
+1(cumen)h
+-1(tation)h
+177 1444(\014le.)s
+21(The)h
+15(new)h
+16(page)h
+14(command)h
+13(is)h
+14(suc)h
+-1(h)h
+16(that)h
+15(if)h
+14(the)h
+15(t)h
+-1(yp)h
+1(esetter)h
+17(is)h
+15(already)h
+15(at)h
+14(the)h
+16(top)h
+14(of)h
+15(a)h
+14(page,)h
+15(it)h
+14(will)h
+177 1494(skip)s
+14(to)h
+14(the)h
+14(top)h
+14(of)h
+13(the)h
+15(next)h
+14(page.)h
+177 1724(The)s
+14(new)h
+15(page)h
+14(pragma)h
+12(is)h
+13(a)h
+14(t)h
+-1(yp)h
+1(esetting)h
+15(pragma)h
+12(with)h
+13(the)h
+15(follo)h
+-1(wing)h
+11(syn)h
+-1(tax.)h
+177 1944(It)s
+14(only)h
+13(form)h
+12(lo)h
+1(oks)h
+14(lik)h
+-1(e)h
+13(this.)h
+177 2165(Its)s
+16(sole)h
+15(e\013ect)h
+16(is)h
+15(to)h
+15(instruct)h
+16(W)h
+-3(ea)h
+-1(v)h
+-1(e)h
+15(to)h
+14(insert)h
+16(a)h
+15(table)h
+15(of)h
+14(con)h
+-1(ten)h
+-1(ts)h
+16(at)h
+15(this)h
+15(p)h
+1(oin)h
+-1(t)h
+15(in)h
+14(the)h
+16(prin)h
+-1(ted)h
+16(do)h
+1(cu-)h
+177 2215(men)s
+-1(tation.)h
+16(This)h
+14(pragma)h
+12(do)h
+1(es)h
+15(not)h
+14(skip)h
+13(to)h
+14(a)h
+14(top)h
+14(of)h
+13(a)h
+13(new)h
+15(page)h
+14(\014rst.)h
+177 2445(The)s
+12(v)h
+-1(ertical)h
+11(skip)h
+11(pragma)h
+10(is)h
+11(a)h
+11(t)h
+-1(yp)h
+1(esetting)h
+13(pragma)h
+9(that)h
+12(instructs)h
+12(W)h
+-3(ea)h
+-1(v)h
+-1(e)h
+11(to)h
+11(insert)h
+13(a)h
+11(sp)h
+1(eci\014ed)h
+13(amoun)h
+-1(t)h
+177 2495(of)s
+13(v)h
+-1(ertical)h
+14(space)h
+15(in)h
+-1(to)h
+13(the)h
+15(do)h
+1(cumen)h
+-1(tation.)h
+17(The)h
+14(pragma)h
+12(has)h
+14(the)h
+14(follo)h
+-1(wing)h
+12(syn)h
+-1(tax.)h
+177 2715(F)s
+-3(or)h
+14(example:)h
+1042 2940(81)s
+82 @eop
+83 @bop0
+cmbx12.300 sf
+[<0000180000380000380000700000700000E00000E00000E00001C00001C00003800003
+80000380000700000700000700000E00000E00001C00001C00001C000038000038000070
+0000700000700000E00000E00001C00001C00001C0000380000380000700000700000700
+000E00000E00000E00001C00001C0000380000380000380000700000700000E00000E000
+00C00000>
+24 49 -3 36 28] 47 dc
+83 @bop1
+cmbx10.432 sf
+177 1641(3.11)s
+70(P)h
+-2(arser)h
+cmti10.300 sf
+829 1321(the)s
+16(sc)h
+-2(anner)h
+16(\014nishes)h
+17(running)h
+16(b)h
+-2(efor)h
+-2(e)h
+16(the)h
+16(p)h
+-2(arser)h
+15(starts)h
+15(running.)h
+cmbx12.300 sf
+177 1039(3.10.13)s
+55(Scanner/P)h
+-2(arser)h
+20(In)h
+-2(terface)h
+177 2335(3.11.1)s
+55(High)h
+19(Lev)h
+-2(el)h
+17(Structure)h
+cmbx10.300 sf
+177 42(3.10.12.4)s
+48(Title)h
+861 1860(text)s
+20(tok)h
+-1(ens)h
+28(sp)h
+1(ecial)h
+19(tok)h
+-1(ens)h
+113(t)h
+-1(yp)h
+1(esetter)h
+18(directi)h
+-1(v)h
+-1(e)h
+177 1910(tok)s
+-1(ens)h
+cmtt10.300 sf
+177 269(ftd_title)s
+20(=)h
+22(ts)h
+21("title")h
+20(s)h
+22(font)h
+21(s)h
+22(alignment)h
+19(text)h
+177 319(font)s
+130(=)h
+22("normalfont)h
+-1(")h
+20(|)h
+22("titlefont")h
+19(|)h
+22("smalltitle)h
+-1(font")h
+177 369(alignment)s
+20(=)h
+22("left")h
+20(|)h
+22("centre")h
+20(|)h
+22("right")h
+177 419(text)s
+130(=)h
+22("""")h
+21({printable_)h
+-1(char})h
+19("""")h
+177 890(@t)s
+22(title)h
+20(smalltitlefont)h
+19(centre)h
+21("How)h
+21(to)h
+21(Flip)h
+21(a)h
+22(Bit")h
+378 1471(vskip)s
+177 2613(input_file)s
+20(=)h
+21({text)h
+21(|)h
+22(macro)h
+21(|)h
+21(directive})h
+cmr10.300 sf
+177 147(The)s
+14(title)h
+14(pragma)h
+12(is)h
+14(a)h
+13(t)h
+-1(yp)h
+1(esetting)h
+15(pragma)h
+12(with)h
+14(the)h
+14(follo)h
+-1(wing)h
+12(syn)h
+-1(tax.)h
+177 541(It's)s
+17(e\013ect)h
+19(is)h
+16(to)h
+17(instruct)h
+18(W)h
+-3(ea)h
+-1(v)h
+-1(e)h
+16(to)h
+17(insert)h
+18(a)h
+16(single)h
+17(line)h
+16(in)h
+-1(to)h
+16(the)h
+18(prin)h
+-1(ted)h
+17(do)h
+1(cumen)h
+-1(tation)h
+16(con)h
+-1(taining)h
+177 591(the)s
+14(sp)h
+1(eci\014ed)h
+16(text)h
+14(set)h
+14(in)h
+13(the)h
+15(sp)h
+1(eci\014ed)h
+15(fon)h
+-1(t)h
+13(and)h
+13(aligned)h
+13(in)h
+13(the)h
+14(sp)h
+1(eci\014ed)h
+16(manner.)h
+17(The)h
+14(double)h
+13(quotes)h
+177 641(delimiting)s
+13(the)h
+16(text)h
+16(are)h
+15(for)h
+16(sho)h
+-1(w)h
+15(only;)h
+15(if)h
+14(y)h
+-1(ou)h
+15(w)h
+-1(an)h
+-1(t)h
+15(to)h
+15(put)h
+16(a)h
+15(double)h
+15(quote)h
+16(in)h
+15(the)h
+16(string,)h
+15(y)h
+-1(ou)h
+15(don't)h
+177 691(need)s
+15(to)h
+14(double)h
+14(them.)h
+177 768(Here)s
+15(is)h
+14(an)h
+14(example)h
+12(of)h
+14(the)h
+14(pragma.)h
+177 1144(If)s
+12(the)h
+12(scanner)h
+14(terminates)h
+11(without)h
+12(an)h
+-1(y)h
+11(errors,)h
+13(con)h
+-1(trol)h
+12(is)h
+12(passed)h
+13(to)h
+12(the)h
+12(parser.)h
+19(The)h
+12(parser)h
+13(parses)h
+13(the)h
+177 1194(tok)s
+-1(en)h
+14(list)h
+13(generated)h
+15(b)h
+-1(y)h
+14(the)h
+14(scanner.)h
+19(The)h
+15(tok)h
+-1(en)h
+13(list)h
+14(consists)h
+14(of)h
+13(text)h
+15(scraps,)h
+14(freestanding)h
+14(t)h
+-1(yp)h
+1(esette)h
+1(r)h
+177 1244(directiv)s
+-1(es,)h
+15(and)h
+13(sp)h
+1(ecial)h
+14(sequence)h
+16(tok)h
+-1(ens.)h
+177 1321(The)s
+16(user)h
+16(should)h
+15(b)h
+1(ear)h
+16(in)h
+14(mind)h
+13(that)h
+177 1371(This)s
+15(means)h
+15(that)h
+15(the)h
+15(scanner)h
+17(cannot)h
+15(b)h
+1(e)h
+16(in\015uenced)h
+16(in)h
+15(an)h
+-1(y)h
+15(w)h
+-1(a)h
+-1(y)h
+14(b)h
+-1(y)h
+15(higher)h
+15(order)h
+16(structures)h
+18(suc)h
+-1(h)h
+16(as)h
+177 1421(the)s
+13(parser)h
+13(migh)h
+-1(t)h
+10(parse.)h
+18(F)h
+-3(or)h
+12(example,)h
+11(it)h
+11(is)h
+12(imp)h
+1(ossible)h
+11(to)h
+12(write)h
+12(a)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(macro)h
+11(to)h
+12(include)h
+12(a)h
+12(\014le,)h
+177 1471(or)s
+14(insert)h
+15(a)h
+136(pragma)h
+12(in)h
+-1(to)h
+13(the)h
+15(input)h
+13(text.)h
+177 1760(By)s
+19(the)h
+18(time)h
+17(the)h
+19(parser)h
+19(starts,)h
+20(the)h
+19(scanner)h
+20(has)h
+18(completely)h
+17(terminated.)h
+30(A)h
+-1(t)h
+18(this)h
+19(p)h
+1(oin)h
+-1(t,)h
+18(it)h
+18(is)h
+18(not)h
+177 1810(p)s
+1(ossible)h
+15(for)h
+14(an)h
+-1(y)h
+14(more)h
+13(\014les)h
+15(to)h
+14(b)h
+1(e)h
+15(included,)h
+14(and)h
+15(sp)h
+1(ecial)h
+14(c)h
+-1(haracters)h
+17(are)h
+14(no)h
+15(longer)h
+14(presen)h
+-1(t)h
+16(to)h
+14(confuse)h
+177 1860(things.)s
+29(All)h
+17(that)h
+18(remains)h
+16(is)h
+18(a)h
+17(list)h
+17(of)h
+257(,)h
+311(,)h
+17(and)h
+312 1910(.)s
+17(T)h
+-3(ext)h
+13(tok)h
+-1(ens)h
+15(consist)h
+14(en)h
+-1(tirely)h
+14(of)h
+13(sequences)h
+16(of)h
+14(prin)h
+-1(table)h
+13(c)h
+-1(haracters)h
+16(and)h
+13(end)h
+14(of)h
+14(line)h
+13(mark)h
+-1(ers.)h
+177 1959(Sp)s
+1(ecial)h
+13(tok)h
+-1(ens)h
+14(represen)h
+-1(t)h
+15(the)h
+14(sp)h
+1(ecial)h
+13(sequences)h
+16(that)h
+13(the)h
+14(scanner)h
+14(found)h
+13(in)h
+12(the)h
+14(input)h
+13(\014le.)h
+18(T)h
+-1(yp)h
+1(esetter)h
+177 2009(directiv)s
+-1(e)h
+12(tok)h
+-1(ens)h
+13(represen)h
+-1(t)h
+14(the)h
+12(freestanding)h
+12(t)h
+-1(yp)h
+1(esetter)h
+14(directiv)h
+-1(es)h
+13(that)h
+12(the)h
+12(scanner)h
+13(encoun)h
+-1(tered.)h
+19(The)h
+177 2059(parser)s
+13(consumes)h
+12(the)h
+12(tok)h
+-1(en)h
+12(list)h
+12(and)h
+11(builds)h
+12(a)h
+11(macro)h
+11(table)h
+11(that)h
+12(is)h
+12(later)h
+12(used)h
+12(to)h
+12(generate)h
+13(pro)h
+1(duct)h
+13(\014les.)h
+177 2109(It)s
+14(also)h
+13(constructs)h
+16(a)h
+14(do)h
+1(cumen)h
+-1(t)h
+13(list)h
+14(that)h
+14(is)h
+13(used)h
+15(to)h
+14(generate)h
+15(the)h
+15(do)h
+1(cumen)h
+-1(tation)h
+12(\014le.)h
+177 2186(The)s
+14(syn)h
+-1(tax)h
+14(rules)h
+15(app)h
+1(earing)h
+14(in)h
+13(the)h
+14(follo)h
+-1(wing)h
+12(sections)h
+15(refer)h
+15(to)h
+13(the)h
+15(tok)h
+-1(en)h
+14(list.)h
+177 2440(A)s
+-1(t)h
+13(the)h
+13(highest)h
+13(lev)h
+-1(el,)h
+12(the)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(parser)h
+14(parses)h
+13(the)h
+14(input)h
+12(\014le)h
+12(\(tok)h
+-1(en)h
+13(list\))h
+12(in)h
+-1(to)h
+12(a)h
+13(sequence)h
+14(of)h
+12(text)h
+177 2490(scraps,)s
+15(macro)h
+12(de\014nitions,)h
+14(and)h
+14(t)h
+-1(yp)h
+1(esetter)h
+16(directiv)h
+-1(es.)h
+177 2735(All)s
+20(three)h
+22(of)h
+20(these)h
+22(kinds)h
+21(of)h
+20(comp)h
+1(onen)h
+-1(ts)h
+20(con)h
+-1(tribute)h
+21(to)h
+21(the)h
+21(do)h
+1(cumen)h
+-1(tation)h
+19(\014le,)h
+22(but)h
+21(only)h
+20(macro)h
+177 2785(de\014nitions)s
+15(con)h
+-1(tribute)h
+15(to)h
+14(the)h
+15(pro)h
+1(duct)h
+16(\014les.)h
+20(If)h
+14(all)h
+14(the)h
+15(free)h
+15(text)h
+15(and)h
+15(directiv)h
+-1(es)h
+15(w)h
+-1(ere)h
+16(remo)h
+-1(v)h
+-1(ed)h
+13(from)h
+13(a)h
+177 2835(F)s
+-3(unnelW)h
+-3(eb)h
+14(input)h
+13(\014le,)h
+14(the)h
+14(pro)h
+1(duct)h
+15(\014les)h
+14(w)h
+-1(ould)h
+13(not)h
+14(b)h
+1(e)h
+15(a\013ected.)h
+1042 2940(82)s
+83 @eop
+84 @bop0
+84 @bop1
+cmbx12.300 sf
+177 42(3.11.2)s
+55(F)h
+-5(ree)h
+19(T)h
+-5(ext)h
+177 1671(3.11.3)s
+55(T)h
+-2(yp)h
+2(esetter)h
+17(Directiv)h
+-2(es)h
+cmbx10.300 sf
+177 142(F)s
+-4(ree)h
+18(text)h
+1243 1821(freestandi)s
+-1(n)h
+-1(g)h
+18(t)h
+-1(yp)h
+1(esetter)h
+18(directi)h
+-1(v)h
+-1(es)h
+356 1871(inlin)s
+-1(e)h
+14(t)h
+-1(yp)h
+1(esetter)h
+14(directi)h
+-1(v)h
+-1(es)h
+177 2374(3.11.3.1)s
+48(Section)h
+cmtt10.300 sf
+177 403(free_text)s
+129(=)h
+22(ordinary_te)h
+-1(xt)h
+177 452(ordinary_text)s
+41(=)h
+22({ordinary_c)h
+-1(har)h
+20(|)h
+21(eol)h
+21(|)h
+22(text_special)h
+-1(}+)h
+177 502(text_special)s
+63(=)h
+22("@+")h
+21(|)h
+21("@@")h
+21(|)h
+22("@^")h
+21(char_spec)h
+177 552(ordinary_char)s
+41(=)h
+22(")h
+21(".."~"-special)h
+177 775(This@@)s
+21(is)h
+21(a)h
+22(very@+)h
+20(messy)h
+177 825(@^D\(009\)chunk)s
+19(of)h
+22(text)h
+21(indeed.)h
+177 875(But)s
+21(FunnelWeb)h
+20(still)h
+21(views)h
+21(it)h
+21(as)h
+177 925(a)s
+22(single)h
+20(chunk)h
+21(of)h
+21(text.)h
+177 2082(directive)s
+20(=)h
+22(ftd)h
+21(|)h
+21(itd)h
+177 2131(itd)s
+152(=)h
+22(section)h
+20(|)h
+22(literal)h
+20(|)h
+22(emphasis)h
+177 2735(section)s
+64(=)h
+22("@")h
+21(levelchar)h
+20([name])h
+177 2785(levelchar)s
+20(=)h
+22("A")h
+21(|)h
+21("B")h
+22(|)h
+21("C")h
+21(|)h
+22("D")h
+21(|)h
+22("E")h
+21(|)h
+439 2835("a")s
+21(|)h
+21("b")h
+22(|)h
+21("c")h
+21(|)h
+22("d")h
+21(|)h
+22("e")h
+cmr10.300 sf
+386 142(is)s
+16(an)h
+-1(y)h
+15(text)h
+17(that)h
+17(is)h
+16(not)h
+16(part)h
+16(of)h
+16(a)h
+16(macro)h
+15(de\014nition)h
+15(or)h
+17(a)h
+16(directiv)h
+-1(e.)h
+25(A)h
+16(scrap)h
+18(of)h
+15(free)h
+17(text)h
+177 192(consists)s
+20(of)h
+17(a)h
+18(sequence)h
+21(of)h
+18(items)h
+17(dra)h
+-1(wn)h
+18(from)h
+17(the)h
+19(follo)h
+-1(wi)h
+-1(ng)h
+17(list:)h
+26(non-sp)h
+1(ecial)h
+18(prin)h
+-1(table)h
+18(c)h
+-1(haracters,)h
+177 241(insert-eol)s
+17(sp)h
+1(ecial)h
+17(sequences)h
+1(,)h
+19(insert)h
+17(sp)h
+1(ecial)h
+17(c)h
+-1(haracter)h
+18(sp)h
+1(ecial)h
+17(sequences)h
+1(,)h
+18(insert)h
+18(arbitrary)h
+16(c)h
+-1(haracter)h
+177 291(sp)s
+1(ecial)h
+14(sequence)h
+1(.)h
+177 664(An)s
+14(example)h
+13(of)h
+13(some)h
+13(rather)h
+15(messy)h
+13(free)h
+15(text)h
+15(is)h
+13(as)h
+14(follo)h
+-1(ws:)h
+177 1036(F)s
+-3(unnelW)h
+-3(eb)h
+16(nev)h
+-1(er)h
+17(sees)h
+19(t)h
+-1(w)h
+-1(o)h
+15(text)h
+18(c)h
+-1(h)h
+-1(unks)h
+17(next)h
+17(to)h
+16(eac)h
+-1(h)h
+17(other)h
+17(in)h
+16(the)h
+17(input;)h
+17(they)h
+17(are)h
+17(alw)h
+-1(a)h
+-1(ys)h
+15(merged)h
+177 1086(in)s
+-1(to)h
+13(a)h
+14(single)h
+13(text)h
+15(tok)h
+-1(en.)h
+177 1159(The)s
+18(free)h
+17(text)h
+18(in)h
+17(an)h
+17(input)h
+16(\014le)h
+17(do)h
+1(es)h
+18(not)h
+17(a\013ect)h
+18(the)h
+18(pro)h
+1(duct)h
+18(\014les.)h
+28(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+17(b)h
+-1(y)h
+17(default,)h
+17(it)h
+17(app)h
+1(ears)h
+177 1209(in)s
+17(the)h
+17(prin)h
+-1(ted)h
+18(do)h
+1(cumen)h
+-1(tation)h
+16(exactly)h
+17(as)h
+17(it)h
+16(is)h
+17(giv)h
+-1(en)h
+17(in)h
+16(the)h
+18(input)h
+17(\014le,)h
+17(except)h
+19(that)h
+17(it)h
+16(is)h
+17(\014lled)h
+17(and)h
+177 1259(justi\014ed)s
+14(in)h
+-1(to)h
+14(paragraphs.)h
+177 1332(An)s
+-1(y)h
+20(prin)h
+-1(table)h
+19(c)h
+-1(haracter)h
+21(or)h
+19(particular)h
+19(sequence)h
+22(of)h
+19(c)h
+-1(haracters)h
+21(ma)h
+-1(y)h
+18(app)h
+1(ear)h
+20(in)h
+19(the)h
+20(free)h
+20(text)h
+20(of)h
+19(a)h
+177 1382(do)s
+1(cumen)h
+-1(t.)h
+30(F)h
+-3(unnelW)h
+-3(eb)h
+18(ensures)h
+20(that)h
+18(they)h
+18(will)h
+17(app)h
+1(ear)h
+18(exactly)h
+19(as)h
+18(giv)h
+-1(en)h
+17(in)h
+18(the)h
+18(input)h
+18(\014le,)h
+19(ev)h
+-1(en)h
+19(if)h
+177 1432(they)s
+15(happ)h
+1(en)h
+15(to)h
+14(b)h
+1(e)h
+14(escap)h
+1(e)h
+16(c)h
+-1(haracters)h
+16(or)h
+14(comma)h
+-1(nds)h
+13(in)h
+14(the)h
+14(target)h
+15(t)h
+-1(yp)h
+1(esetter.)h
+21(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+177 1482(also)s
+17(pro)h
+-1(vides)h
+18(a)h
+18(sp)h
+1(ecial)h
+18(mo)h
+1(de)h
+16(that)h
+18(allo)h
+-1(ws)h
+17(this)h
+17(censoring)h
+19(to)h
+17(b)h
+1(e)h
+19(o)h
+-1(v)h
+-1(erridden.)h
+30(See)h
+18(Section)h
+18(for)h
+18(more)h
+177 1532(informati)s
+-1(on.)h
+177 1771(F)s
+-3(unnelW)h
+-3(eb)h
+15(pro)h
+-1(vides)h
+16(a)h
+16(v)h
+-2(ariet)h
+-1(y)h
+15(of)h
+15(t)h
+-1(yp)h
+1(esetter)h
+18(directiv)h
+-1(es)h
+16(to)h
+16(assist)h
+16(the)h
+16(user)h
+17(to)h
+16(t)h
+-1(yp)h
+1(eset)h
+17(the)h
+16(do)h
+1(cumen)h
+-1(t)h
+177 1821(in)s
+17(a)h
+17(t)h
+-1(yp)h
+1(esetter)h
+1(-indep)h
+1(ende)h
+1(n)h
+-1(t)h
+19(w)h
+-1(a)h
+-1(y)h
+-3(.)h
+28(These)h
+18(are)h
+18(divided)h
+17(in)h
+-1(to)h
+177 1871(\(ftd\))s
+14(and)h
+586(\(itd\).)h
+18(The)h
+15(in)h
+-1(ternal)h
+14(syn)h
+-1(tax)h
+14(of)h
+13(the)h
+15(freestanding)h
+14(t)h
+-1(yp)h
+1(esette)h
+1(r)h
+177 1920(directiv)s
+-1(es)h
+14(has)h
+14(already)h
+13(b)h
+1(een)h
+14(discussed)h
+15(in)h
+13(the)h
+14(scanner)h
+15(section.)h
+18(The)h
+14(follo)h
+-1(wing)h
+11(syn)h
+-1(tax)h
+13(rule)h
+13(de\014nes)h
+15(the)h
+177 1970(con)s
+-1(text)h
+15(in)h
+13(whic)h
+-1(h)h
+14(these)h
+15(constructs)h
+16(can)h
+14(app)h
+1(ear.)h
+177 2243(The)s
+14(remainder)h
+14(of)h
+13(this)h
+14(section)h
+15(describ)h
+1(es)h
+16(the)h
+14(inline)h
+13(t)h
+-1(yp)h
+1(esetter)h
+16(directiv)h
+-1(es.)h
+177 2474(The)s
+19(section)h
+18(directiv)h
+-1(e)h
+19(pro)h
+-1(vides)h
+18(a)h
+17(w)h
+-1(a)h
+-1(y)h
+18(for)h
+17(the)h
+19(user)h
+19(to)h
+17(structure)h
+20(the)h
+19(program)h
+16(and)h
+18(do)h
+1(cumen)h
+-1(tation)h
+177 2524(in)s
+-1(to)h
+16(a)h
+16(hierarc)h
+-1(hical)h
+17(tree)h
+18(structure,)h
+18(just)h
+17(as)h
+17(in)h
+16(most)h
+15(large)h
+17(do)h
+1(cumen)h
+-1(ts.)h
+26(A)h
+16(section)h
+18(construct)h
+18(consists)h
+177 2574(of)s
+17(a)h
+17(case-insensitiv)h
+-1(e)h
+18(iden)h
+-1(tifying)h
+16(letter,)h
+19(whic)h
+-1(h)h
+17(determines)h
+18(the)h
+18(absolute)h
+17(lev)h
+-1(el)h
+17(of)h
+17(the)h
+18(section)h
+18(in)h
+17(the)h
+177 2623(do)s
+1(cumen)h
+-1(t,)h
+13(and)h
+14(an)h
+13(optional)h
+13(section)h
+15(name,)h
+12(whic)h
+-1(h)h
+14(has)h
+14(exactly)h
+14(the)h
+14(same)h
+13(syn)h
+-1(tax)h
+14(as)h
+14(a)h
+13(macro)h
+13(name.)h
+1042 2940(83)s
+84 @eop
+85 @bop0
+85 @bop1
+cmcsc10.300 sf
+1691 213(a)s
+752 263(a)s
+cmti10.300 sf
+376 495(must)s
+586 644(inherits)s
+448 2658(any)s
+cmbx10.300 sf
+177 1832(3.11.3.2)s
+48(Literal)h
+13(Directiv)h
+-1(e)h
+cmtt10.300 sf
+385 91(@i)s
+64(@p)h
+141(@t)h
+1527 218(A)s
+574 268(E)s
+1403 318(A)s
+841 368(@D)s
+341(@C)h
+744 821(\\)s
+177 1021(@A@<Life)s
+20(Simulation@>)h
+177 1120(This)s
+21(is)h
+22(the)h
+21(main)h
+21(simulation)h
+19(module)h
+21(for)h
+21(planet)h
+21(earth,)h
+20(simulated)h
+20(down)h
+21(to)h
+21(the)h
+177 1170(molecular)s
+20(level.)h
+21(This)h
+21(is)h
+21(a)h
+22(REALLY)h
+20(big)h
+21(program.)h
+20(I)h
+22(mean)h
+21(really)h
+21(big.)h
+21(I)h
+21(mean,)h
+177 1220(if)s
+22(you)h
+21(thought)h
+20(the)h
+21(X-Windows)h
+20(source)h
+21(code)h
+21(was)h
+21(big,)h
+21(you're)h
+20(in)h
+22(for)h
+21(a)h
+22(shock...)h
+177 1320(@B)s
+22(We)h
+21(start)h
+21(by)h
+21(looking)h
+20(at)h
+22(the)h
+21(code)h
+21(for)h
+21(six)h
+21(legged)h
+21(stick)h
+21(insects)h
+20(as)h
+21(they)h
+177 1370(form)s
+21(a)h
+22(good)h
+21(example)h
+20(of)h
+21(a)h
+22(typical)h
+20(object-oriente)h
+-1(d)h
+20(animal)h
+21(implementat)h
+-1(ion.)h
+177 1469(@$@<Six)s
+21(Legged)h
+20(Stick)h
+21(Insects@>@{@)h
+-1(-)h
+177 1519(slsi.creep;)s
+20(slsi.crawl;)h
+19(slsi.creep;@})h
+667 2136(p)s
+683(tt)h
+21(font)h
+902 2263(tt)s
+21(font)h
+177 2436(literal)s
+21(=)h
+21("@{")h
+21(ordinary_text)h
+19("@}")h
+1073 2658(ordinary)s
+14(text)h
+985 2708(tt)s
+21(font)h
+cmr10.300 sf
+177 42(The)s
+15(section)h
+14(construct)h
+16(is)h
+14(not)h
+14(quite)h
+14(\\inline")h
+13(as)h
+14(it)h
+14(m)h
+-1(ust)h
+13(app)h
+1(ear)h
+14(only)h
+13(at)h
+14(the)h
+15(start)h
+15(of)h
+13(a)h
+14(line.)h
+18(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+177 91(unlik)s
+-1(e)h
+10(the)h
+11(\\)h
+44(",)h
+10(\\)h
+44(",)h
+10(and)h
+10(\\)h
+44(")h
+10(constructs,)h
+13(it)h
+10(do)h
+1(es)h
+11(not)h
+11(consume)h
+10(the)h
+11(remainder)h
+10(of)h
+10(the)h
+11(line)h
+11(\(although)h
+177 141(it)s
+14(w)h
+-1(ould)h
+13(b)h
+1(e)h
+14(silly)h
+13(to)h
+14(place)h
+14(an)h
+-1(ything)h
+13(on)h
+13(the)h
+15(same)h
+13(line)h
+13(an)h
+-1(yw)h
+-1(a)h
+-1(y\).)h
+177 218(F)s
+-3(unnelW)h
+-3(eb)h
+10(pro)h
+-1(vides)h
+11(\014v)h
+-1(e)h
+11(lev)h
+-1(els)h
+11(of)h
+10(sections,)h
+12(ranging)h
+10(from)h
+9(the)h
+11(highest)h
+11(lev)h
+-1(el)h
+10(of)h
+43(\(lik)h
+-1(e)h
+10(a)h
+11(L)h
+4(T)h
+1733 231(E)s
+1756 218(X)s
+11(c)h
+-1(hapter\))h
+177 268(to)s
+15(the)h
+16(lo)h
+-1(w)h
+-1(est)h
+16(lev)h
+-1(el)h
+15(of)h
+52(\(lik)h
+-1(e)h
+15(a)h
+15(L)h
+4(T)h
+794 281(E)s
+817 268(X)s
+16(subsubsubsect)h
+1(ion\).)h
+24(F)h
+-3(unnelW)h
+-3(eb)h
+14(input)h
+16(\014les)h
+15(need)h
+17(not)h
+15(con)h
+-1(tain)h
+177 318(an)s
+-1(y)h
+13(sections)h
+15(at)h
+13(all,)h
+12(but)h
+14(if)h
+13(they)h
+14(do,)h
+13(the)h
+14(\014rst)h
+14(section)h
+15(m)h
+-1(ust)h
+12(b)h
+1(e)h
+14(at)h
+14(lev)h
+-1(el)h
+35(,)h
+13(and)h
+13(follo)h
+-1(wing)h
+11(sections)h
+15(m)h
+-1(ust)h
+177 368(not)s
+17(skip)h
+17(hierarc)h
+-1(hical)h
+17(lev)h
+-1(els)h
+18(\(e.g.)h
+16(an)h
+78(cannot)h
+17(follo)h
+-1(w)h
+16(an)h
+61(\).)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+17(generates)h
+19(an)h
+17(error)h
+18(if)h
+16(a)h
+177 418(lev)s
+-1(el)h
+14(is)h
+13(skipp)h
+1(ed.)h
+177 495(All)s
+9(section)h
+108(ha)h
+-1(v)h
+-1(e)h
+10(names)h
+9(asso)h
+1(ciated)h
+11(with)h
+9(them,)h
+10(but)h
+10(for)h
+10(con)h
+-1(v)h
+-1(enience,)h
+11(the)h
+11(section)h
+11(name)h
+8(is)h
+10(optional)h
+177 545(if)s
+16(the)h
+18(section)h
+18(con)h
+-1(tains)h
+17(one)h
+17(or)h
+17(more)h
+17(macro)h
+15(de\014nitions)h
+18(\(i.e.)h
+16(at)h
+17(least)h
+17(one)h
+17(macro)h
+16(de\014nition)h
+17(app)h
+1(ears)h
+177 594(b)s
+1(et)h
+-1(w)h
+-1(een)h
+19(the)h
+18(section)h
+18(construct)h
+19(in)h
+17(question)h
+17(and)h
+18(the)h
+18(next)h
+18(section)h
+18(construct)h
+19(in)h
+17(the)h
+17(input)h
+18(\014le.\).)h
+28(In)h
+177 644(this)s
+19(case,)h
+19(the)h
+19(section)h
+175(the)h
+19(name)h
+17(of)h
+18(the)h
+19(\014rst)h
+19(macro)h
+17(de\014ned)h
+19(in)h
+18(the)h
+19(section.)h
+32(This)h
+18(feature)h
+177 694(streamlines)s
+14(the)h
+14(input)h
+14(\014le,)h
+13(a)h
+-1(v)h
+-1(oiding)h
+12(duplicate)h
+14(name)h
+13(inconsistencies.)h
+177 771(An)s
+-1(y)h
+13(sequence)h
+15(of)h
+12(prin)h
+-1(table)h
+12(c)h
+-1(haracters)h
+15(can)h
+13(b)h
+1(e)h
+13(used)h
+14(in)h
+12(the)h
+14(section)h
+13(name,)h
+11(ev)h
+-1(en)h
+14(the)h
+13(target)h
+14(t)h
+-1(yp)h
+1(esetter's)h
+177 821(escap)s
+1(e)h
+16(sequence)h
+16(\(e.g.)h
+13(in)h
+13(T)h
+643 830(E)s
+667 821(X,)s
+13(\\)h
+22("\).)h
+177 898(The)s
+14(follo)h
+-1(wing)h
+12(example)h
+12(demonstrates)h
+15(the)h
+14(section)h
+15(construct.)h
+177 1641(In)s
+15(the)h
+16(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+15(example,)h
+13(the)h
+16(name)h
+14(for)h
+14(the)h
+16(lev)h
+-1(el)h
+15(A)h
+15(section)h
+16(is)h
+15(pro)h
+-1(vided)h
+15(explicitly)h
+-3(,)h
+13(while)h
+15(the)h
+15(name)h
+14(for)h
+177 1691(the)s
+15(lev)h
+-1(el)h
+13(B)h
+14(section)h
+15(will)h
+12(b)h
+1(e)h
+15(inherited)h
+14(from)h
+12(the)h
+15(macro)h
+13(name.)h
+177 1937(Exp)s
+1(erience)h
+16(has)h
+13(sho)h
+-1(wn)h
+14(that)h
+14(one)h
+13(of)h
+13(the)h
+14(most)h
+13(comm)h
+-1(on)h
+12(t)h
+-1(yp)h
+1(esetting)h
+14(requiremen)h
+-1(t)h
+14(is)h
+13(that)h
+14(of)h
+13(b)h
+1(eing)h
+13(able)h
+177 1987(to)s
+16(t)h
+-1(yp)h
+1(eset)h
+17(small)h
+14(program)h
+14(fragmen)h
+-1(ts)h
+14(in)h
+16(the)h
+16(middle)h
+14(of)h
+15(the)h
+17(do)h
+1(cumen)h
+-1(ting)h
+14(free)h
+17(text.)h
+24(T)h
+-1(ypically)h
+14(there)h
+177 2037(is)s
+14(a)h
+14(frequen)h
+-1(t)h
+15(need)h
+15(to)h
+14(refer)h
+15(to)h
+14(program)h
+13(iden)h
+-1(ti\014ers,)h
+14(and)h
+14(it)h
+14(assists)h
+15(the)h
+15(reader)h
+15(to)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(suc)h
+-1(h)h
+15(iden)h
+-1(ti\014ers)h
+177 2087(t)s
+-1(yp)h
+1(eset)h
+15(in)h
+12(the)h
+14(same)h
+12(manner)h
+12(as)h
+13(the)h
+14(program)h
+11(text)h
+14(in)h
+12(the)h
+14(macro)h
+11(de\014nition.)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+12(V1)h
+13(de\014ned)h
+14(a)h
+177 2136(T)s
+200 2145(E)s
+223 2136(X)s
+13(macro)h
+12(for)h
+13(this)h
+13(\(called)h
+35(\))h
+13(that)h
+13(simply)h
+11(t)h
+-1(yp)h
+1(eset)h
+14(its)h
+13(argumen)h
+-1(t)h
+12(in)h
+166(.)h
+17(This)h
+13(pro)h
+-1(v)h
+-1(ed)h
+13(so)h
+13(useful,)h
+177 2186(that)s
+14(the)h
+15(facilit)h
+-1(y)h
+12(has)h
+14(b)h
+1(een)h
+15(made)h
+13(t)h
+-1(yp)h
+1(esetter-indep)h
+1(e)h
+1(nden)h
+-1(t)h
+16(in)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(V3.)h
+177 2263(T)s
+-3(o)h
+13(sp)h
+1(ecify)h
+14(that)h
+13(some)h
+13(text)h
+14(b)h
+1(e)h
+14(t)h
+-1(yp)h
+1(eset)h
+15(in)h
+166(,)h
+12(enclose)h
+15(the)h
+14(text)h
+14(in)h
+13(curly)h
+13(brace)h
+15(sp)h
+1(ecial)h
+13(sequences)h
+177 2313(as)s
+14(follo)h
+-1(ws.)h
+177 2558(As)s
+10(in)h
+10(macro)h
+8(names,)h
+9(section)h
+11(names,)h
+9(and)h
+10(macro)h
+8(b)h
+1(o)h
+1(dies,)h
+11(the)h
+10(text)h
+10(con)h
+-1(tained)h
+10(within)h
+9(the)h
+10(literal)h
+9(construct)h
+177 2608(is)s
+16(protected)h
+19(b)h
+-1(y)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+16(from)h
+15(an)h
+-1(y)h
+16(non-literal)h
+15(in)h
+-1(terpretation)h
+17(b)h
+-1(y)h
+16(the)h
+17(t)h
+-1(yp)h
+1(esetter)h
+19(and)h
+16(the)h
+17(user)h
+18(is)h
+177 2658(free)s
+15(to)h
+13(enclose)h
+93(text)h
+14(co)h
+-1(v)h
+-1(ered)h
+15(b)h
+-1(y)h
+13(the)h
+14(de\014nition)h
+291(.)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+13(guaran)h
+-1(tees)h
+15(that,)h
+13(no)h
+177 2708(matter)s
+12(what)h
+13(the)h
+13(text)h
+13(is,)h
+12(it)h
+12(will)h
+12(b)h
+1(e)h
+13(t)h
+-1(yp)h
+1(eset)h
+14(in)h
+177(exactly)h
+13(as)h
+12(it)h
+13(app)h
+1(ears.)h
+18(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+13(the)h
+13(text)h
+13(will)h
+177 2757(b)s
+1(e)h
+15(\014lled)h
+13(and)h
+14(justi\014ed)h
+14(in)h
+-1(to)h
+13(a)h
+14(paragraph)h
+13(as)h
+14(usual.)h
+177 2835(Here)s
+15(is)h
+14(an)h
+14(example)h
+12(of)h
+14(the)h
+14(use)h
+15(of)h
+13(the)h
+15(construct:)h
+1042 2940(84)s
+14 2 1252 2658 r
+85 @eop
+86 @bop0
+86 @bop1
+cmti10.300 sf
+1208 2835(distribute)s
+-2(d)h
+cmbx12.300 sf
+177 1145(3.11.4)s
+55(Macros)h
+cmbx10.300 sf
+177 322(3.11.3.3)s
+48(Emphasis)h
+14(Directiv)h
+-1(e)h
+1338 1295(macro)s
+17(name)h
+104(macro)h
+17(b)h
+1(o)h
+1(dy)h
+440 1345(expression)s
+809 2785(additi)s
+-1(v)h
+-1(el)h
+-1(y)h
+13(de\014ned)h
+cmtt10.300 sf
+177 42(@C)s
+22(The)h
+21(@{WOMBAT@})h
+19(\(Waste)h
+21(Of)h
+21(Money,)h
+21(Brains,)h
+20(And)h
+21(Time\))h
+21(function)h
+177 91(calls)s
+21(the)h
+21(@{kangaroo@})h
+19(input)h
+21(function)h
+20(which)h
+21(has)h
+21(been)h
+177 141(known)s
+21(to)h
+21(cause)h
+21(keybounce.)h
+177 191(This)s
+21(keybounce)h
+20(can)h
+21(be)h
+22(dampened)h
+20(using)h
+21(the)h
+21(@{wet_sloth)h
+-1(@})h
+20(subsystem.)h
+177 633(emphasise)s
+20(=)h
+22("@/")h
+21(ordinary_te)h
+-1(xt)h
+20("@/")h
+177 857(@C)s
+22(What)h
+21(you)h
+21(@/really@/)h
+19(need,)h
+21(of)h
+22(course,)h
+20(is)h
+21(a)h
+22(@/great@/,)h
+20(@/big@/,)h
+177 906(network)s
+21(with)h
+20(packets)h
+21(just)h
+21(flying)h
+20(@/everywhere@/)h
+-1(.)h
+177 956(This)s
+21(section)h
+20(implements)h
+20(an)h
+22(interface)h
+177 1006(to)s
+22(such)h
+21(a)h
+21(@/humungeous@)h
+-1(/)h
+20(network.)h
+177 1507(macro)s
+21(=)h
+22(\("@O")h
+20(|)h
+22("@$"\))h
+21(name)h
+21([formal_par)h
+-1(amet)h
+-1(er_li)h
+-1(st])h
+352 1556(["@Z"])s
+20(["@M"])h
+21(["==")h
+20(|)h
+22("+="])h
+21("@{")h
+21(expression)h
+19("@}")h
+1001 1718(@O)s
+1024 1768(@$)s
+1729 1941(@Z)s
+732 2040(@M)s
+967 2090(@Z)s
+96(@M)h
+1032 2462(@M)s
+493 2586(==)s
+966 2635(+=)s
+906 2835(==)s
+cmr10.300 sf
+177 422(The)s
+14(emphasis)h
+12(directiv)h
+-1(e)h
+14(is)h
+13(v)h
+-1(ery)h
+14(simil)h
+-1(ar)h
+12(to)h
+13(the)h
+14(literal)h
+12(directiv)h
+-1(e)h
+14(except)h
+15(that)h
+13(it)h
+13(causes)h
+15(its)h
+13(argumen)h
+-1(t)h
+12(to)h
+177 472(b)s
+1(e)h
+13(t)h
+-1(yp)h
+1(eset)h
+15(in)h
+12(an)h
+12(emphasised)h
+13(manner)h
+11(\(e.g.)h
+13(italics\).)h
+17(Lik)h
+-1(e)h
+12(the)h
+13(literal)h
+12(directiv)h
+-1(e,)h
+13(the)h
+13(emphasis)h
+12(directiv)h
+-1(e)h
+177 522(protects)s
+16(its)h
+14(text)h
+14(argumen)h
+-1(t.)h
+177 745(Example:)s
+177 1245(The)s
+19(third)h
+18(category)h
+19(of)h
+17(construct)h
+20(app)h
+1(earing)h
+18(at)h
+18(the)h
+19(highest)h
+18(syn)h
+-1(tactic)h
+19(lev)h
+-1(el)h
+18(in)h
+17(a)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+18(input)h
+177 1295(\014le)s
+16(is)h
+15(the)h
+16(macro)h
+14(de\014nition.)h
+23(A)h
+15(macro)h
+14(de\014nition)h
+16(binds)h
+15(a)h
+15(unique)h
+288(to)h
+15(a)h
+177 1345(con)s
+-1(taining)h
+15(an)h
+247(consisting)h
+16(of)h
+15(text,)h
+16(calls)h
+15(to)h
+16(other)h
+16(macros,)h
+14(and)h
+16(formal)h
+13(parameters.)h
+23(The)h
+177 1395(syn)s
+-1(tax)h
+14(for)h
+14(a)h
+13(macro)h
+13(de\014nition)h
+13(is)h
+14(as)h
+14(follo)h
+-1(ws:)h
+177 1668(The)s
+21(complexit)h
+-1(y)h
+18(of)h
+19(the)h
+21(macro)h
+18(de\014nition)h
+20(syn)h
+-1(tax)h
+20(is)h
+20(mostly)h
+18(to)h
+20(enable)h
+20(the)h
+21(user)h
+21(to)h
+19(attac)h
+-1(h)h
+20(v)h
+-2(arious)h
+177 1718(attributes)s
+17(to)h
+16(the)h
+16(macro.)h
+23(If)h
+16(the)h
+16(user)h
+17(c)h
+-1(ho)h
+1(oses)h
+61(,)h
+15(then)h
+17(the)h
+16(macro)h
+15(cannot)h
+16(b)h
+1(e)h
+17(called,)h
+16(but)h
+16(is)h
+15(instead)h
+177 1768(attac)s
+-1(hed)h
+15(to)h
+14(a)h
+14(pro)h
+1(duct)h
+15(\014le.)h
+19(If)h
+14(the)h
+15(user)h
+16(c)h
+-1(ho)h
+1(oses)h
+59(,)h
+13(then)h
+15(the)h
+15(macro)h
+13(is)h
+14(an)h
+14(ordinary)h
+14(macro)h
+13(de\014nition)h
+177 1817(that)s
+14(is)h
+14(not)h
+14(attac)h
+-1(hed)h
+14(to)h
+14(a)h
+13(\014le.)h
+177 1891(By)s
+13(default,)h
+12(a)h
+12(non-\014le)h
+12(macro)h
+11(m)h
+-1(ust)h
+11(b)h
+1(e)h
+13(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+12(exactly)h
+12(once)h
+13(b)h
+-1(y)h
+12(one)h
+13(other)h
+13(macro.)h
+16(Macros)h
+13(that)h
+13(aren't)h
+177 1941(are)s
+19(\015agged)h
+17(with)h
+18(errors)h
+20(b)h
+-1(y)h
+17(the)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+18(analyser.)h
+30(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+19(if)h
+17(the)h
+19(user)h
+19(uses)h
+19(the)h
+81(sequence)h
+177 1990(in)s
+17(the)h
+18(macro)h
+16(de\014nition,)h
+17(the)h
+18(macro)h
+16(is)h
+17(then)h
+18(p)h
+1(ermitted)h
+17(to)h
+17(b)h
+1(e)h
+18(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+17(zero)h
+18(times,)h
+16(as)h
+18(w)h
+-1(ell)h
+16(as)h
+18(once.)h
+177 2040(Simil)s
+-1(arly)h
+-4(,)h
+14(if)h
+15(the)h
+17(user)h
+17(uses)h
+17(the)h
+76(sequence)h
+18(in)h
+16(the)h
+16(macro)h
+15(de\014nition,)h
+16(the)h
+16(macro)h
+15(is)h
+16(p)h
+1(ermitted)h
+15(to)h
+16(b)h
+1(e)h
+177 2090(called)s
+15(man)h
+-1(y)h
+13(times)h
+14(as)h
+15(w)h
+-1(ell)h
+14(as)h
+15(once.)h
+22(If)h
+15(b)h
+1(oth)h
+73(and)h
+74(are)h
+15(presen)h
+-1(t)h
+16(then)h
+16(the)h
+16(macro)h
+13(is)h
+15(p)h
+1(ermitted)h
+15(to)h
+177 2140(b)s
+1(e)h
+15(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(zero,)h
+14(one,)h
+14(or)h
+13(man)h
+-1(y)h
+12(times.)h
+177 2213(The)s
+15(purp)h
+1(ose)h
+15(of)h
+13(enforcing)h
+14(the)h
+15(default)h
+14(\\exactly)h
+14(one)h
+14(call")h
+13(rule)h
+15(is)h
+14(to)h
+13(\015ag)h
+14(pieces)h
+15(of)h
+14(co)h
+1(de)h
+15(that)h
+14(the)h
+15(user)h
+177 2263(ma)s
+-1(y)h
+12(ha)h
+-1(v)h
+-1(e)h
+14(de\014ned)h
+14(in)h
+14(a)h
+13(macro)h
+13(but)h
+14(not)h
+13(ho)h
+1(ok)h
+-1(ed)h
+14(in)h
+-1(to)h
+13(the)h
+14(rest)h
+15(of)h
+13(the)h
+15(program.)h
+16(Exp)h
+1(erience)h
+16(sho)h
+-1(ws)h
+14(that)h
+177 2313(this)s
+18(is)h
+17(a)h
+17(comm)h
+-1(on)h
+16(error.)h
+29(Simila)h
+-1(rly)h
+-3(,)h
+15(it)h
+17(can)h
+18(b)h
+1(e)h
+18(dangerous)h
+18(to)h
+17(m)h
+-1(ultiply)h
+15(in)h
+-1(v)h
+-1(ok)h
+-1(e)h
+17(a)h
+17(macro)h
+16(in)h
+-1(tended)h
+18(to)h
+177 2363(b)s
+1(e)h
+19(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+17(only)h
+18(once.)h
+31(F)h
+-3(or)h
+18(example,)h
+18(it)h
+17(ma)h
+-1(y)h
+17(b)h
+1(e)h
+18(dangerous)h
+19(to)h
+18(in)h
+-1(v)h
+-1(ok)h
+-1(e)h
+17(a)h
+18(scrap)h
+19(of)h
+18(non-idemp)h
+1(oten)h
+-1(t)h
+177 2413(initializatio)s
+-1(n)h
+13(co)h
+1(de)h
+15(in)h
+13(t)h
+-1(w)h
+-1(o)h
+14(di\013eren)h
+-1(t)h
+15(parts)h
+15(of)h
+14(the)h
+14(main)h
+12(function)h
+14(of)h
+14(a)h
+14(program!)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+177 2462(will)s
+15(not)h
+17(generate)h
+18(an)h
+17(error)h
+17(if)h
+16(a)h
+17(macro)h
+15(without)h
+77(is)h
+16(called)h
+17(b)h
+-1(y)h
+16(another)h
+17(macro)h
+16(that)h
+17(is)h
+16(called)h
+17(more)h
+177 2512(than)s
+14(once.)h
+177 2586(If)s
+13(the)h
+14(text)h
+14(string)h
+71(\(or)h
+14(nothing\))h
+12(follo)h
+-1(ws)h
+12(the)h
+14(macro)h
+13(name,)h
+12(the)h
+14(expression)h
+14(that)h
+14(follo)h
+-1(ws)h
+12(is)h
+13(the)h
+14(en)h
+-1(tire)h
+177 2635(text)s
+17(of)h
+15(the)h
+17(macro)h
+15(b)h
+1(o)h
+1(dy)h
+-3(.)h
+24(If)h
+15(the)h
+17(text)h
+17(string)h
+75(follo)h
+-1(ws)h
+15(the)h
+16(macro)h
+15(name,)h
+15(then)h
+17(more)h
+15(than)h
+16(one)h
+16(suc)h
+-1(h)h
+177 2685(de\014nition)s
+13(is)h
+12(allo)h
+-1(w)h
+-1(ed)h
+12(\(but)h
+13(not)h
+13(required\))h
+14(in)h
+12(the)h
+14(do)h
+1(cumen)h
+-1(t)h
+12(and)h
+13(the)h
+14(b)h
+1(o)h
+1(dy)h
+13(of)h
+12(the)h
+13(macro)h
+12(consists)h
+14(of)h
+12(the)h
+177 2735(concatenation)s
+17(of)h
+17(all)h
+15(suc)h
+-1(h)h
+18(expressions)h
+18(in)h
+16(the)h
+18(order)h
+17(in)h
+17(whic)h
+-1(h)h
+16(they)h
+18(o)h
+1(ccur)h
+18(in)h
+16(the)h
+17(input)h
+17(\014le.)h
+27(Suc)h
+-1(h)h
+17(a)h
+177 2785(macro)s
+12(is)h
+12(said)h
+13(to)h
+12(b)h
+1(e)h
+14(additiv)h
+-1(e)h
+11(and)h
+13(is)h
+385(.)h
+15(Th)h
+-1(us)h
+13(a)h
+13(macro)h
+11(b)h
+1(o)h
+1(dy)h
+13(can)h
+13(either)h
+13(b)h
+1(e)h
+14(de\014ned)h
+177 2835(in)s
+14(one)h
+15(place)h
+15(using)h
+14(one)h
+15(de\014nition)h
+14(\(using)h
+58(\))h
+14(or)h
+15(it)h
+14(can)h
+15(b)h
+1(e)h
+218(throughout)h
+14(the)h
+15(input)h
+15(\014le)h
+14(in)h
+14(a)h
+1042 2940(85)s
+86 @eop
+87 @bop0
+87 @bop1
+cmti10.300 sf
+668 1507(how)s
+14(many)h
+1529 2259(de\014nition)s
+cmbx12.300 sf
+177 1977(3.11.5)s
+55(Expressions)h
+177 2580(3.11.6)s
+55(Macro)h
+19(Calls)h
+cmbx10.300 sf
+177 409(3.11.4.1)s
+48(Names)h
+177 1076(3.11.4.2)s
+48(F)h
+-4(ormal)h
+15(P)h
+-1(arameter)h
+14(Lists)h
+cmtt10.300 sf
+1064 42(+=)s
+224(==)h
+91(+=)h
+558 91(==)s
+539 218(@Z)s
+93(@M)h
+568 268(+=)s
+1687 713(@<\\medskip@>)s
+177 885(name)s
+130(=)h
+22("@<")h
+21(name_text)h
+20("@>")h
+177 935(name_text)s
+20(=)h
+22({ordinary_c)h
+-1(har)h
+20(|)h
+21(text_special})h
+1481 1181(@1)s
+24(@2)h
+98(@9)h
+177 1729(formal_parame)s
+-1(ter_l)h
+-1(ist)h
+20(=)h
+21("@\(")h
+21(formal_parame)h
+-1(ter)h
+20("@\)".)h
+177 1779(formal_parame)s
+-1(ter)h
+20(=)h
+21("@1")h
+21(|)h
+22("@2")h
+21(|)h
+21("@3")h
+21(|)h
+22("@4")h
+21(|)h
+21("@5")h
+21(|)h
+591 1828("@6")s
+21(|)h
+22("@7")h
+21(|)h
+21("@8")h
+21(|)h
+22("@9")h
+177 2431(expression)s
+20(=)h
+21({ordinary_text)h
+19(|)h
+22(macro_call)h
+20(|)h
+21(formal_paramet)h
+-1(er})h
+cmr10.300 sf
+177 42(sequence)s
+15(of)h
+11(one)h
+13(or)h
+12(more)h
+11(macro)h
+11(de\014nitions)h
+12(\(using)h
+56(\).)h
+17(If)h
+12(neither)h
+69(and)h
+68(are)h
+13(presen)h
+-1(t,)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+177 91(assumes)s
+14(a)h
+14(default)h
+13(of)h
+57(.)h
+177 169(Macros)s
+13(attac)h
+-1(hed)h
+13(to)h
+12(pro)h
+1(duct)h
+13(\014les)h
+12(cannot)h
+13(b)h
+1(e)h
+12(additiv)h
+-1(ely)h
+11(de\014ned.)h
+19(Additiv)h
+-1(ely)h
+11(de\014ned)h
+13(macros)h
+12(can)h
+12(ha)h
+-1(v)h
+-1(e)h
+177 218(parameter)s
+13(lists)h
+13(and)h
+69(and)h
+69(attributes,)h
+14(but)h
+13(these)h
+14(m)h
+-1(ust)h
+12(b)h
+1(e)h
+14(sp)h
+1(eci\014ed)h
+14(only)h
+12(in)h
+13(the)h
+13(\014rst)h
+14(de\014nition)h
+12(of)h
+177 268(the)s
+15(macro.)h
+16(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+72(m)h
+-1(ust)h
+13(app)h
+1(ear)h
+14(in)h
+13(eac)h
+-1(h)h
+15(de\014nition.)h
+177 514(Names)s
+16(are)h
+16(used)h
+18(to)h
+16(iden)h
+-1(tify)h
+15(macros)h
+15(and)h
+17(sections.)h
+26(A)h
+16(name)h
+15(consists)h
+18(of)h
+15(a)h
+16(sequence)h
+19(of)h
+15(from)h
+15(zero)h
+17(to)h
+177 564(80)s
+12(prin)h
+-1(table)h
+13(c)h
+-1(haracters,)h
+14(including)h
+12(the)h
+13(blank)h
+12(c)h
+-1(haracter.)h
+20(End)h
+13(of)h
+12(line)h
+12(c)h
+-1(haracters)h
+15(are)h
+13(not)h
+13(p)h
+1(ermitted)h
+12(in)h
+177 613(names.)s
+19(Names)h
+13(are)h
+15(case)h
+15(sensitiv)h
+-1(e;)h
+15(t)h
+-1(w)h
+-1(o)h
+14(di\013eren)h
+-1(t)h
+15(macros)h
+13(are)h
+15(p)h
+1(ermitted)h
+14(to)h
+14(ha)h
+-1(v)h
+-1(e)h
+15(names)h
+13(that)h
+14(di\013er)h
+15(in)h
+177 663(case)s
+15(only)h
+-3(.)h
+16(Lik)h
+-1(e)h
+14(free)h
+14(text,)h
+14(names)h
+12(are)h
+14(t)h
+-1(yp)h
+1(eset)h
+15(b)h
+-1(y)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(and)h
+13(are)h
+14(safe)h
+14(from)h
+12(misin)h
+-2(terpretation)h
+13(b)h
+-1(y)h
+177 713(the)s
+17(target)h
+16(t)h
+-1(yp)h
+1(esette)h
+1(r.)h
+26(F)h
+-3(or)h
+16(example,)h
+15(it)h
+16(is)h
+16(quite)h
+16(acceptable)h
+17(to)h
+16(use)h
+17(the)h
+17(macro)h
+14(name)h
+177 763(ev)s
+-1(en)h
+15(if)h
+13(the)h
+14(target)h
+15(t)h
+-1(yp)h
+1(esetter)h
+16(is)h
+14(T)h
+764 772(E)s
+787 763(X.)s
+177 1181(F)s
+-3(unnelW)h
+-3(eb)h
+13(allo)h
+-1(ws)h
+11(macros)h
+12(to)h
+13(ha)h
+-1(v)h
+-1(e)h
+13(up)h
+13(to)h
+13(nine)h
+13(macro)h
+11(parameters,)h
+13(named)h
+56(,)h
+56(,)h
+12(.)h
+7(.)h
+7(.)h
+-1(,)h
+57(.)h
+17(If)h
+12(a)h
+13(macro)h
+177 1230(do)s
+1(es)h
+12(not)h
+12(ha)h
+-1(v)h
+-1(e)h
+11(a)h
+11(formal)h
+9(parameter)h
+11(list,)h
+11(it)h
+11(is)h
+12(de\014ned)h
+12(to)h
+11(ha)h
+-1(v)h
+-1(e)h
+12(no)h
+11(parameters,)h
+11(and)h
+12(an)h
+11(actual)h
+11(parameter)h
+177 1280(list)s
+15(m)h
+-1(ust)h
+15(not)h
+15(app)h
+1(ear)h
+16(at)h
+15(the)h
+16(p)h
+1(oin)h
+-1(t)h
+15(of)h
+15(call.)h
+22(If)h
+15(a)h
+16(macro)h
+14(has)h
+16(a)h
+15(formal)h
+13(parameter)h
+15(list,)h
+15(it)h
+15(is)h
+15(de\014ned)h
+17(to)h
+177 1330(ha)s
+-1(v)h
+-1(e)h
+17(one)h
+18(or)h
+17(more)h
+16(parameters,)h
+17(and)h
+18(a)h
+16(corresp)h
+1(onding)h
+19(actual)h
+16(parameter)h
+17(m)h
+-1(ust)h
+16(b)h
+1(e)h
+18(supplied)h
+17(for)h
+17(eac)h
+-1(h)h
+177 1380(formal)s
+12(parameter,)h
+13(at)h
+13(the)h
+15(p)h
+1(oin)h
+-1(t)h
+13(of)h
+14(call.)h
+177 1457(Because)s
+19(F)h
+-3(unnelW)h
+-3(eb)h
+15(parameters)h
+17(ha)h
+-1(v)h
+-1(e)h
+16(predictable)h
+17(names,)h
+16(the)h
+17(only)h
+16(informati)h
+-1(on)h
+14(that)h
+17(a)h
+16(formal)h
+14(pa-)h
+177 1507(rameter)s
+12(list)h
+12(need)h
+14(con)h
+-1(v)h
+-1(ey)h
+12(is)h
+207(parameters)h
+12(a)h
+12(macro)h
+11(has.)h
+18(F)h
+-3(or)h
+12(this)h
+12(reason)h
+13(a)h
+12(formal)h
+10(parameter)h
+177 1557(list)s
+19(tak)h
+-1(es)h
+19(the)h
+20(form)h
+17(of)h
+19(the)h
+19(highest)h
+20(n)h
+-1(um)h
+-1(b)h
+1(ered)h
+18(formal)h
+17(parameter)h
+19(desired,)h
+21(enclosed)h
+20(in)h
+19(paren)h
+-1(theses)h
+177 1606(sequences)s
+1(.)h
+177 2082(Expressions)s
+19(are)h
+17(F)h
+-3(unnelW)h
+-3(eb's)h
+16(most)h
+16(p)h
+1(o)h
+-1(w)h
+-1(erful)h
+17(form)h
+15(of)h
+17(expressing)h
+18(a)h
+16(text)h
+18(string.)h
+28(Macro)h
+17(b)h
+1(o)h
+1(dies)h
+17(are)h
+177 2132(de\014ned)s
+15(as)h
+14(expressions.)h
+20(Actual)h
+14(parameters)h
+14(consist)h
+14(of)h
+13(expressions.)h
+177 2209(An)s
+15(expression)h
+16(consists)h
+16(of)h
+14(a)h
+14(sequence)h
+17(of)h
+14(zero)h
+16(or)h
+14(more)h
+14(expression)h
+16(elemen)h
+-1(ts.)h
+21(An)h
+14(expression)h
+16(elemen)h
+-1(t)h
+177 2259(can)s
+18(b)h
+1(e)h
+18(ordinary)h
+16(text,)h
+19(a)h
+17(macro)h
+16(call,)h
+17(or)h
+17(a)h
+17(formal)h
+15(parameter)h
+17(of)h
+16(the)h
+18(macro)h
+204(in)h
+17(whic)h
+-1(h)h
+17(the)h
+177 2309(formal)s
+12(parameter)h
+13(o)h
+1(ccurs.)h
+177 2685(A)s
+16(macro)h
+14(call)h
+15(consists)h
+17(of)h
+15(a)h
+15(name)h
+15(optionally)h
+13(follo)h
+-1(w)h
+-1(ed)h
+14(b)h
+-1(y)h
+16(an)h
+15(actual)h
+15(parameter)h
+16(list.)h
+22(The)h
+16(n)h
+-1(um)h
+-1(b)h
+1(er)h
+15(of)h
+177 2735(parameters)s
+18(in)h
+17(the)h
+18(actual)h
+18(parameter)h
+17(list)h
+17(m)h
+-1(ust)h
+17(b)h
+1(e)h
+18(the)h
+19(same)h
+16(as)h
+18(the)h
+18(n)h
+-1(um)h
+-1(b)h
+1(er)h
+17(of)h
+18(formal)h
+15(parameters)h
+177 2785(sp)s
+1(eci\014ed)h
+18(in)h
+15(the)h
+16(de\014nition)h
+16(of)h
+15(the)h
+17(macro.)h
+22(If)h
+16(the)h
+16(macro)h
+15(has)h
+16(no)h
+16(formal)h
+13(parameter)h
+15(list,)h
+16(its)h
+16(call)h
+15(m)h
+-1(ust)h
+177 2835(ha)s
+-1(v)h
+-1(e)h
+14(no)h
+14(actual)h
+13(parameter)h
+14(list.)h
+1042 2940(86)s
+87 @eop
+88 @bop0
+88 @bop1
+cmti10.300 sf
+739 2368(macr)s
+-2(o)h
+18(de\014nition)h
+103(macr)h
+-2(o)h
+19(exp)h
+-2(ansion)h
+cmbx12.300 sf
+177 1273(3.11.7)s
+55(F)h
+-5(ormal)h
+18(P)h
+-2(arameters)h
+177 2272(3.11.8)s
+55(Macros)h
+19(are)h
+19(Static)h
+cmtt10.300 sf
+177 42(macro_call)s
+260(=)h
+21(name)h
+21([actual_param)h
+-1(eter_)h
+-1(list])h
+177 91(actual_parame)s
+-1(ter_l)h
+-1(ist)h
+20(=)h
+21("@\(")h
+21(actpar)h
+21({)h
+21("@,")h
+21(actpar)h
+21(})h
+21("@\)")h
+177 141(actpar)s
+348(=)h
+21(expression)h
+20(|)h
+700 191(\()s
+22(whitespace)h
+20("@""")h
+20(expression)h
+20("@""")h
+21(whitespace)h
+19(\))h
+177 241(whitespace)s
+260(=)h
+21({")h
+22(")h
+21(|)h
+22(eol})h
+177 629(@<Generic)s
+20(Loop@>@\()h
+243 679(@"x:=1;@")s
+41(@,)h
+243 729(@"x<=10;@")s
+19(@,)h
+243 779(@"print)s
+20("x=%u,)h
+20(x^2=%u",x,x*x;)h
+243 828(x:=x+1;@+@)s
+-1(")h
+177 878(@\))s
+177 978(@<Colours@>@\()s
+-1(red@,)h
+-1(green)h
+-1(@,blu)h
+-1(e@,ye)h
+-1(llow@)h
+-1(\))h
+177 1712(@$@<One@>@\(@1)s
+-1(@\)=@{)h
+-1(A)h
+20(walrus)h
+21(in)h
+21(@1)h
+21(is)h
+22(a)h
+21(walrus)h
+21(in)h
+21(vain.@})h
+177 1762(@$@<Two@>@\(@1)s
+-1(@\)=@{)h
+-1(@<One)h
+-1(@>@\(S)h
+-1(@1n@\))h
+-1(@})h
+177 1951(@<Two@>@\(pai@)s
+-1(\))h
+177 2140(A)s
+22(walrus)h
+20(in)h
+22(Spain)h
+20(is)h
+22(a)h
+21(walrus)h
+21(in)h
+21(vain.)h
+815 2666(vskip)s
+cmr10.300 sf
+177 335(F)s
+-3(unnelW)h
+-3(eb)h
+15(allo)h
+-1(ws)h
+14(parameters)h
+15(to)h
+16(b)h
+1(e)h
+15(passed)h
+17(directly)h
+-3(,)h
+15(or)h
+15(delimited)h
+14(b)h
+-1(y)h
+15(sp)h
+1(ecial)h
+15(double)h
+16(quotes.)h
+22(Eac)h
+-1(h)h
+177 385(form)s
+15(is)h
+16(useful)h
+16(under)h
+17(di\013eren)h
+-1(t)h
+17(circumstances.)h
+26(Direct)h
+17(sp)h
+1(eci\014cation)h
+17(is)h
+16(useful)h
+16(where)h
+18(the)h
+17(parameters)h
+177 435(are)s
+14(short)h
+14(and)h
+13(can)h
+14(b)h
+1(e)h
+14(all)h
+13(placed)h
+13(on)h
+14(one)h
+13(line.)h
+18(Double)h
+13(quoted)h
+14(parameters)h
+13(allo)h
+-1(w)h
+12(whitespace)h
+15(on)h
+13(either)h
+177 485(side)s
+19(\(that)h
+19(is)h
+19(not)h
+19(considered)h
+20(part)h
+19(of)h
+18(the)h
+20(parameter\))h
+18(and)h
+19(are)h
+19(useful)h
+19(for)h
+19(la)h
+-1(ying)h
+17(out)h
+18(rather)h
+20(messy)h
+177 535(parameters.)s
+18(Here)h
+15(are)h
+15(examples)h
+13(of)h
+13(the)h
+14(t)h
+-1(w)h
+-1(o)h
+14(forms.)h
+177 1072(As)s
+15(sho)h
+-1(wn,)h
+13(the)h
+14(t)h
+-1(w)h
+-1(o)h
+14(forms)h
+12(ma)h
+-1(y)h
+12(b)h
+1(e)h
+15(mixed)h
+12(within)h
+13(the)h
+15(same)h
+13(parameter)h
+13(list.)h
+177 1141(Exp)s
+1(erience)h
+16(has)h
+14(sho)h
+-1(wn)h
+14(that)h
+14(the)h
+14(v)h
+-2(ast)h
+14(ma)h
+2(jorit)h
+-1(y)h
+12(of)h
+13(macros)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(no)h
+13(parameters.)h
+177 1368(F)s
+-3(ormal)h
+15(parameters)h
+17(can)h
+18(app)h
+1(ear)h
+18(in)h
+17(the)h
+18(expressions)h
+19(formi)h
+-1(ng)h
+16(macro)h
+16(b)h
+1(o)h
+1(dies)h
+17(in)h
+17(accordance)h
+19(with)h
+17(the)h
+177 1418(syn)s
+-1(tax)h
+21(rules)h
+21(de\014ned)h
+22(ab)h
+1(o)h
+-1(v)h
+-1(e.)h
+38(A)h
+21(formal)h
+18(parameter)h
+21(expands)h
+21(to)h
+21(the)h
+21(text)h
+22(of)h
+20(the)h
+21(expansion)h
+21(of)h
+20(its)h
+177 1468(corresp)s
+1(onding)h
+16(actual)h
+15(parameter.)h
+21(There)h
+16(is)h
+15(nothing)h
+14(prev)h
+-1(en)h
+-1(ting)h
+16(a)h
+15(formal)h
+12(parameter)h
+15(b)h
+1(eing)h
+15(pro)h
+-1(vided)h
+177 1518(as)s
+15(part)h
+16(of)h
+14(an)h
+15(expression)h
+16(that)h
+16(forms)h
+13(an)h
+15(actual)h
+15(parameter.)h
+21(In)h
+16(that)h
+15(happ)h
+1(ens,)h
+16(the)h
+15(formal)h
+13(parameter)h
+177 1568(is)s
+15(b)h
+1(ound)h
+16(to)h
+15(the)h
+16(actual)h
+15(parameter)h
+14(of)h
+15(the)h
+16(calling)h
+14(macro,)h
+14(not)h
+15(the)h
+16(called)h
+15(macro.)h
+21(After)h
+16(the)h
+15(follo)h
+-1(wing)h
+177 1618(de\014nitions,)s
+177 1856(the)s
+15(call)h
+177 2045(will)s
+13(result)h
+14(in)h
+14(the)h
+14(expansion)h
+177 2368(In)s
+18(F)h
+-3(unnelW)h
+-3(eb,)h
+18(the)h
+18(actions)h
+18(of)h
+336(and)h
+341(o)h
+1(ccur)h
+19(during)h
+17(t)h
+-1(w)h
+-1(o)h
+18(separate)h
+177 2417(phases)s
+13(\(parser)h
+14(and)h
+12(tangle\))h
+12(and)h
+12(cannot)h
+12(b)h
+1(e)h
+13(in)h
+-1(terlea)h
+-1(v)h
+-1(ed.)h
+18(As)h
+12(a)h
+12(result,)h
+13(the)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+11(macro)h
+11(facilit)h
+-1(y)h
+11(is)h
+177 2467(completely)s
+13(static.)h
+18(It)h
+14(is)h
+14(not)h
+14(p)h
+1(ossible)h
+14(for)h
+13(one)h
+14(macro)h
+13(to)h
+14(de\014ne)h
+15(another)h
+14(while)h
+13(the)h
+15(\014rst)h
+14(macro)h
+13(is)h
+14(b)h
+1(eing)h
+177 2517(expanded;)s
+18(eac)h
+-1(h)h
+17(m)h
+-1(ust)h
+15(b)h
+1(e)h
+17(de\014ned)h
+18(statically)h
+-3(.)h
+24(It)h
+17(is)h
+16(not)h
+16(p)h
+1(ossible)h
+17(to)h
+16(de\014ne)h
+18(a)h
+16(macro)h
+15(to)h
+16(ev)h
+-1(en)h
+17(assist)h
+17(in)h
+177 2567(the)s
+17(de\014nition)h
+15(of)h
+15(other)h
+17(macros.)h
+23(Because)h
+18(the)h
+16(scanner,)h
+17(parser,)h
+17(analyser,)h
+16(and)h
+16(tangler)h
+16(phases)h
+17(are)h
+16(all)h
+177 2617(in)s
+-1(v)h
+-1(ok)h
+-1(ed)h
+14(sequen)h
+-1(tially)h
+-3(,)h
+13(there)h
+15(is)h
+14(no)h
+15(ro)h
+1(om)h
+12(for)h
+14(feedbac)h
+-1(k)h
+15(of)h
+14(de\014nitions)h
+14(b)h
+1(et)h
+-1(w)h
+-1(een)h
+16(di\013eren)h
+-1(t)h
+15(lev)h
+-1(els)h
+14(\(e.g.)h
+14(the)h
+177 2666(user)s
+15(cannot)h
+14(de\014ne)h
+15(a)h
+14(macro)h
+12(for)h
+14(the)h
+137(pragma\).)h
+177 2735(This)s
+17(lac)h
+-1(k)h
+16(of)h
+16(p)h
+1(o)h
+-1(w)h
+-1(er)h
+17(is)h
+16(fully)h
+15(in)h
+-1(ten)h
+-1(tional.)h
+25(By)h
+17(totally)h
+15(excluding)h
+17(the)h
+17(more)h
+16(incomprehensible)h
+16(w)h
+-1(a)h
+-1(ys)h
+16(in)h
+177 2785(whic)s
+-1(h)h
+13(a)h
+14(general)h
+13(purp)h
+1(ose)h
+15(macro)h
+12(prepro)h
+1(cessor)h
+16(can)h
+13(b)h
+1(e)h
+14(used,)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(pro)h
+-1(vides)h
+14(de\014nite)h
+14(guaran)h
+-1(tees)h
+177 2835(to)s
+14(the)h
+14(reader)h
+15(of)h
+14(its)h
+14(input)h
+13(\014les:)h
+1042 2940(87)s
+88 @eop
+89 @bop0
+89 @bop1
+cmmi10.300 sf
+887 91(<)s
+cmsy10.300 sf
+239 42(\017)s
+239 177(\017)s
+239 778(\017)s
+239 864(\017)s
+239 949(\017)s
+239 1035(\017)s
+239 1120(\017)s
+239 1205(\017)s
+239 1291(\017)s
+239 1376(\017)s
+239 1461(\017)s
+cmbx10.432 sf
+177 343(3.12)s
+70(Analyser)h
+177 2316(3.13)s
+70(T)h
+-6(angle)h
+cmtt10.300 sf
+984 91(#)s
+986 1205(@Z)s
+1184 1291(@M)s
+177 2051(@<Sloth@>@\(@<)s
+-1(Sloth)h
+-1(@>@\(W)h
+-1(alrus)h
+-1(@\)@\))h
+107(@!)h
+21(LEGAL)h
+64(recursive)h
+20(invocation.)h
+177 2150(@$@<Teapot@>=)s
+-1(=@{@<)h
+-1(Teapo)h
+-1(t@>@})h
+194(@!)h
+21(ILLEGAL)h
+20(recursive)h
+20(definition.)h
+983 2484(+O)s
+1648 2533(@O)s
+1034 2659(@O)s
+cmr10.300 sf
+281 42(F)s
+-3(unnelW)h
+-3(eb)h
+15(guaran)h
+-1(tees)h
+16(that)h
+15(a)h
+15(piece)h
+16(of)h
+14(text)h
+16(do)h
+1(es)h
+16(not)h
+15(con)h
+-1(tain)h
+15(a)h
+15(macro)h
+14(call)h
+14(unless)h
+16(it)h
+15(con)h
+-1(tains)h
+281 91(the)s
+14(sp)h
+1(ecial)h
+15(c)h
+-1(haracter)h
+15(follo)h
+-1(w)h
+-1(ed)h
+12(b)h
+-1(y)h
+60(or)h
+36(.)h
+281 177(F)s
+-3(unnelW)h
+-3(eb)h
+13(allo)h
+-1(ws)h
+13(calls)h
+13(to)h
+14(b)h
+1(e)h
+15(made)h
+12(to)h
+14(macros)h
+13(that)h
+14(are)h
+14(de\014ned)h
+15(later)h
+14(in)h
+14(the)h
+14(input)h
+14(\014le.)h
+177 460(The)s
+14(e\013ect)h
+14(of)h
+12(the)h
+14(parser)h
+14(is)h
+13(to)h
+13(construct)h
+14(a)h
+13(macro)h
+11(table)h
+13(con)h
+-1(taining)h
+12(a)h
+13(represen)h
+-1(tation)h
+14(of)h
+12(all)h
+12(the)h
+14(macros)h
+177 510(de\014ned)s
+19(within)h
+17(the)h
+19(do)h
+1(cumen)h
+-1(t,)h
+18(and)h
+17(a)h
+18(do)h
+1(cumen)h
+-1(t)h
+17(list)h
+18(whic)h
+-1(h)h
+17(con)h
+-1(tains)h
+18(a)h
+18(complete)h
+17(represen)h
+-1(tation)h
+19(of)h
+177 560(the)s
+18(en)h
+-1(tire)h
+19(do)h
+1(cumen)h
+-1(t.)h
+28(If)h
+18(there)h
+19(are)h
+18(no)h
+17(error)h
+19(diagnostics)h
+17(\(or)h
+18(w)h
+-1(orse\))h
+18(at)h
+18(the)h
+18(end)h
+18(of)h
+17(the)h
+18(parser)h
+19(run,)h
+177 610(F)s
+-3(unnelW)h
+-3(eb)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(es)h
+12(the)h
+12(analyser)h
+12(whic)h
+-1(h)h
+11(tests)h
+14(for)h
+11(the)h
+12(follo)h
+-1(wing)h
+9(conditions)h
+12(and)h
+11(\015ags)h
+12(them)h
+11(with)h
+11(errors)h
+177 659(if)s
+13(they)h
+15(arise.)h
+281 778(No)s
+14(macros)h
+13(de\014ned)h
+15(in)h
+13(the)h
+15(input)h
+13(\014le.)h
+281 864(No)s
+14(macros)h
+13(connected)h
+15(to)h
+14(output)h
+14(\014les.)h
+281 949(Call)s
+13(of)h
+13(an)h
+14(unde\014ned)h
+15(macro.)h
+281 1035(Call)s
+13(ha)h
+-1(ving)h
+12(the)h
+15(wrong)h
+13(n)h
+-1(um)h
+-1(b)h
+1(er)h
+14(of)h
+13(parameters.)h
+281 1120(Call)s
+13(of)h
+13(a)h
+13(macro)h
+13(that)h
+14(is)h
+14(connected)h
+15(to)h
+14(an)h
+14(output)h
+14(\014le.)h
+281 1205(No)s
+14(calls)h
+13(made)h
+13(to)h
+14(a)h
+13(macro)h
+13(without)h
+13(the)h
+72(option.)h
+281 1291(More)s
+14(than)h
+14(one)h
+14(call)h
+13(made)h
+13(to)h
+14(a)h
+13(macro)h
+13(without)h
+14(the)h
+71(option.)h
+281 1376(Directly)s
+14(or)h
+14(indirectly)h
+13(recursiv)h
+-1(ely)h
+15(de\014ned)h
+15(macros.)h
+281 1461(Unnamed)s
+13(sections)h
+15(that)h
+14(con)h
+-1(tain)h
+13(no)h
+14(macro)h
+13(de\014nitions.)h
+177 1581(F)s
+-3(unnelW)h
+-3(eb)h
+15(p)h
+1(erforms)h
+14(a)h
+15(static)h
+15(analysis)h
+15(to)h
+14(detect)h
+17(recursion.)h
+23(Unfortunately)h
+-3(,)h
+14(the)h
+16(recursion)h
+16(detection)h
+177 1630(algorithm)s
+18(\015ags)h
+20(all)h
+19(macros)h
+19(that)h
+20(ha)h
+-1(v)h
+-1(e)h
+20(an)h
+20(in\014nite)h
+20(expansion)h
+20(rather)h
+21(than)h
+21(just)h
+20(all)h
+19(macros)h
+19(with)h
+20(a)h
+177 1680(recursiv)s
+-1(e)h
+15(de\014nition.)h
+17(If)h
+13(A)h
+13(calls)h
+13(B,)h
+13(and)h
+13(B)h
+13(calls)h
+13(C,)h
+13(and)h
+13(C)h
+13(calls)h
+12(B,)h
+13(then)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(will)h
+11(\015ag)h
+13(A)h
+13(as)h
+13(w)h
+-1(ell)h
+177 1730(as)s
+14(B)h
+14(and)h
+14(C.)h
+13(It)h
+14(is)h
+14(hop)h
+1(ed)h
+15(that)h
+13(this)h
+14(problem)h
+13(will)h
+12(b)h
+1(e)h
+15(\014xed)h
+14(in)h
+14(a)h
+13(later)h
+14(v)h
+-1(ersion.)h
+177 1806(Because)s
+17(F)h
+-3(unnelW)h
+-3(eb)h
+14(do)h
+1(es)h
+15(not)h
+14(pro)h
+-1(vide)h
+15(an)h
+-1(y)h
+14(kind)h
+14(of)h
+14(conditional)h
+13(feature,)h
+15(the)h
+15(prev)h
+-1(en)h
+-1(tion)h
+15(of)h
+14(recursion)h
+177 1856(do)s
+1(es)h
+15(not)h
+14(represen)h
+-1(t)h
+16(a)h
+13(curtailmen)h
+-1(t)h
+13(of)h
+13(expressiv)h
+-1(e)h
+16(p)h
+1(o)h
+-1(w)h
+-1(er.)h
+177 1932(Macros)s
+15(ma)h
+-1(y)h
+12(b)h
+1(e)h
+14(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(recursiv)h
+-1(ely)h
+-3(,)h
+14(but)h
+14(ma)h
+-1(y)h
+12(not)h
+14(b)h
+1(e)h
+14(recursiv)h
+-1(e.)h
+20(Th)h
+-1(us:)h
+177 2434(If)s
+17(the)h
+17(scanner,)h
+19(parser,)h
+18(and)h
+17(analyser)h
+17(ha)h
+-1(v)h
+-1(e)h
+17(successfully)h
+18(\(i.e.)h
+16(with)h
+17(no)h
+16(errors,)h
+19(sev)h
+-1(ere)h
+18(errors,)h
+19(or)h
+17(fatal)h
+177 2484(errors\))s
+20(completed,)h
+19(and)h
+18(the)h
+19(T)h
+-3(angle)h
+18(option)h
+18(\()h
+44(\))h
+18(is)h
+18(turned)h
+20(on)h
+18(\(it)h
+19(is)h
+18(b)h
+-1(y)h
+18(default\),)h
+19(then)h
+20(the)h
+19(T)h
+-3(angle)h
+177 2533(comp)s
+1(onen)h
+-1(t)h
+12(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(is)h
+13(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+12(to)h
+12(generate)h
+15(the)h
+13(pro)h
+1(duct)h
+14(\014les)h
+13(sp)h
+1(eci\014ed)h
+15(in)h
+12(the)h
+70(macros)h
+12(of)h
+12(the)h
+177 2583(input)s
+14(\014le.)h
+177 2659(The)s
+17(op)h
+1(eration)h
+16(of)h
+15(T)h
+-3(angle)h
+15(is)h
+16(v)h
+-1(ery)h
+17(simple.)h
+23(Eac)h
+-1(h)h
+76(macro)h
+15(is)h
+16(expanded)h
+16(and)h
+16(written)h
+17(to)h
+16(a)h
+16(\014le)h
+16(of)h
+15(the)h
+177 2709(same)s
+14(name.)h
+20(As)h
+15(there)h
+17(are)h
+15(a)h
+14(\014nite)h
+15(n)h
+-1(um)h
+-1(b)h
+1(er)h
+15(of)h
+14(macros,)h
+14(and)h
+14(the)h
+16(analyser)h
+15(guaran)h
+-1(tees)h
+16(that)h
+15(the)h
+15(macro)h
+177 2759(structure)s
+16(is)h
+14(non-recursiv)h
+-1(e,)h
+15(T)h
+-3(angle)h
+13(is)h
+13(guaran)h
+-1(teed)h
+15(to)h
+13(terminate.)h
+177 2835(Three)s
+15(remaining)h
+12(p)h
+1(oin)h
+-1(ts)h
+14(are)h
+14(w)h
+-1(orth)h
+14(discussing.)h
+1042 2940(88)s
+89 @eop
+90 @bop0
+cmbx12.300 sf
+[<FFFFFE0000FFFFFFC00007F007F00007F001F80007F000FC0007F0007E0007F0007F00
+07F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FC0007
+F001F80007F007F00007FFFFC00007FFFF800007F00FE00007F007F00007F003F80007F0
+01FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001
+FC0007F001FC0607F000FE0607F000FF0CFFFF803FF8FFFF800FF0>
+40 34 -2 33 42] 82 dc
+90 @bop1
+cmtt10.300 sf
+730 316(+w)s
+958 1455(+T)s
+366 2785(+=)s
+cmbx10.432 sf
+177 1297(3.14)s
+70(W)h
+-6(ea)h
+-2(v)h
+-2(e)h
+cmbx12.300 sf
+177 1735(3.14.1)s
+55(T)h
+-5(arget)h
+19(T)h
+-2(yp)h
+2(esetter)h
+177 2108(3.14.2)s
+55(Cross)h
+20(Reference)h
+16(Num)h
+-2(b)h
+2(ering)h
+cmti10.300 sf
+1674 1096(expr)s
+-2(ession)h
+1373 1455(o\013)s
+1252 2202(numb)s
+-2(ers)h
+923 2369(no)s
+13(r)h
+-2(elation)h
+460 2536(se)s
+-2(ctions)h
+352 2635(macr)s
+-2(o)h
+16(de\014nitions)h
+1636 2685(macr)s
+-2(o)h
+14(de\014nitions)h
+630 2735(macr)s
+-2(os)h
+cmr10.300 sf
+228 42(1.)s
+20(T)h
+-3(angle)h
+12(expands)h
+13(macros)h
+13(using)h
+12(blank)h
+12(inden)h
+-1(tation)h
+13(unless)h
+13(the)h
+14(user)h
+14(has)h
+13(sp)h
+1(eci\014ed)h
+15(otherwise)h
+14(in)h
+12(an)h
+281 91(inden)s
+-1(tation)h
+13(pragma)h
+12(in)h
+14(the)h
+14(input)h
+14(\014le)h
+14(\(see)h
+15(Section)h
+14(3.10.11.1)h
+-1(\).)h
+228 167(2.)s
+20(T)h
+-3(angle)h
+17(k)h
+-1(eeps)h
+20(trac)h
+-1(k)h
+19(of)h
+17(the)h
+19(length)h
+19(of)h
+18(the)h
+19(lines)h
+18(that)h
+18(it)h
+18(is)h
+19(writing)h
+17(and)h
+19(issues)h
+19(an)h
+18(error)h
+20(if)h
+17(an)h
+-1(y)h
+281 217(line)s
+14(of)h
+13(an)h
+-1(y)h
+14(pro)h
+1(duct)h
+15(\014le)h
+14(that)h
+14(it)h
+14(generates)h
+16(is)h
+13(longer)h
+14(than)h
+14(the)h
+15(maxim)h
+-3(um)h
+-1(.)h
+17(The)h
+14(maxim)h
+-3(um)h
+11(is)h
+14(the)h
+281 266(minim)s
+-3(um)h
+10(of)h
+12(a)h
+13(v)h
+-2(alue)h
+13(defaulted)h
+13(or)h
+13(sp)h
+1(eci\014ed)h
+15(in)h
+12(the)h
+14(input)h
+13(\014le)h
+13(\(Section)h
+14(3.10.11.)h
+-1(3\),)h
+11(and)h
+13(the)h
+13(v)h
+-2(alue)h
+281 316(\(if)s
+13(an)h
+-1(y\))h
+14(pro)h
+-1(vided)h
+13(b)h
+-1(y)h
+14(the)h
+72(comm)h
+-1(and)h
+12(line)h
+14(argumen)h
+-1(t)h
+12(\(Section)h
+15(3.7.3\).)h
+228 392(3.)s
+20(It)h
+14(is)h
+13(w)h
+-1(orth)h
+13(the)h
+15(user)h
+14(obtaining)h
+12(some)h
+13(understanding)h
+14(of)h
+13(the)h
+14(resources)h
+16(that)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(requires)h
+281 441(to)s
+14(p)h
+1(erform)h
+13(its)h
+14(task.)h
+177 531(When)s
+10(F)h
+-3(unnelW)h
+-3(eb's)h
+10(scanner)h
+11(executes,)h
+13(it)h
+9(reads)h
+11(eac)h
+-1(h)h
+10(\014le)h
+10(in)h
+-1(to)h
+10(mem)h
+-1(ory)h
+8(where)h
+11(it)h
+10(is)h
+10(k)h
+-1(ept)h
+10(for)h
+10(the)h
+10(duration)h
+177 581(of)s
+11(the)h
+12(run.)h
+18(Th)h
+-1(us,)h
+12(there)h
+12(m)h
+-1(ust)h
+11(b)h
+1(e)h
+12(ro)h
+1(om)h
+10(in)h
+11(memo)h
+-1(ry)h
+10(for)h
+11(the)h
+12(en)h
+-1(tire)h
+13(input)h
+11(\014le,)h
+11(including)h
+11(all)h
+10(include)h
+12(\014les.)h
+177 631(While)s
+16(this)h
+17(approac)h
+-1(h)h
+17(ma)h
+-1(y)h
+15(seem)h
+17(exp)h
+1(ensiv)h
+-1(e)h
+18(in)h
+16(memory)h
+-3(,)h
+15(it)h
+16(is)h
+17(almost)h
+15(necessary)h
+19(in)h
+17(order)h
+17(to)h
+17(supp)h
+1(ort)h
+177 680(forw)s
+-1(ard)h
+13(references.)h
+20(T)h
+-3(o)h
+12(merely)h
+12(scan)h
+13(the)h
+14(input)h
+12(\014le,)h
+13(recording)h
+13(the)h
+14(macro)h
+11(names,)h
+12(but)h
+13(lea)h
+-1(ving)h
+12(the)h
+13(text)h
+177 730(on)s
+14(disk,)h
+13(w)h
+-1(ould)h
+13(require)h
+15(man)h
+-1(y)h
+12(random)h
+12(access)h
+16(disk)h
+14(seeks.)h
+177 797(In)s
+15(con)h
+-1(trast,)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(nev)h
+-1(er)h
+16(builds)h
+14(an)h
+15(in)h
+-1(ternal)h
+15(represen)h
+-1(tation)h
+17(of)h
+14(the)h
+16(pro)h
+1(duct)h
+16(\014le.)h
+22(Instead,)h
+15(eac)h
+-1(h)h
+177 847(piece)s
+13(of)h
+11(output)h
+12(is)h
+11(written)h
+12(imm)h
+-1(ediately)h
+9(to)h
+12(the)h
+12(pro)h
+1(duct)h
+13(\014le.)h
+17(This)h
+11(means)h
+11(that)h
+12(as)h
+12(long)h
+10(as)h
+12(the)h
+12(input)h
+12(\014le)h
+177 897(\014ts)s
+15(in)h
+13(memory)h
+-4(,)h
+12(the)h
+14(pro)h
+1(duct)h
+15(\014le)h
+14(can)h
+14(b)h
+1(e)h
+15(arbitrarily)h
+13(large.)h
+18(It)h
+14(also)h
+13(means)h
+14(that)h
+14(users)h
+15(need)h
+15(not)h
+14(fear)h
+14(to)h
+177 947(de\014ne)s
+14(or)h
+13(call)h
+12(macros)h
+12(that)h
+13(they)h
+13(kno)h
+-1(w)h
+12(will)h
+12(expand)h
+13(to)h
+12(megab)h
+-1(ytes)h
+12(of)h
+13(text.)h
+18(Nor)h
+13(need)h
+13(they)h
+14(fear)h
+13(placing)h
+177 997(a)s
+16(call)h
+16(to)h
+16(suc)h
+-1(h)h
+17(a)h
+16(macro)h
+15(as)h
+16(part)h
+16(of)h
+16(an)h
+16(actual)h
+16(parameter.)h
+25(F)h
+-3(unnelW)h
+-3(eb)h
+15(do)h
+1(es)h
+17(not)h
+17(ev)h
+-1(er)h
+17(expand)h
+16(actual)h
+177 1046(parameters)s
+19(in)h
+-1(ternally)h
+-3(.)h
+31(In)h
+18(fact,)h
+20(it)h
+18(do)h
+1(es)h
+19(not)h
+19(expand)h
+19(them)h
+18(un)h
+-1(til)h
+17(it)h
+19(hits)h
+18(the)h
+20(corresp)h
+1(onding)h
+19(formal)h
+177 1096(parameter)s
+13(during)h
+13(its)h
+13(expansion)h
+13(of)h
+13(the)h
+14(called)h
+12(macro.)h
+17(A)h
+-1(t)h
+13(that)h
+13(p)h
+1(oin)h
+-1(t,)h
+13(it)h
+13(lo)h
+1(oks)h
+12(up)h
+14(the)h
+212(\(not)h
+177 1146(the)s
+15(expansion)h
+13(of)h
+14(the)h
+14(expression\))h
+15(for)h
+14(the)h
+14(corresp)h
+1(onding)h
+15(actual)h
+14(parameter,)h
+13(and)h
+14(starts)h
+15(expanding)h
+13(it.)h
+177 1405(If)s
+17(the)h
+17(scanner,)h
+19(parser,)h
+18(and)h
+17(analyser)h
+17(ha)h
+-1(v)h
+-1(e)h
+17(successfully)h
+18(\(i.e.)h
+16(with)h
+17(no)h
+16(errors,)h
+19(sev)h
+-1(ere)h
+18(errors,)h
+19(or)h
+17(fatal)h
+177 1455(errors\))s
+17(completed,)h
+15(and)h
+15(the)h
+16(W)h
+-3(ea)h
+-1(v)h
+-1(e)h
+15(option)h
+14(\()h
+44(\))h
+15(is)h
+16(turned)h
+16(on)h
+15(\(it)h
+15(is)h
+77(b)h
+-1(y)h
+15(default\),)h
+15(then)h
+16(the)h
+16(W)h
+-3(ea)h
+-1(v)h
+-1(e)h
+177 1505(comp)s
+1(onen)h
+-1(t)h
+12(of)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(is)h
+13(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+11(to)h
+12(generate)h
+14(a)h
+12(text)h
+13(\014le)h
+13(in)h
+11(the)h
+13(format)h
+11(of)h
+12(a)h
+12(particular)h
+12(t)h
+-1(yp)h
+1(esetter.)h
+177 1555(The)s
+11(result,)h
+12(when)h
+11(fed)h
+11(through)h
+11(the)h
+12(particular)h
+10(t)h
+-1(yp)h
+1(esetter)h
+13(and)h
+11(prin)h
+-1(ted,)h
+11(is)h
+11(a)h
+10(fully)h
+10(t)h
+-1(yp)h
+1(eset)h
+12(represe)h
+1(n)h
+-1(tation)h
+177 1605(of)s
+13(the)h
+15(en)h
+-1(tire)h
+15(input)h
+13(\014le)h
+14(complete)h
+13(with)h
+14(cross)h
+15(referencing)h
+15(informatio)h
+-1(n.)h
+177 1829(Curren)s
+-1(tly)h
+-3(,)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(pro)h
+1(duces)h
+16(do)h
+1(cumen)h
+-1(tation)h
+13(\014les)h
+15(in)h
+14(the)h
+15(format)h
+12(of)h
+14(only)h
+14(one)h
+14(t)h
+-1(yp)h
+1(esette)h
+1(r)h
+16(|)h
+14(T)h
+1883 1838(E)s
+1906 1829(X.)s
+177 1879(Ho)s
+-1(w)h
+-1(ev)h
+-1(er,)h
+13(the)h
+14(W)h
+-3(ea)h
+-1(v)h
+-1(e)h
+12(pac)h
+-1(k)h
+-2(age)h
+13(of)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(is)h
+13(fairly)h
+12(small)h
+-1(,)h
+11(and)h
+13(it)h
+12(is)h
+13(hop)h
+1(ed)h
+13(that)h
+13(it)h
+13(can)h
+13(b)h
+1(e)h
+14(rewritten)h
+177 1928(so)s
+13(as)h
+12(to)h
+12(pro)h
+-1(vide)h
+12(a)h
+12(collection)h
+12(of)h
+12(t)h
+-1(yp)h
+1(esetter)h
+14(mo)h
+1(dules)h
+11(from)h
+11(whic)h
+-1(h)h
+12(the)h
+13(user)h
+13(will)h
+11(b)h
+1(e)h
+13(able)h
+12(to)h
+12(c)h
+-1(ho)h
+1(ose)h
+13(using)h
+177 1978(a)s
+14(comm)h
+-1(and)h
+12(line)h
+13(argumen)h
+-1(t.)h
+177 2202(When)s
+17(F)h
+-3(unnelW)h
+-3(eb)h
+17(pro)h
+1(duces)h
+19(its)h
+17(t)h
+-1(yp)h
+1(eset)h
+18(do)h
+1(cumen)h
+-1(tation,)h
+16(it)h
+184(eac)h
+-1(h)h
+18(section)h
+18(and)h
+16(eac)h
+-1(h)h
+18(macro)h
+177 2252(de\014nition)s
+16(and)h
+17(cross)h
+18(references)h
+19(the)h
+18(macro)h
+15(de\014nitions.)h
+27(The)h
+17(exact)h
+17(sc)h
+-1(heme)h
+17(used)h
+18(has)h
+16(b)h
+1(een)h
+18(carefully)h
+177 2302(though)s
+-1(t)h
+14(out.)h
+18(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(as)h
+14(it)h
+13(can)h
+14(b)h
+1(e)h
+15(a)h
+13(little)h
+13(confusing)h
+14(to)h
+14(the)h
+14(b)h
+1(eginner,)h
+14(it)h
+14(is)h
+14(explained)h
+13(here)h
+15(in)h
+14(full.)h
+177 2369(The)s
+11(most)h
+10(imp)h
+1(ortan)h
+-1(t)h
+9(thing)h
+10(is)h
+11(that)h
+11(there)h
+12(is)h
+215(b)h
+1(et)h
+-1(w)h
+-1(een)h
+12(the)h
+11(macro)h
+10(n)h
+-1(um)h
+-1(b)h
+1(ering)h
+9(and)h
+11(the)h
+11(section)h
+177 2419(n)s
+-1(um)h
+-1(b)h
+1(ering.)h
+28(In)h
+17(Kn)h
+-1(uth's)h
+18(W)h
+-3(eb)h
+17(there)h
+19(are)h
+18(only)h
+17(section)h
+18(n)h
+-1(um)h
+-1(b)h
+1(ers.)h
+29(In)h
+18(F)h
+-3(unnelW)h
+-3(eb,)h
+17(the)h
+18(n)h
+-1(um)h
+-1(b)h
+1(ering)h
+16(of)h
+177 2469(sections)s
+15(and)h
+14(macros)h
+13(is)h
+14(separated.)h
+177 2536(In)s
+15(F)h
+-3(unnelW)h
+-3(eb,)h
+170(are)h
+16(n)h
+-1(um)h
+-1(b)h
+1(ered)h
+14(hierarc)h
+-1(hically)h
+15(in)h
+14(ascending)h
+15(order.)h
+22(F)h
+-3(or)h
+15(example,)h
+13(the)h
+16(second)h
+177 2586(lev)s
+-1(el-C)h
+18(section)h
+20(of)h
+18(the)h
+20(third)h
+18(lev)h
+-1(el-B)h
+19(section)h
+20(of)h
+18(the)h
+19(\014rst)h
+20(lev)h
+-1(el-A)h
+18(section)h
+20(is)h
+19(n)h
+-1(um)h
+-1(b)h
+1(ered)h
+18(\\1.3.2".)h
+31(In)h
+177 2635(con)s
+-1(trast,)h
+348(are)h
+16(n)h
+-1(um)h
+-1(b)h
+1(ered)h
+16(sequen)h
+-1(tially)h
+15(in)h
+16(ascending)h
+16(order.)h
+24(F)h
+-3(or)h
+16(example,)h
+15(the)h
+16(\014rst)h
+177 2685(macro)s
+12(de\014nition)h
+13(is)h
+13(n)h
+-1(um)h
+-1(b)h
+1(er)h
+12(1,)h
+12(the)h
+14(second)h
+14(is)h
+13(n)h
+-1(um)h
+-1(b)h
+1(er)h
+13(2,)h
+12(and)h
+13(so)h
+13(on.)h
+18(Note)h
+13(that)h
+13(it)h
+13(is)h
+177 2735(that)s
+18(are)h
+18(n)h
+-1(um)h
+-1(b)h
+1(ered,)h
+18(not)h
+145(.)h
+29(This)h
+17(distinction)h
+18(is)h
+17(necessary)h
+20(b)h
+1(ecause)h
+19(additiv)h
+-1(e)h
+17(macros)h
+16(\(i.e.)h
+17(the)h
+177 2785(ones)s
+16(with)h
+58(\))h
+14(can)h
+15(b)h
+1(e)h
+16(de\014ned)h
+16(b)h
+-1(y)h
+14(a)h
+15(collection)h
+14(of)h
+14(partial)h
+14(de\014nitions)h
+15(scattered)h
+17(throughout)h
+15(the)h
+15(input)h
+177 2835(\014le.)s
+18(A)h
+14(single)h
+14(additiv)h
+-1(e)h
+13(macro)h
+12(ma)h
+-1(y)h
+12(b)h
+1(e)h
+15(de\014ned)h
+15(in)h
+13(de\014nitions)h
+14(5,)h
+13(67,)h
+13(128,)h
+13(and)h
+14(153.)h
+1042 2940(89)s
+90 @eop
+91 @bop0
+91 @bop1
+cmti10.300 sf
+956 769(nothing)s
+1234 2560(not)s
+cmbx10.432 sf
+177 42(3.15)s
+70(F)h
+-6(unnelW)h
+-6(eb)h
+23(Shell)h
+cmtt10.300 sf
+786 1193(+K)s
+57(+X)h
+1606 1243(fwinit.fws)s
+1250 1938(diff)s
+672 2835(tolerate)s
+cmbx12.300 sf
+177 167(3.15.1)s
+55(In)h
+-2(tro)h
+2(duction)h
+177 2082(3.15.2)s
+55(Return)h
+18(Statuses)h
+cmbx10.300 sf
+366 1018(F)s
+-4(unnelW)h
+-4(eb)h
+14(command)h
+15(shell)h
+295 2309(Success)s
+295 2385(W)s
+-4(arning)h
+295 2510(Error)s
+295 2685(Sev)s
+-1(ere)h
+23(error)h
+cmr10.300 sf
+177 269(One)s
+19(of)h
+18(the)h
+19(goals)h
+17(of)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+18(is)h
+18(that)h
+18(it)h
+18(m)h
+-1(ust)h
+17(b)h
+1(e)h
+19(extremely)h
+18(p)h
+1(ortable.)h
+31(Huge)h
+19(e\013orts,)h
+20(desp)h
+1(erate)h
+177 319(actions,)s
+18(and)h
+18(great)h
+18(sacri\014ces)h
+19(w)h
+-1(ere)h
+18(made)h
+17(in)h
+17(the)h
+18(name)h
+17(of)h
+17(p)h
+1(ortabilit)h
+-1(y)h
+-3(.)h
+27(F)h
+-3(or)h
+17(example,)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+17(is)h
+177 369(written)s
+15(in)h
+13(C.)h
+177 444(An)s
+15(equally)h
+13(imp)h
+1(ortan)h
+-1(t)h
+13(goal)h
+13(w)h
+-1(as)h
+15(that)h
+14(of)h
+14(correctnes)h
+1(s)h
+17(and)h
+14(reliabilit)h
+-1(y)h
+-3(.)h
+17(T)h
+-3(o)h
+14(this)h
+15(end,)h
+14(it)h
+14(w)h
+-1(as)h
+15(determined)h
+177 494(that)s
+12(a)h
+11(large)h
+11(automated)h
+10(suite)h
+12(of)h
+11(test)h
+12(programs)h
+10(b)h
+1(e)h
+12(prepared)h
+13(to)h
+11(assist)h
+12(in)h
+11(regression)h
+13(testing.)h
+17(Preparing)h
+177 544(the)s
+15(test)h
+15(suite)h
+14(w)h
+-1(as)h
+14(tedious,)h
+14(but)h
+14(ac)h
+-1(hiev)h
+-2(able.)h
+17(Automating)h
+12(it)h
+13(p)h
+1(ortably)h
+14(w)h
+-1(as)h
+14(more)h
+13(di\016cult.)h
+177 619(The)s
+14(di\016cult)h
+-1(y)h
+12(faced)h
+14(w)h
+-1(as)h
+13(that)h
+13(if)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(w)h
+-1(as)h
+13(implem)h
+-1(en)h
+-1(ted)h
+12(in)h
+13(the)h
+13(form)h
+12(of)h
+12(a)h
+13(utilit)h
+-1(y)h
+12(that)h
+13(could)h
+13(b)h
+1(e)h
+177 669(in)s
+-1(v)h
+-1(ok)h
+-1(ed)h
+14(from)h
+14(the)h
+15(op)h
+1(erating)h
+15(system)h
+15(comma)h
+-1(nd)h
+14(language,)h
+14(the)h
+15(only)h
+15(w)h
+-1(a)h
+-1(y)h
+14(to)h
+15(set)h
+16(up)h
+15(regression)h
+16(testing)h
+177 719(w)s
+-1(as)h
+11(in)h
+10(the)h
+11(comma)h
+-1(nd)h
+9(language)h
+10(of)h
+10(the)h
+11(op)h
+1(erating)h
+11(system)h
+10(of)h
+10(the)h
+11(target)h
+11(mac)h
+-1(hine)h
+10(\(shellscripts)h
+12(for)h
+10(UNIX,)h
+177 769(DCL)s
+11(for)h
+12(VMS,)h
+11(batc)h
+-1(h)h
+12(\014les)h
+12(for)h
+11(MSDOS,)h
+11(and)h
+158(on)h
+11(the)h
+12(Macin)h
+-1(tosh\).)h
+18(The)h
+12(h)h
+-1(uge)h
+11(v)h
+-2(ariation)h
+10(in)h
+11(these)h
+177 819(comma)s
+-1(nd)h
+14(languages)h
+15(led)h
+15(to)h
+15(the)h
+16(conclusion)h
+16(that)h
+15(either)h
+16(the)h
+16(automation)h
+13(of)h
+15(regression)h
+17(testing)h
+16(w)h
+-1(ould)h
+177 868(ha)s
+-1(v)h
+-1(e)h
+18(to)h
+19(b)h
+1(e)h
+19(rewritten)h
+20(on)h
+18(eac)h
+-1(h)h
+19(target)h
+19(mac)h
+-1(hine,)h
+18(or)h
+18(a)h
+18(small)h
+17(comm)h
+-1(and)h
+16(language)h
+18(w)h
+-1(ould)h
+18(ha)h
+-1(v)h
+-1(e)h
+18(to)h
+18(b)h
+1(e)h
+177 918(created)s
+18(within)h
+15(F)h
+-3(unnelW)h
+-3(eb.)h
+24(In)h
+17(the)h
+16(end,)h
+17(the)h
+17(t)h
+-1(win)h
+15(goals)h
+16(of)h
+15(p)h
+1(ortabilit)h
+-1(y)h
+15(and)h
+16(regression)h
+17(testing)h
+17(w)h
+-1(ere)h
+177 968(considered)s
+17(so)h
+16(imp)h
+1(ortan)h
+-1(t)h
+14(that)h
+16(a)h
+15(small)h
+13(comma)h
+-1(nd)h
+14(shell)h
+16(w)h
+-1(as)h
+15(constructed)h
+18(inside)h
+16(F)h
+-3(unnelW)h
+-3(eb.)h
+22(This)h
+16(is)h
+177 1018(called)s
+14(the)h
+577(,)h
+12(or)h
+13(just)h
+15(\\the)h
+14(shell")h
+13(for)h
+14(short.)h
+177 1093(By)s
+16(default,)h
+15(when)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+15(is)h
+15(in)h
+-1(v)h
+-1(ok)h
+-1(ed,)h
+15(it)h
+16(do)h
+1(es)h
+16(not)h
+16(en)h
+-1(ter)h
+17(its)h
+15(shell.)h
+24(If)h
+15(just)h
+16(giv)h
+-1(en)h
+15(the)h
+16(name)h
+15(of)h
+15(an)h
+177 1143(input)s
+11(\014le,)h
+10(it)h
+10(will)h
+9(simple)h
+9(pro)h
+1(cess)h
+13(the)h
+11(input)h
+10(\014le)h
+11(in)h
+10(the)h
+11(normal)h
+9(manner)h
+9(and)h
+11(then)h
+11(terminate.)h
+16(T)h
+-3(o)h
+10(instruct)h
+177 1193(F)s
+-3(unnelW)h
+-3(eb)h
+10(to)h
+10(in)h
+-1(v)h
+-1(ok)h
+-1(e)h
+9(its)h
+10(shell,)h
+10(the)h
+64(or)h
+64(comm)h
+-1(and)h
+8(line)h
+9(option)h
+10(m)h
+-1(ust)h
+9(b)h
+1(e)h
+10(sp)h
+1(eci\014ed)h
+12(when)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+177 1243(is)s
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+12(from)h
+11(the)h
+13(op)h
+1(erating)h
+12(system.)h
+17(It)h
+13(is)h
+12(also)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+12(up)h
+1(on)h
+12(startup)h
+13(if)h
+12(the)h
+13(\014le)h
+243(exists.)h
+177 1318(Most)s
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(users)h
+17(will)h
+14(nev)h
+-1(er)h
+17(need)h
+17(to)h
+15(use)h
+16(the)h
+17(shell)h
+15(and)h
+16(need)h
+16(not)h
+16(ev)h
+-1(en)h
+16(kno)h
+-1(w)h
+15(ab)h
+1(out)h
+16(it.)h
+23(There)h
+177 1368(are)s
+14(four)h
+14(main)h
+12(uses)h
+15(of)h
+13(the)h
+15(shell:)h
+228 1486(1.)s
+20(As)h
+14(a)h
+14(to)h
+1(ol)h
+13(to)h
+14(supp)h
+1(ort)h
+14(automated)h
+13(regression)h
+15(testing.)h
+228 1570(2.)s
+20(As)h
+17(a)h
+16(dev)h
+-1(elopmen)h
+-1(t)h
+15(to)h
+1(ol)h
+15(on)h
+16(mac)h
+-1(hines)h
+16(that)h
+16(do)h
+16(not)h
+16(ha)h
+-1(v)h
+-1(e)h
+16(a)h
+16(built)h
+16(in)h
+16(shell)h
+16(\(e.g.)h
+15(the)h
+17(Macin)h
+-1(tosh\).)h
+281 1620(The)s
+14(shell)h
+14(can)h
+14(b)h
+1(e)h
+15(used)h
+14(to)h
+14(pro)h
+1(cess)h
+16(whole)h
+14(groups)h
+14(of)h
+13(\014les)h
+14(automaticall)h
+-1(y)h
+-3(.)h
+228 1705(3.)s
+20(As)h
+16(a)h
+15(con)h
+-1(v)h
+-1(enience.)h
+24(A)h
+16(user)h
+17(w)h
+-1(orking)h
+14(on)h
+15(a)h
+16(m)h
+-1(ulti)h
+-1(-tasking,)h
+13(m)h
+-1(ulti-wi)h
+-1(ndo)h
+-1(w)h
+13(w)h
+-1(orkstation)h
+15(ma)h
+-1(y)h
+14(wish)h
+281 1754(to)s
+14(k)h
+-1(eep)h
+15(an)h
+14(in)h
+-1(teractiv)h
+-1(e)h
+14(session)h
+15(of)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(going)h
+13(in)h
+13(one)h
+15(windo)h
+-1(w)h
+13(rather)h
+15(than)h
+14(ha)h
+-1(ving)h
+13(to)h
+14(run)h
+281 1804(up)s
+14(the)h
+14(utilit)h
+-1(y)h
+13(eac)h
+-1(h)h
+14(time)h
+13(it)h
+13(is)h
+14(required.)h
+228 1889(4.)s
+20(As)h
+15(a)h
+15(con)h
+-1(v)h
+-1(enien)h
+-1(t)h
+15(v)h
+-1(ehicle)h
+15(for)h
+15(enclosing)h
+15(utilities.)h
+20(The)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(shell)h
+15(con)h
+-1(tains)h
+15(useful)h
+15(general)h
+281 1938(purp)s
+1(ose)h
+15(comm)h
+-1(ands)h
+12(suc)h
+-1(h)h
+15(as)h
+14(the)h
+15(di\013erences)h
+16(comm)h
+-1(and)h
+100(.)h
+177 2184(The)s
+18(hierarc)h
+-1(h)h
+-1(y)h
+17(of)h
+17(diagnostics)h
+17(describ)h
+1(ed)h
+19(in)h
+16(Section)h
+18(3.5)h
+16(is)h
+17(also)h
+17(used)h
+18(in)h
+16(the)h
+18(shell)h
+17(comm)h
+-1(ands.)h
+26(Eac)h
+-1(h)h
+177 2234(shell)s
+14(comm)h
+-1(and)h
+12(returns)h
+15(a)h
+14(status)h
+15(whic)h
+-1(h)h
+14(can)h
+14(a\013ect)h
+15(further)h
+14(pro)h
+1(cessing.)h
+464 2309(status)s
+15(is)h
+14(the)h
+14(normal)h
+12(comm)h
+-1(and)h
+12(return)h
+15(status.)h
+489 2385(status)s
+17(is)h
+15(returned)h
+18(if)h
+15(some)h
+14(minor)h
+14(problem)h
+15(arose)h
+16(with)h
+15(the)h
+17(execution)h
+16(of)h
+15(the)h
+295 2435(comma)s
+-1(nd.)h
+426 2510(status)s
+17(is)h
+17(returned)h
+18(if)h
+16(a)h
+16(signi\014can)h
+-1(t)h
+17(problem)h
+15(arises)h
+17(during)h
+16(the)h
+18(execution)h
+17(of)h
+16(the)h
+295 2560(comma)s
+-1(nd.)h
+24(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+17(unlik)h
+-1(e)h
+16(a)h
+16(sev)h
+-1(ere)h
+19(error,)h
+17(it)h
+16(do)h
+1(es)h
+92(cause)h
+18(termination)h
+14(of)h
+16(the)h
+17(en-)h
+295 2610(closing)s
+14(shellscript.)h
+580 2685(status)s
+22(is)h
+21(returned)h
+22(if)h
+20(a)h
+20(problem)h
+20(arises)h
+21(during)h
+21(the)h
+21(execution)h
+22(of)h
+20(the)h
+295 2735(comma)s
+-1(nd)h
+17(that)h
+19(prev)h
+-1(en)h
+-1(ts)h
+20(the)h
+19(comm)h
+-1(and)h
+17(from)h
+17(deliv)h
+-1(ering)h
+18(on)h
+18(its)h
+19(\\promise".)h
+30(A)h
+19(sev)h
+-1(ere)h
+295 2785(error)s
+12(causes)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+10(to)h
+10(ab)h
+1(ort)h
+11(the)h
+11(script)h
+11(\(and)h
+11(an)h
+-1(y)h
+10(stac)h
+-1(k)h
+-1(ed)h
+11(scripts\))h
+12(to)h
+10(the)h
+11(in)h
+-1(teractiv)h
+-1(e)h
+295 2835(lev)s
+-1(el.)h
+18(\(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(the)h
+203(comm)h
+-1(and)h
+12(allo)h
+-1(ws)h
+12(this)h
+14(to)h
+14(b)h
+1(e)h
+15(temp)h
+1(orarily)h
+12(o)h
+-1(v)h
+-1(erridden\).)h
+1042 2940(90)s
+91 @eop
+92 @bop0
+92 @bop1
+cmsy10.300 sf
+239 2268(\017)s
+239 2408(\017)s
+239 2547(\017)s
+239 2637(\017)s
+239 2827(\017)s
+cmti10.300 sf
+1810 2268(no)s
+16(lo)h
+-2(c)h
+-2(al)h
+281 2318(variables)s
+cmbx10.300 sf
+295 42(F)s
+-4(atal)h
+15(error)h
+295 219(Assertion)s
+16(error)h
+cmbx12.300 sf
+177 798(3.15.3)s
+55(Command)h
+17(Line)h
+18(Length)h
+177 1056(3.15.4)s
+55(String)h
+19(Substitution)h
+cmtt10.300 sf
+865 497(fw)s
+670 596(status)s
+1736 1212($0..$9)s
+177 1262($A..$Z)s
+263 1390(define)s
+1234(define)h
+177 1742(define)s
+21(3)h
+21("/root/usr/usr)h
+-1(s/use)h
+-1(rs/us)h
+-1(ers5/)h
+-1(this)h
+-1(user/)h
+-1(workd)h
+-1(ir/fw)h
+-1(dir/t)h
+-1(estdi)h
+-1(r")h
+177 1792(define)s
+21(M)h
+21("/user/local/r)h
+-1(ubbis)h
+-1(h/bin)h
+-1(/fw")h
+177 1841(define)s
+21(Q)h
+21("You)h
+21(don't)h
+21(need)h
+21(to)h
+21(double")h
+21(double)h
+20(quotes")h
+1051 2408(execute)s
+722(0)h
+438 2458(9)s
+1480 2547($$)s
+740 2637($/)s
+1694 2687(/)s
+179(])h
+411 2737(:)s
+157(\\)h
+cmr10.300 sf
+532 42(status)s
+14(is)h
+13(returned)h
+15(if)h
+12(a)h
+13(problem)h
+12(arises)h
+13(that)h
+13(is)h
+13(so)h
+14(serious)h
+13(that)h
+13(execution)h
+14(of)h
+295 91(F)s
+-3(unnelW)h
+-3(eb)h
+10(cannot)h
+10(con)h
+-1(tin)h
+-1(ue.)h
+17(A)h
+10(fatal)h
+9(error)h
+11(causes)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+9(to)h
+10(ab)h
+1(ort)h
+10(to)h
+10(the)h
+11(op)h
+1(erating)h
+295 141(system)s
+14(lev)h
+-1(el.)h
+631 219(status)s
+17(is)h
+16(nev)h
+-1(er)h
+16(returned.)h
+26(If)h
+15(an)h
+16(assertion)h
+16(error)h
+17(o)h
+1(ccurs,)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+295 269(b)s
+1(om)h
+-1(bs)h
+14(out)h
+14(ungracefully)h
+14(to)h
+14(the)h
+15(op)h
+1(erating)h
+15(system.)h
+19(Assertion)h
+16(errors)h
+15(should)h
+15(nev)h
+-1(er)h
+15(hap-)h
+295 319(p)s
+1(en.)h
+19(If)h
+13(they)h
+15(do,)h
+13(then)h
+15(there)h
+15(is)h
+14(a)h
+13(bug)h
+14(in)h
+13(F)h
+-3(unnelW)h
+-3(eb.)h
+177 397(T)s
+-3(o)h
+17(b)h
+1(e)h
+19(precise,)h
+20(the)h
+19(status)h
+18(returned)h
+20(b)h
+-1(y)h
+18(eac)h
+-1(h)h
+18(command)h
+16(is)h
+17(a)h
+18(v)h
+-1(ector)h
+19(of)h
+17(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+18(b)h
+1(eing)h
+18(the)h
+18(n)h
+-1(um)h
+-1(b)h
+1(er)h
+177 447(of)s
+15(eac)h
+-1(h)h
+16(of)h
+15(the)h
+16(di\013eren)h
+-1(t)h
+16(kinds)h
+15(of)h
+15(diagnostic)h
+15(generated)h
+17(b)h
+-1(y)h
+15(the)h
+16(comm)h
+-1(and.)h
+21(Usually)h
+14(only)h
+15(one)h
+15(kind)h
+15(of)h
+177 497(diagnostic)s
+12(is)h
+12(generated.)h
+19(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+13(the)h
+69(comm)h
+-1(and)h
+11(and)h
+12(a)h
+12(few)h
+13(of)h
+12(the)h
+13(other)h
+13(comm)h
+-1(ands)h
+11(can)h
+12(generate)h
+177 546(more)s
+16(than)h
+17(one)h
+17(kind)h
+16(of)h
+17(diagnostic.)h
+26(These)h
+18(status)h
+18(v)h
+-1(ectors)h
+18(are)h
+17(summed)h
+15(in)h
+-1(ternally)h
+16(where)h
+18(they)h
+18(ma)h
+-1(y)h
+177 596(later)s
+13(b)h
+1(e)h
+14(accessed)h
+15(using)h
+13(the)h
+157(comm)h
+-1(and.)h
+16(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+13(the)h
+14(curren)h
+-1(t)h
+14(diagnostic)h
+12(state)h
+14(ev)h
+-2(ap)h
+1(orates)h
+14(as)h
+177 646(so)s
+1(on)h
+14(as)h
+14(the)h
+15(next)h
+14(comm)h
+-1(and)h
+12(is)h
+14(encoun)h
+-1(tered.)h
+177 904(The)s
+14(maxim)h
+-2(um)h
+10(length)h
+14(of)h
+13(a)h
+14(shell)h
+14(comm)h
+-1(and)h
+12(line)h
+13(is)h
+14(guaran)h
+-1(teed)h
+14(to)h
+14(b)h
+1(e)h
+15(at)h
+13(least)h
+14(300)h
+14(c)h
+-1(haracters.)h
+177 1162(Most)s
+18(comm)h
+-1(and)h
+15(shells)h
+18(pro)h
+-1(vide)h
+17(some)h
+17(form)h
+16(of)h
+16(string)h
+18(substitution)h
+18(so)h
+17(as)h
+18(to)h
+17(pro)h
+-1(vide)h
+17(some)h
+17(degree)h
+18(of)h
+177 1212(parameterization.)s
+21(The)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(shell)h
+15(pro)h
+-1(vides)h
+16(36)h
+14(di\013eren)h
+-1(t)h
+17(string)h
+15(v)h
+-2(ariables)h
+15(named)h
+160(and)h
+325 1262(\(case)s
+18(insensitiv)h
+-1(e\).)h
+28(Eac)h
+-1(h)h
+17(v)h
+-2(ariable)h
+16(can)h
+18(hold)h
+16(a)h
+17(string)h
+17(con)h
+-1(taining)h
+16(an)h
+-1(y)h
+16(sequence)h
+20(of)h
+16(prin)h
+-1(table)h
+177 1312(c)s
+-1(haracters)h
+16(and)h
+14(can)h
+14(b)h
+1(e)h
+14(as)h
+14(long)h
+13(as)h
+14(a)h
+14(comm)h
+-1(and)h
+12(line.)h
+177 1390(The)s
+160(comm)h
+-1(and)h
+12(allo)h
+-1(ws)h
+13(the)h
+14(user)h
+16(to)h
+14(assign)h
+13(a)h
+14(v)h
+-2(alue)h
+14(to)h
+14(these)h
+15(v)h
+-2(ariables.)h
+18(The)h
+160(comm)h
+-1(and)h
+177 1439(tak)s
+-1(es)h
+15(t)h
+-1(w)h
+-1(o)h
+13(argumen)h
+-1(ts.)h
+18(The)h
+14(\014rst)h
+15(is)h
+14(the)h
+15(digit)h
+13(or)h
+14(letter)h
+15(of)h
+13(the)h
+15(v)h
+-2(ariable)h
+13(to)h
+13(b)h
+1(e)h
+15(de\014ned.)h
+20(The)h
+14(second)h
+15(is)h
+14(a)h
+177 1489(double)s
+13(quote)h
+14(delimited)h
+12(string)h
+13(b)h
+1(eing)h
+13(the)h
+14(string)h
+14(v)h
+-2(alue)h
+12(to)h
+14(b)h
+1(e)h
+14(assigned)h
+13(to)h
+13(the)h
+14(v)h
+-2(ariable.)h
+17(If)h
+13(y)h
+-1(ou)h
+13(w)h
+-1(an)h
+-1(t)h
+13(to)h
+177 1539(include)s
+14(a)h
+14(double)h
+13(quote)h
+15(c)h
+-1(haracter)h
+15(within)h
+13(the)h
+15(string,)h
+13(y)h
+-1(ou)h
+13(don't)h
+14(need)h
+15(to)h
+13(double)h
+14(it.)h
+177 1617(Examples:)s
+177 1966(Only)s
+13(the)h
+14(iden)h
+-1(tifying)h
+11(c)h
+-1(haracter)h
+15(of)h
+12(the)h
+14(v)h
+-2(ariable)h
+12(b)h
+1(eing)h
+13(assigned)h
+13(is)h
+13(used)h
+14(in)h
+13(the)h
+13(de\014nition.)h
+18(This)h
+13(syn)h
+-1(tax)h
+177 2016(is)s
+18(a)h
+18(simple)h
+17(w)h
+-1(a)h
+-1(y)h
+17(of)h
+18(prev)h
+-1(en)h
+-1(ting)h
+18(the)h
+19(v)h
+-2(ariable)h
+17(from)h
+16(b)h
+1(eing)h
+19(substituted)h
+19(b)h
+1(efore)h
+19(it)h
+18(has)h
+18(a)h
+18(c)h
+-1(hance)h
+19(to)h
+18(b)h
+1(e)h
+177 2066(de\014ned!)s
+177 2144(The)s
+14(follo)h
+-1(wing)h
+12(p)h
+1(oin)h
+-1(ts)h
+14(clean)h
+14(up)h
+14(the)h
+14(remaining)h
+12(seman)h
+-1(tic)h
+13(details:)h
+281 2268(There)s
+16(is)h
+15(only)h
+15(one)h
+15(set)h
+16(of)h
+15(v)h
+-2(ariables)h
+14(and)h
+15(they)h
+16(are)h
+15(global)h
+14(to)h
+15(all)h
+14(shellscripts.)h
+23(There)h
+16(are)h
+439 2318(.)s
+281 2408(When)s
+20(a)h
+21(shellscript)h
+21(is)h
+20(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+19(using)h
+20(the)h
+194(comma)h
+-1(nd,)h
+20(the)h
+21(substitution)h
+20(v)h
+-2(ariables)h
+281 2458(through)s
+50(are)h
+14(a\013ected.)h
+19(See)h
+15(Section)h
+14(3.15.7.9)h
+12(for)h
+13(more)h
+13(details.)h
+281 2547(If)s
+13(y)h
+-1(ou)h
+14(w)h
+-1(an)h
+-1(t)h
+13(to)h
+14(include)h
+14(a)h
+14(dollar)h
+12(sign)h
+14(c)h
+-1(haracter)h
+15(in)h
+14(a)h
+13(comma)h
+-1(nd)h
+12(use)h
+15(\\)h
+44(".)h
+281 2637(F)s
+-3(unnelW)h
+-3(eb)h
+14(also)h
+14(de\014nes)h
+15(\\)h
+44(")h
+14(whic)h
+-1(h)h
+14(translates)h
+15(to)h
+15(the)h
+15(c)h
+-1(haracter)h
+15(that)h
+15(separates)h
+16(directory)h
+15(and)h
+281 2687(\014le)s
+21(name)h
+21(\014elds)h
+21(in)h
+21(\014le)h
+22(names)h
+21(on)h
+21(the)h
+22(host)h
+22(mac)h
+-1(hine.)h
+39(F)h
+-3(or)h
+21(example:)h
+32(Sun=\\)h
+22(",)h
+22(V)h
+-3(ax=\\)h
+22(",)h
+281 2737(Mac=\\)s
+22(",)h
+13(PC=\\)h
+22(".)h
+281 2827(Substitution)s
+14(is)h
+13(not)h
+14(p)h
+1(erformed)h
+14(recursiv)h
+-1(ely)h
+-3(.)h
+1042 2940(91)s
+92 @eop
+93 @bop0
+93 @bop1
+cmbx12.300 sf
+177 42(3.15.5)s
+55(Ho)h
+-2(w)h
+20(a)h
+19(Command)h
+17(Line)h
+17(is)h
+19(Pro)h
+2(cessed)h
+177 1343(3.15.6)s
+55(Options)h
+cmtt10.300 sf
+921 965(!)s
+1383 2002(+F)s
+652 2151(fw)s
+177 2201(set)s
+101(fw)h
+177 2393($)s
+22(fw)h
+21(+k)h
+22(+t)h
+261(!)h
+21(Original)h
+20(invocation)h
+20(of)h
+21(FunnelWeb)h
+20(from)h
+21(OS.)h
+657 2443(!)s
+21(Shell)h
+21(options)h
+20(are)h
+21(now)h
+22(default)h
+20(with)h
+21("+t".)h
+177 2493(FunnelWeb>fw)s
+19(sloth)h
+87(!)h
+21(Equivalent)h
+20(to)h
+21(fw)h
+22(sloth)h
+20(+t.)h
+177 2543(FunnelWeb>set)s
+19(-l)h
+131(!)h
+21(Change)h
+21(the)h
+21(l)h
+22(shell)h
+20(option.)h
+177 2593(FunnelWeb>fw)s
+19(sloth)h
+21(+q)h
+22(!)h
+21(Equivalent)h
+20(to)h
+21(fw)h
+22(sloth)h
+20(+t)h
+22(-l)h
+21(+q.)h
+177 2642(FunnelWeb>fw)s
+19(sloth)h
+87(!)h
+21(Equivalent)h
+20(to)h
+21(fw)h
+22(sloth)h
+20(+t)h
+22(-l.)h
+286 2835(fw)s
+cmr10.300 sf
+177 158(When)s
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(reads)h
+14(in)h
+12(a)h
+13(comm)h
+-1(and)h
+11(line)h
+12(\(from)h
+11(the)h
+14(console)h
+13(or)h
+13(a)h
+12(script)h
+14(\014le\),)h
+13(it)h
+12(pro)h
+1(cesses)h
+15(it)h
+13(in)h
+12(the)h
+177 208(follo)s
+-1(wing)h
+11(sequence)h
+1(:)h
+228 350(1.)s
+20(The)h
+14(comm)h
+-1(and)h
+11(line)h
+13(is)h
+14(c)h
+-1(hec)h
+-1(k)h
+-1(ed)h
+14(for)h
+13(non-prin)h
+-1(table)h
+13(c)h
+-1(haracters.)h
+20(If)h
+13(there)h
+14(are)h
+14(an)h
+-1(y)h
+-3(,)h
+12(they)h
+14(are)h
+14(\015agged)h
+281 400(with)s
+13(a)h
+14(sev)h
+-1(ere)h
+16(error.)h
+228 504(2.)s
+20(All)h
+11(dollar)h
+10(string)h
+12(substitution)h
+12(v)h
+-2(ariables)h
+11(in)h
+11(the)h
+13(comm)h
+-1(and)h
+10(line)h
+11(are)h
+12(replaced)h
+13(b)h
+-1(y)h
+11(their)h
+12(corresp)h
+1(ond-)h
+281 554(ing)s
+15(string.)h
+25(The)h
+17(comm)h
+-1(and)h
+14(line)h
+16(is)h
+15(pro)h
+1(cesse)h
+1(d)h
+18(from)h
+14(left)h
+16(to)h
+16(righ)h
+-1(t.)h
+24(Substitutions)h
+17(are)h
+16(p)h
+1(erformed)h
+281 604(non)s
+14(recursiv)h
+-1(ely)h
+-3(.)h
+228 708(3.)s
+20(A)h
+-1(t)h
+9(this)h
+10(p)h
+1(oin)h
+-1(t,)h
+9(if)h
+9(the)h
+10(line)h
+9(is)h
+9(empt)h
+-1(y)h
+-3(,)h
+9(or)h
+9(consists)h
+11(en)h
+-1(tirely)h
+9(of)h
+9(blanks,)h
+10(it)h
+9(is)h
+9(ignored)h
+10(and)h
+9(the)h
+10(in)h
+-1(terpreter)h
+281 757(mo)s
+-1(v)h
+-1(es)h
+13(to)h
+13(the)h
+15(next)h
+14(line.)h
+228 861(4.)s
+20(A)h
+14(sev)h
+-1(ere)h
+15(error)h
+15(is)h
+14(generated)h
+15(if)h
+13(the)h
+15(line)h
+13(at)h
+14(this)h
+14(stage)h
+14(b)h
+1(egins)h
+14(with)h
+14(a)h
+14(blank.)h
+228 965(5.)s
+20(If)h
+13(the)h
+15(\014rst)h
+15(c)h
+-1(haracter)h
+15(of)h
+13(the)h
+15(line)h
+13(is)h
+14(\\)h
+22(",)h
+12(the)h
+15(line)h
+13(is)h
+14(a)h
+14(comm)h
+-1(en)h
+-1(t)h
+12(line)h
+14(and)h
+14(is)h
+13(ignored.)h
+228 1069(6.)s
+20(The)h
+18(run)h
+18(of)h
+18(non-blanks)h
+17(comm)h
+-1(encing)h
+16(at)h
+18(the)h
+19(start)h
+18(of)h
+17(the)h
+19(line)h
+17(is)h
+18(compared)h
+17(case-insensitiv)h
+-1(ely)h
+281 1119(to)s
+15(eac)h
+-1(h)h
+16(of)h
+15(the)h
+17(legal)h
+14(comma)h
+-1(nd)h
+14(v)h
+-1(erbs.)h
+24(If)h
+15(the)h
+16(command)h
+13(is)h
+16(illegal,)h
+13(a)h
+16(sev)h
+-1(ere)h
+17(error)h
+16(is)h
+16(generated,)h
+281 1169(otherwise)s
+15(the)h
+14(comma)h
+-1(nd)h
+12(is)h
+14(pro)h
+1(cessed)h
+1(.)h
+177 1459(The)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(shell)h
+14(main)h
+-2(tains)h
+12(three)h
+15(sets)h
+15(of)h
+14(comm)h
+-1(and)h
+12(line)h
+13(options.)h
+228 1602(1.)s
+20(The)h
+10(set)h
+10(of)h
+9(options)h
+9(resulting)h
+9(from)h
+8(applying)h
+8(the)h
+10(op)h
+1(erating)h
+9(system)h
+9(lev)h
+-1(el)h
+9(comm)h
+-1(and)h
+8(line)h
+9(argumen)h
+-1(ts)h
+281 1652(to)s
+14(the)h
+14(default)h
+14(option)h
+13(settings.)h
+228 1756(2.)s
+20(A)h
+14(set)h
+15(of)h
+13(shell)h
+14(options)h
+13(that)h
+14(prev)h
+-2(ail)h
+13(during)h
+14(the)h
+14(shell)h
+14(in)h
+-1(v)h
+-1(o)h
+1(cation.)h
+228 1860(3.)s
+20(The)h
+14(set)h
+15(of)h
+13(option)h
+13(v)h
+-2(alues)h
+14(activ)h
+-1(e)h
+14(during)h
+14(a)h
+13(particular)h
+14(in)h
+-1(v)h
+-1(o)h
+1(cation)h
+12(of)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(prop)h
+1(er.)h
+177 2002(When)s
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(is)h
+14(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(from)h
+13(the)h
+15(op)h
+1(erating)h
+14(system)h
+14(with)h
+14(just)h
+59(,)h
+13(only)h
+14(the)h
+15(\014rst)h
+15(of)h
+14(these)h
+15(three)h
+177 2052(sets)s
+19(comes)h
+17(in)h
+-1(to)h
+17(existence.)h
+30(If)h
+18(the)h
+18(user)h
+18(in)h
+-1(v)h
+-1(ok)h
+-1(es)h
+17(the)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(shell,)h
+18(the)h
+18(shell)h
+18(options)h
+17(come)h
+16(in)h
+-1(to)h
+177 2102(existence)s
+19(and)h
+17(are)h
+18(initiali)h
+-1(zed)h
+16(with)h
+17(the)h
+18(v)h
+-2(alue)h
+16(of)h
+17(the)h
+18(\014rst)h
+17(set.)h
+29(These)h
+19(shell)h
+17(options)h
+16(are)h
+18(used)h
+18(as)h
+17(the)h
+177 2151(default)s
+14(for)h
+14(all)h
+13(subsequen)h
+-1(t)h
+73(commands.)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(they)h
+15(can)h
+14(b)h
+1(e)h
+15(altered)h
+15(using)h
+14(the)h
+15(script)h
+15(comm)h
+-1(and)h
+243 2201(.)s
+17(If)h
+11(a)h
+67(comm)h
+-1(and)h
+10(executed)h
+14(in)h
+11(a)h
+11(shell)h
+12(con)h
+-1(tains)h
+12(additional)h
+10(comm)h
+-1(and)h
+10(line)h
+11(options,)h
+11(these)h
+13(o)h
+-1(v)h
+-1(erride)h
+177 2251(the)s
+15(shell)h
+13(options)h
+14(for)h
+13(that)h
+14(run,)h
+14(but)h
+14(do)h
+14(not)h
+14(c)h
+-1(hange)h
+14(the)h
+14(shell)h
+14(options.)h
+18(An)h
+14(example)h
+13(follo)h
+-1(ws:)h
+177 2785(The)s
+14(existence)h
+15(of)h
+12(the)h
+14(shell)h
+13(option)h
+12(set)h
+14(means)h
+12(that)h
+13(the)h
+14(user)h
+14(can)h
+13(set)h
+14(up)h
+13(a)h
+13(set)h
+14(of)h
+13(defaults)h
+13(to)h
+13(b)h
+1(e)h
+13(applied)h
+177 2835(to)s
+14(all)h
+70(comm)h
+-1(ands)h
+12(issued)h
+15(within)h
+13(the)h
+15(shell.)h
+1042 2940(92)s
+93 @eop
+94 @bop0
+94 @bop1
+cmti10.300 sf
+1625 1062(hasn)s
+-4('t)h
+cmbx12.300 sf
+177 42(3.15.7)s
+55(Shell)h
+18(Commands)h
+cmbx10.300 sf
+177 688(3.15.7.1)s
+48(Absen)h
+-1(t)h
+177 1234(3.15.7.2)s
+48(Co)h
+1(dify)h
+177 2311(3.15.7.3)s
+48(Compare)h
+cmtt10.300 sf
+177 226(shell_command)s
+19(=)h
+22(absent)h
+64(|)h
+22(codify)h
+20(|)h
+22(compare)h
+20(|)h
+22(define)h
+20(|)h
+22(diff)h
+86(|)h
+22(diffsummary)h
+19(|)h
+526 276(diffzero)s
+20(|)h
+22(eneo)h
+64(|)h
+22(execute)h
+20(|)h
+22(exists)h
+20(|)h
+22(fixeols)h
+20(|)h
+22(help)h
+173(|)h
+526 326(here)s
+108(|)h
+22(quit)h
+64(|)h
+22(set)h
+108(|)h
+22(show)h
+64(|)h
+22(skipto)h
+42(|)h
+22(status)h
+129(|)h
+526 376(tolerate)s
+20(|)h
+22(trace)h
+42(|)h
+22(write)h
+64(|)h
+22(writeu)h
+177 425(s)s
+22(=)h
+21({")h
+22("}+)h
+267 782(absent)s
+177 922(Syntax)s
+21(:)h
+21(absent)h
+21(=)h
+21("absent")h
+21(s)h
+21(filename)h
+177 972(Example:)s
+20(absent)h
+21(result.out)h
+262 1329(codify)s
+177 1618(Syntax)s
+21(:)h
+21(codify)h
+21(=)h
+21("codify")h
+21(s)h
+21(filename)h
+20(s)h
+22(filename)h
+177 1668(Example:)s
+20(codify)h
+21(header.tex)h
+20(header.c)h
+177 1849(Input)s
+43(Line:)h
+20(\\def\\par{\\leave)h
+-1(vmode)h
+-1(\\endg)h
+-1(raf})h
+-1(%)h
+20(A)h
+22("jolly)h
+20(good)h
+21(hack".)h
+177 1899(Output)s
+21(Line:)h
+20(WX\("\\\\def\\\\par{)h
+-1(\\\\lea)h
+-1(vevmo)h
+-1(de\\\\)h
+-1(endgr)h
+-1(af}%)h
+19(A)h
+22(\\"jolly)h
+20(good)h
+21(hack\\"."\);)h
+265 1989(codify)s
+606 2139(codif)s
+265 2405(compare)s
+177 2595(Syntax)s
+21(:)h
+21(compare)h
+21(=)h
+21("compare")h
+20(s)h
+22(filename)h
+20(s)h
+21(filename)h
+177 2645(Example:)s
+20(compare)h
+21(result.txt)h
+19(answer.txt)h
+262 2735(compare)s
+1676 2785(diff)s
+cmr10.300 sf
+177 136(This)s
+14(section)h
+15(describ)h
+1(es)h
+16(eac)h
+-1(h)h
+14(of)h
+13(the)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(shell)h
+14(comm)h
+-1(ands.)h
+16(The)h
+15(syn)h
+-1(tax)h
+14(is:)h
+177 516(As)s
+19(a)h
+17(rule,)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+18(shell)h
+18(comm)h
+-1(ands)h
+16(return)h
+20(sev)h
+-1(ere)h
+19(status)h
+19(if)h
+17(their)h
+19(argumen)h
+-1(ts)h
+17(are)h
+18(syn)h
+-1(tactically)h
+177 566(incorrect)s
+15(or)h
+14(if)h
+13(they)h
+15(are)h
+14(unable)h
+14(to)h
+13(succes)h
+1(sfully)h
+15(op)h
+1(erate)h
+14(on)h
+14(argumen)h
+-1(t)h
+13(\014les.)h
+177 782(The)s
+167(command)h
+16(p)h
+1(erforms)h
+17(no)h
+18(action)h
+18(except)h
+20(to)h
+17(return)h
+20(a)h
+18(status.)h
+31(If)h
+18(the)h
+18(\014le)h
+19(sp)h
+1(eci\014ed)h
+19(in)h
+18(its)h
+177 832(argumen)s
+-1(t)h
+13(do)h
+1(esn't)h
+14(exist)h
+15(it)h
+13(returns)h
+15(succes)h
+1(s)h
+16(status,)h
+14(otherwise)h
+15(it)h
+13(returns)h
+16(sev)h
+-1(ere)h
+15(status.)h
+177 1062(This)s
+16(comm)h
+-1(and)h
+14(is)h
+15(useful)h
+16(in)h
+15(regression)h
+17(testing)h
+16(for)h
+15(making)h
+13(sure)h
+17(that)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+135(pro)h
+1(duced)h
+17(a)h
+177 1112(particular)s
+14(output)h
+14(\014le.)h
+177 1329(The)s
+159(comm)h
+-1(and)h
+12(tak)h
+-1(es)h
+14(t)h
+-1(w)h
+-1(o)h
+13(argumen)h
+-1(ts:)h
+17(an)h
+14(input)h
+14(\014le)h
+13(and)h
+14(an)h
+13(output)h
+14(\014le.)h
+18(It)h
+14(reads)h
+15(eac)h
+-1(h)h
+14(line)h
+13(of)h
+177 1378(the)s
+13(input)h
+13(\014le)h
+13(and)h
+12(writes)h
+13(a)h
+13(corresp)h
+1(onding)h
+13(line)h
+13(to)h
+12(the)h
+13(output)h
+13(\014le.)h
+18(The)h
+13(corresp)h
+1(onding)h
+14(line)h
+12(consists)h
+13(of)h
+177 1428(a)s
+11(C)h
+11(macro)h
+10(call)h
+10(con)h
+-1(taining)h
+10(a)h
+10(string)h
+11(con)h
+-1(taining)h
+10(the)h
+12(input)h
+11(line.)h
+16(The)h
+12(comm)h
+-1(and)h
+9(con)h
+-1(v)h
+-1(erts)h
+12(all)h
+10(bac)h
+-1(kslashes)h
+177 1478(in)s
+13(input)h
+14(lines)h
+13(to)h
+13(double)h
+14(bac)h
+-1(kslashes)h
+14(so)h
+14(as)h
+13(to)h
+13(a)h
+-1(v)h
+-1(oid)h
+13(un)h
+-1(w)h
+-1(an)h
+-1(ted)h
+13(in)h
+-1(terpretations)h
+14(b)h
+-1(y)h
+14(the)h
+14(C)h
+13(compiler.)h
+17(It)h
+177 1528(also)s
+13(con)h
+-1(v)h
+-1(erts)h
+15(double)h
+14(quotes)h
+15(in)h
+13(the)h
+15(line)h
+13(to)h
+14(bac)h
+-1(kslashed)h
+14(double)h
+14(quotes.)h
+177 1758(The)s
+14(follo)h
+-1(wing)h
+12(example)h
+12(demonstrates)h
+15(the)h
+14(transformation.)h
+177 1989(The)s
+164(comma)h
+-1(nd)h
+15(w)h
+-1(as)h
+16(in)h
+-1(tro)h
+1(duced)h
+17(to)h
+17(assist)h
+16(in)h
+16(the)h
+17(dev)h
+-1(elopmen)h
+-1(t)h
+16(of)h
+16(F)h
+-3(unnelW)h
+-3(eb.)h
+25(It)h
+16(is)h
+17(used)h
+17(to)h
+177 2039(con)s
+-1(v)h
+-1(ert)h
+16(longish)h
+14(text)h
+16(\014les)h
+15(in)h
+-1(to)h
+14(C)h
+15(co)h
+1(de)h
+16(to)h
+15(write)h
+16(them)h
+14(out.)h
+21(The)h
+16(C)h
+15(co)h
+1(de)h
+16(is)h
+15(then)h
+16(included)h
+15(within)h
+14(the)h
+177 2089(F)s
+-3(unnelW)h
+-3(eb)h
+15(C)h
+15(program.)h
+20(F)h
+-3(or)h
+14(example,)h
+14(the)h
+15(set)h
+16(of)h
+15(T)h
+1088 2098(E)s
+1111 2089(X)s
+15(de\014nitions)h
+15(that)h
+15(app)h
+1(ears)h
+16(at)h
+15(the)h
+16(top)h
+15(of)h
+14(ev)h
+-1(ery)h
+177 2139(do)s
+1(cumen)h
+-1(tation)h
+12(\014le)h
+14(w)h
+-1(as)h
+123(ied)h
+12(and)h
+14(inserted)h
+14(in)h
+-1(to)h
+13(the)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(co)h
+1(de)h
+14(so)h
+13(that)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(w)h
+-1(ould)h
+177 2188(not)s
+14(ha)h
+-1(v)h
+-1(e)h
+14(to)h
+13(lo)h
+1(ok)h
+13(for)h
+14(a)h
+13(\014le)h
+14(con)h
+-1(taining)h
+13(the)h
+15(de\014nitions)h
+14(at)h
+13(run)h
+14(time.)h
+177 2405(The)s
+187(comm)h
+-1(and)h
+14(tak)h
+-1(es)h
+18(t)h
+-1(w)h
+-1(o)h
+16(\014lename)h
+15(argumen)h
+-1(ts)h
+16(and)h
+17(p)h
+1(erforms)h
+16(a)h
+17(binary)h
+16(comparison)h
+15(of)h
+16(the)h
+177 2455(t)s
+-1(w)h
+-1(o)h
+14(\014les.)h
+19(If)h
+14(the)h
+15(\014les)h
+14(are)h
+15(iden)h
+-1(tical,)h
+13(success)h
+17(status)h
+15(is)h
+14(returned.)h
+20(If)h
+14(they)h
+15(are)h
+14(di\013eren)h
+-1(t,)h
+15(sev)h
+-1(ere)h
+16(status)h
+15(is)h
+177 2504(returned.)s
+20(No)h
+14(inform)h
+-1(ation)h
+12(ab)h
+1(out)h
+13(the)h
+15(manner)h
+13(in)h
+13(whic)h
+-1(h)h
+14(the)h
+15(\014les)h
+14(di\013er)h
+14(is)h
+14(con)h
+-1(v)h
+-1(ey)h
+-1(ed.)h
+177 2735(The)s
+180(comma)h
+-1(nd)h
+12(w)h
+-1(as)h
+13(created)h
+16(as)h
+13(the)h
+14(main)h
+12(c)h
+-1(hec)h
+-1(king)h
+14(mec)h
+-1(hanism)h
+11(for)h
+13(regression)h
+15(testing.)h
+18(Ho)h
+-1(w-)h
+177 2785(ev)s
+-1(er,)h
+12(its)h
+10(binary)h
+10(output)h
+11(w)h
+-1(as)h
+10(so)h
+1(on)h
+10(found)h
+10(to)h
+11(b)h
+1(e)h
+11(un)h
+-1(w)h
+-1(ork)h
+-2(able)h
+9(and)h
+11(the)h
+11(more)h
+9(sophisticated)h
+109(comm)h
+-1(and)h
+177 2835(w)s
+-1(as)h
+14(added)h
+14(so)h
+14(that)h
+14(the)h
+15(actual)h
+13(di\013erences)h
+16(b)h
+1(et)h
+-1(w)h
+-1(een)h
+16(the)h
+14(\014les)h
+14(could)h
+14(b)h
+1(e)h
+14(examined.)h
+1042 2940(93)s
+94 @eop
+95 @bop0
+cmbx10.300 sf
+[<003FE3F801F03F1C03C03E3E07C07C3E0F807C3E0F807C1C0F807C000F807C000F807C
+000F807C000F807C00FFFFFFC0FFFFFFC00F807C000F807C000F807C000F807C000F807C
+000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C
+007FE1FFC07FE1FFC0>
+32 29 0 28 28] 11 dc
+95 @bop1
+cmti10.300 sf
+1055 1185(app)s
+-2(ends)h
+563 2463(app)s
+-2(ends)h
+cmbx10.300 sf
+177 42(3.15.7.4)s
+48(De\014ne)h
+177 1086(3.15.7.5)s
+48(Di\013)h
+cmtt10.300 sf
+260 141(define)s
+1240(define)h
+177 401(Syntax)s
+43(:)h
+21(define)h
+21(=)h
+21("define")h
+20(s)h
+22(letter)h
+21(s)h
+21("""")h
+21(text)h
+21("""")h
+177 450(Examples:)s
+20(define)h
+21(3)h
+21("/usr/usrs/thi)h
+-1(suser)h
+-1(/wor)h
+-1(kdir/)h
+-1(fwdir)h
+-1(/test)h
+-1(dir")h
+395 500(define)s
+21(M)h
+21("/user/local/r)h
+-1(ubbis)h
+-1(h/bi)h
+-1(n/fw")h
+395 550(define)s
+21(Q)h
+21("You)h
+21(don't)h
+21(need)h
+21(to)h
+21(double")h
+21(double)h
+20(quotes")h
+1613 660(define)s
+262 833(define)s
+264 1185(diff)s
+177 1395(Syntax)s
+43(:)h
+21(diff)h
+21(=)h
+22("diff")h
+20(s)h
+22(filename)h
+20(s)h
+22(filename)h
+20(s)h
+21(filename)h
+20(s)h
+22(["ABORT"])h
+177 1445(Examples:)s
+20(diff)h
+21(result.tex)h
+20(answer.tex)h
+20(diff.log)h
+395 1494(diff)s
+21($Otest23.out)h
+19($Atest23.out)h
+20($Ldiff.log)h
+19(ABORT)h
+269 1604(diff)s
+694 1727(diff)s
+1102 1777(diff)s
+281 2010(diff)s
+281 2222(ABORT)s
+374(diff)h
+281 2303(diff)s
+266 2463(diff)s
+261 2586(diff)s
+1447(compare)h
+264 2785(diff)s
+cmr10.300 sf
+177 141(The)s
+154(comm)h
+-1(and)h
+9(assigns)h
+12(a)h
+11(v)h
+-2(alue)h
+11(to)h
+11(a)h
+11(shell)h
+11(string)h
+11(substitution)h
+12(v)h
+-2(ariable.)h
+16(The)h
+154(comm)h
+-1(and)h
+177 191(tak)s
+-1(es)h
+15(t)h
+-1(w)h
+-1(o)h
+13(argumen)h
+-1(ts.)h
+18(The)h
+14(\014rst)h
+15(is)h
+14(the)h
+15(digit)h
+13(or)h
+14(letter)h
+15(of)h
+13(the)h
+15(v)h
+-2(ariable)h
+13(to)h
+13(b)h
+1(e)h
+15(de\014ned.)h
+20(The)h
+14(second)h
+15(is)h
+14(a)h
+177 241(double)s
+13(quote)h
+14(delimited)h
+12(string)h
+13(b)h
+1(eing)h
+13(the)h
+14(string)h
+14(v)h
+-2(alue)h
+12(to)h
+14(b)h
+1(e)h
+14(assigned)h
+13(to)h
+13(the)h
+14(v)h
+-2(ariable.)h
+17(If)h
+13(y)h
+-1(ou)h
+13(w)h
+-1(an)h
+-1(t)h
+13(to)h
+177 291(include)s
+14(a)h
+14(double)h
+13(quote)h
+15(c)h
+-1(haracter)h
+15(within)h
+13(the)h
+15(string,)h
+13(y)h
+-1(ou)h
+13(don't)h
+14(need)h
+15(to)h
+13(double)h
+14(it.)h
+177 660(The)s
+19(comma)h
+-1(nd)h
+17(in)h
+-1(terpreter)h
+21(expands)h
+19(the)h
+19(comm)h
+-1(and)h
+17(line)h
+18(b)h
+1(efore)h
+19(it)h
+19(executes)h
+20(the)h
+169(comm)h
+-1(and.)h
+177 710(This)s
+18(means)h
+17(that)h
+17(y)h
+-1(ou)h
+18(can)h
+17(de\014ne)h
+19(string)h
+18(substitution)h
+18(v)h
+-2(ariables)h
+17(in)h
+17(terms)h
+17(of)h
+18(eac)h
+-1(h)h
+18(other)h
+18(with)h
+17(static)h
+177 760(binding.)s
+177 833(The)s
+159(comm)h
+-1(and)h
+12(w)h
+-1(as)h
+13(in)h
+-1(tro)h
+1(duced)h
+15(to)h
+13(allo)h
+-1(w)h
+12(the)h
+15(parameterization)h
+12(of)h
+14(the)h
+14(directories)h
+15(in)h
+-1(v)h
+-1(olv)h
+-1(ed)h
+12(in)h
+177 882(regression)s
+15(testing.)h
+177 955(See)s
+15(Section)h
+14(3.15.4)h
+12(for)h
+14(more)h
+13(details.)h
+177 1185(The)s
+119(comma)h
+-1(nd)h
+14(reads)h
+17(in)h
+15(t)h
+-1(w)h
+-1(o)h
+15(text)h
+17(\014les)h
+16(and)h
+173(a)h
+16(rep)h
+1(ort)h
+16(to)h
+16(a)h
+16(log)h
+14(\014le)h
+16(con)h
+-1(taining)h
+15(a)h
+15(list)h
+15(of)h
+177 1235(the)s
+16(di\013erences)h
+17(b)h
+1(et)h
+-1(w)h
+-1(een)h
+16(the)h
+15(t)h
+-1(w)h
+-1(o)h
+15(input)h
+14(\014les.)h
+21(If)h
+15(the)h
+15(log)h
+14(\014le)h
+15(do)h
+1(es)h
+15(not)h
+15(already)h
+15(exist,)h
+15(an)h
+14(empt)h
+-1(y)h
+14(one)h
+15(is)h
+177 1285(created)s
+16(\014rst.)h
+177 1604(The)s
+129(comm)h
+-1(and)h
+19(p)h
+1(erforms)h
+20(a)h
+20(full)h
+19(line-based)h
+21(di\013erences)h
+23(op)h
+1(eration.)h
+37(It)h
+21(will)h
+19(iden)h
+-1(tify)h
+20(di\013eren)h
+-1(t)h
+177 1654(sections)s
+15(in)h
+14(a)h
+13(\014le,)h
+14(ev)h
+-1(en)h
+14(if)h
+13(they)h
+15(are)h
+14(of)h
+13(di\013ering)h
+14(length.)h
+177 1727(The)s
+19(impl)h
+-1(em)h
+-1(en)h
+-1(tation)h
+16(of)h
+18(the)h
+123(command)h
+16(is)h
+18(quite)h
+18(complicated.)h
+29(T)h
+-3(o)h
+17(b)h
+1(e)h
+19(sure)h
+19(that)h
+18(it)h
+18(is)h
+18(at)h
+18(least)h
+177 1777(getting)s
+16(its)h
+17(same/di\013eren)h
+-1(t)h
+16(pro)h
+1(clamation)h
+14(righ)h
+-1(t,)h
+16(the)h
+121(comm)h
+-1(and)h
+14(p)h
+1(erforms)h
+16(a)h
+16(binary)h
+16(comparison)h
+177 1827(as)s
+14(an)h
+14(extra)h
+14(c)h
+-1(hec)h
+-1(k.)h
+177 1900(The)s
+14(follo)h
+-1(wing)h
+12(p)h
+1(oin)h
+-1(ts)h
+14(describ)h
+1(e)h
+15(the)h
+15(rules)h
+14(for)h
+14(determining)h
+12(the)h
+15(result)h
+15(status.)h
+228 2010(1.)s
+121(ab)h
+1(orts)h
+14(with)h
+14(a)h
+13(sev)h
+-1(ere)h
+16(error)h
+15(if)h
+13(the)h
+14(log)h
+13(\014le)h
+14(cannot)h
+14(b)h
+1(e)h
+15(op)h
+1(ened)h
+15(or)h
+13(created)h
+16(for)h
+13(app)h
+1(ending.)h
+228 2091(2.)s
+20(An)h
+14(ordinary)h
+13(error)h
+15(is)h
+14(generated)h
+15(if)h
+13(either)h
+15(or)h
+14(b)h
+1(oth)h
+14(of)h
+13(the)h
+15(input)h
+13(\014les)h
+15(cannot)h
+14(b)h
+1(e)h
+14(op)h
+1(ened.)h
+228 2172(3.)s
+20(If,)h
+15(at)h
+16(the)h
+16(end)h
+17(of)h
+15(the)h
+16(run,)h
+16(the)h
+17(t)h
+-1(w)h
+-1(o)h
+15(input)h
+15(\014les)h
+17(ha)h
+-1(v)h
+-1(e)h
+15(not)h
+16(b)h
+1(een)h
+17(pro)h
+-1(v)h
+-1(en)h
+16(to)h
+15(b)h
+1(e)h
+17(iden)h
+-1(tical,)h
+15(and)h
+15(the)h
+404 2222(k)s
+-1(eyw)h
+-1(ord)h
+14(is)h
+13(presen)h
+-1(t,)h
+116(returns)h
+16(sev)h
+-1(ere)h
+15(status.)h
+228 2303(4.)s
+118(returns)h
+13(success)h
+14(status)h
+12(if)h
+11(none)h
+11(of)h
+11(the)h
+12(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+11(conditions)h
+11(\(or)h
+12(simil)h
+-1(ar)h
+9(conditions\))h
+12(o)h
+1(ccur,)h
+12(ev)h
+-1(en)h
+281 2353(if)s
+13(the)h
+14(t)h
+-1(w)h
+-1(o)h
+14(\014les)h
+14(are)h
+14(di\013eren)h
+-1(t.)h
+177 2463(The)s
+123(comm)h
+-1(and)h
+175(its)h
+18(di\013erences)h
+19(rep)h
+1(ort)h
+19(rather)h
+18(than)h
+18(merely)h
+16(writing)h
+17(it.)h
+28(This)h
+18(allo)h
+-1(ws)h
+16(a)h
+177 2513(regression)s
+15(test)h
+15(script)h
+15(to)h
+14(p)h
+1(erform)h
+13(a)h
+13(series)h
+16(of)h
+13(regression)h
+15(tests)h
+15(and)h
+14(pro)h
+1(duce)h
+15(a)h
+14(rep)h
+1(ort)h
+15(for)h
+13(the)h
+15(user.)h
+177 2586(The)s
+112(comma)h
+-1(nd)h
+11(w)h
+-1(as)h
+12(added)h
+13(to)h
+12(the)h
+13(shell)h
+12(after)h
+12(it)h
+12(had)h
+12(b)h
+1(ecome)h
+12(apparen)h
+-1(t)h
+13(that)h
+12(the)h
+13(simpler)h
+177 2635(comma)s
+-1(nd)h
+13(w)h
+-1(as)h
+14(not)h
+15(yielding)h
+13(enough)h
+15(informati)h
+-1(on.)h
+18(Whereas)h
+16(early)h
+14(on,)h
+14(regression)h
+16(testing)h
+15(w)h
+-1(as)h
+15(treated)h
+177 2685(mainly)s
+8(as)h
+10(a)h
+9(to)h
+1(ol)h
+10(to)h
+10(ensure)h
+11(that)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+10(w)h
+-1(as)h
+10(b)h
+1(eing)h
+10(p)h
+1(orted)h
+10(to)h
+10(other)h
+11(mac)h
+-1(hines)h
+9(correctly)h
+-3(,)h
+11(it)h
+10(b)h
+1(egan)h
+10(to)h
+177 2735(place)s
+13(an)h
+12(increasing)h
+13(role)h
+13(during)h
+12(dev)h
+-1(elopmen)h
+-1(t)h
+12(in)h
+12(iden)h
+-1(tifying)h
+11(the)h
+13(e\013ects)h
+15(of)h
+12(c)h
+-1(hanges)h
+13(made)h
+12(to)h
+12(the)h
+13(co)h
+1(de.)h
+177 2785(The)s
+118(comma)h
+-1(nd)h
+14(supp)h
+1(orts)h
+16(this)h
+15(application)h
+14(of)h
+15(regression)h
+16(testing)h
+16(b)h
+-1(y)h
+15(pinp)h
+1(oin)h
+-1(ting)h
+14(the)h
+16(di\013erences)h
+177 2835(b)s
+1(et)h
+-1(w)h
+-1(een)h
+15(nearly-iden)h
+-1(tical)h
+13(text)h
+15(\014les.)h
+1042 2940(94)s
+95 @eop
+96 @bop0
+cmr7.300 sf
+[<60607FC07F8044004000400040004F0070C040E0006000700070E070E070E06040E021
+C01F00>
+16 19 -2 18 17] 53 dc
+cmr6.300 sf
+[<20803F002C002000200020002F0030802040006000600060C06080C061801F00>
+16 16 -1 15 15] 53 dc
+cmtt8.300 sf
+[<07801FE038F07078F038E038FFF8FFF8E000F000703838781FF007C0>
+16 14 -2 13 18] 101 dc
+[<FCF000FFF8001F1C001E1C001C1C001C1C001C1C001C1C001C1C001C1C001C1C001C1C
+00FF9F80FF9F80>
+24 14 0 13 18] 110 dc
+[<0F803FE038E07070E038E038E038E038E038F078707038E03FE00F80>
+16 14 -2 13 18] 111 dc
+96 @bop1
+cmr7.300 sf
+787 2723(5)s
+cmr6.300 sf
+223 2823(5)s
+cmtt8.300 sf
+577 2835(eneo)s
+cmti10.300 sf
+464 2639(establish)s
+17(the)h
+16(non-existenc)h
+-2(e)h
+18(of)h
+cmr8.300 sf
+241 2835(As)s
+12(far)h
+11(as)h
+11(I)h
+12(kno)h
+-1(w,)h
+10(the)h
+94(comma)h
+-1(nd)h
+9(is)h
+12(original)h
+-1(.)h
+cmbx10.300 sf
+177 42(3.15.7.6)s
+48(Di\013summary)h
+177 918(3.15.7.7)s
+48(Di\013zero)h
+177 1695(3.15.7.8)s
+48(Eneo)h
+509 2439(E)s
+227(N)h
+60(E)h
+160(O)h
+cmtt10.300 sf
+264 160(diffsummary)s
+1093 259(diffzero)s
+177 454(Syntax)s
+43(:)h
+21(diffsummary)h
+20(=)h
+21("diffsummary")h
+177 504(Examples:)s
+20(diffsummary)h
+263 649(diffsummary)s
+634 749(diff)s
+261 1036(diffzero)s
+1094(diff)h
+90(diffsummary)h
+177 1231(Syntax)s
+43(:)h
+21(diffzero)h
+20(=)h
+22("diffzero")h
+177 1281(Examples:)s
+20(diffzero)h
+268 1426(diffzero)s
+263 1814(eneo)s
+605 1913(eneo)s
+177 2058(Syntax)s
+43(:)h
+21(eneo)h
+21(=)h
+22("eneo")h
+20(s)h
+22(filename)h
+177 2108(Examples:)s
+20(eneo)h
+21(result.out)h
+267 2253(eneo)s
+cmr10.300 sf
+177 160(The)s
+271(command)h
+13(writes)h
+16(a)h
+16(short)h
+16(rep)h
+1(ort)h
+16(to)h
+16(the)h
+16(console)h
+16(giving)h
+14(the)h
+16(n)h
+-1(um)h
+-1(b)h
+1(er)h
+15(of)h
+15(di\013erence)h
+177 209(op)s
+1(erations)h
+20(that)h
+19(ha)h
+-1(v)h
+-1(e)h
+20(tak)h
+-1(en)h
+19(place)h
+20(and)h
+19(ho)h
+-1(w)h
+19(man)h
+-1(y)h
+18(of)h
+19(the)h
+20(pairs)h
+19(of)h
+19(\014les)h
+20(compared)h
+19(w)h
+-1(ere)h
+20(iden)h
+-1(tical.)h
+177 259(Coun)s
+-1(ting)h
+14(starts)h
+15(at)h
+14(the)h
+15(most)h
+13(recen)h
+-1(t)h
+16(execution)h
+15(of)h
+14(a)h
+202(command,)h
+12(or)h
+14(if)h
+13(there)h
+16(has)h
+15(b)h
+1(een)h
+15(none,)h
+177 309(when)s
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(started)h
+15(up.)h
+177 649(The)s
+269(comm)h
+-1(and)h
+13(w)h
+-1(as)h
+14(added)h
+15(so)h
+14(as)h
+14(to)h
+15(allo)h
+-1(w)h
+12(regression)h
+16(testing)h
+15(scripts)h
+15(to)h
+14(displa)h
+-1(y)h
+14(a)h
+14(sum-)h
+177 699(mary)s
+13(of)h
+15(the)h
+15(results)h
+16(of)h
+14(the)h
+16(test.)h
+22(If)h
+14(the)h
+16(summ)h
+-1(ary)h
+13(indicates)h
+15(that)h
+15(no)h
+15(pair)h
+14(of)h
+14(\014les)h
+15(di\013ered,)h
+16(then)h
+15(there)h
+177 749(is)s
+14(no)h
+14(need)h
+14(to)h
+14(lo)h
+1(ok)h
+13(in)h
+14(the)h
+115(log)h
+13(\014le.)h
+177 1036(The)s
+199(comma)h
+-1(nd)h
+11(zeros)h
+13(the)h
+13(di\013eren)h
+-1(t)h
+13(summa)h
+-1(ry)h
+11(coun)h
+-1(ters)h
+13(used)h
+13(b)h
+-1(y)h
+12(the)h
+112(and)h
+177 1086(comma)s
+-1(nds.)h
+177 1426(The)s
+214(command)h
+17(w)h
+-1(as)h
+20(added)h
+20(so)h
+20(as)h
+20(to)h
+19(allo)h
+-1(w)h
+18(regression)h
+21(testing)h
+20(shellscripts)h
+21(to)h
+20(zero)h
+20(their)h
+177 1476(di\013erences)s
+16(coun)h
+-1(ters)h
+14(at)h
+13(the)h
+14(start)h
+14(of)h
+12(a)h
+13(run.)h
+18(This)h
+13(allo)h
+-1(ws)h
+12(testers)h
+16(to)h
+13(in)h
+-1(v)h
+-1(ok)h
+-1(e)h
+12(the)h
+14(same)h
+12(regression)h
+14(testing)h
+177 1526(script)s
+15(t)h
+-1(wice)h
+14(in)h
+13(one)h
+15(in)h
+-1(teractiv)h
+-1(e)h
+14(session)h
+15(without)h
+13(receiving)h
+14(an)h
+14(in\015ated)h
+14(di\013erences)h
+16(summa)h
+-1(ry)h
+-3(.)h
+177 1814(The)s
+116(command)h
+12(tak)h
+-1(es)h
+15(one)h
+14(\014lename)h
+14(argumen)h
+-1(t.)h
+18(If)h
+14(the)h
+15(\014le)h
+14(do)h
+1(es)h
+15(not)h
+15(exist,)h
+14(no)h
+14(action)h
+14(is)h
+15(tak)h
+-1(en.)h
+19(If)h
+177 1863(the)s
+14(\014le)h
+13(do)h
+1(es)h
+14(exist,)h
+13(it)h
+13(is)h
+12(deleted.)h
+19(In)h
+13(b)h
+1(oth)h
+14(cases)h
+14(success)h
+16(status)h
+13(is)h
+13(returned.)h
+20(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+13(if)h
+12(the)h
+14(\014le)h
+13(exists)h
+177 1913(and)s
+14(cannot)h
+14(b)h
+1(e)h
+14(deleted,)h
+116(returns)h
+15(sev)h
+-1(ere)h
+16(status.)h
+177 2253(The)s
+124(comm)h
+-1(and)h
+16(w)h
+-1(as)h
+18(added)h
+19(so)h
+18(as)h
+18(to)h
+18(allo)h
+-1(w)h
+17(regression)h
+19(testing)h
+19(scripts)h
+19(to)h
+18(ensure)h
+20(that)h
+18(existing)h
+177 2303(output)s
+19(\014les)h
+19(w)h
+-1(ere)h
+20(not)h
+19(presen)h
+-1(t)h
+20(b)h
+1(efore)h
+20(pro)h
+1(ceeding)h
+20(with)h
+18(a)h
+19(test)h
+20(run.)h
+33(If)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+18(w)h
+-1(ere)h
+20(to)h
+19(fail)h
+17(to)h
+177 2353(generate)s
+15(an)h
+14(output)h
+14(\014le,)h
+13(it)h
+14(w)h
+-1(ould)h
+13(b)h
+1(e)h
+15(extremely)h
+13(undesirable)h
+14(for)h
+14(the)h
+15(old)h
+13(v)h
+-1(ersion)h
+14(to)h
+13(b)h
+1(e)h
+15(used.)h
+177 2439(ENEO)s
+16(stands)h
+17(for)h
+46(stablish)h
+15(the)h
+53(on)h
+47(xistence)h
+53(f.)h
+22(Most)h
+16(op)h
+1(erating)h
+15(systems)h
+16(pro)h
+-1(vide)h
+15(a)h
+16(comm)h
+-1(and)h
+177 2489(to)s
+15(delete)h
+16(\014les.)h
+23(T)h
+-1(ypically)h
+13(these)h
+17(comm)h
+-1(ands)h
+14(are)h
+15(v)h
+-1(erbs)h
+16(suc)h
+-1(h)h
+16(as)h
+15(\\delete",)h
+16(\\remo)h
+-1(v)h
+-1(e",)h
+14(and)h
+15(\\kill".)h
+19(As)h
+16(a)h
+177 2539(consequence)s
+1(,)h
+16(the)h
+16(designers)h
+16(of)h
+14(delete)h
+16(commands)h
+13(usually)h
+14(consider)h
+16(the)h
+15(command)h
+13(to)h
+14(ha)h
+-1(v)h
+-1(e)h
+15(failed)h
+14(if)h
+14(it)h
+177 2589(fails)s
+12(to)h
+13(\014nd)h
+13(the)h
+13(\014le)h
+13(to)h
+13(b)h
+1(e)h
+13(deleted.)h
+19(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+13(in)h
+13(m)h
+-1(y)h
+11(exp)h
+1(erience,)h
+15(the)h
+13(most)h
+12(comm)h
+-1(on)h
+11(use)h
+14(for)h
+12(the)h
+14(delete)h
+177 2639(comma)s
+-1(nd)h
+14(is)h
+16(to)h
+564(one)h
+16(or)h
+16(more)h
+14(\014les.)h
+24(T)h
+-1(ypically)h
+-3(,)h
+14(a)h
+16(script)h
+16(is)h
+16(starting)h
+16(up)h
+177 2688(and)s
+15(needs)h
+17(to)h
+15(clear)h
+15(the)h
+16(air)h
+15(b)h
+1(efore)h
+16(getting)h
+15(started.)h
+23(If)h
+15(the)h
+16(\014les)h
+15(are)h
+16(there,)h
+16(they)h
+16(should)h
+15(b)h
+1(e)h
+16(deleted;)h
+17(if)h
+177 2738(they)s
+15(are)h
+14(not,)h
+13(then)h
+15(that's)h
+14(OK)h
+14(to)h
+1(o.)h
+1042 2940(95)s
+709 2 177 2796 r
+96 @eop
+97 @bop0
+cmr6.300 sf
+[<0780184030C060C06000C000CF00F080E040C060C060C060406060C030801F00>
+16 16 -1 15 15] 54 dc
+cmr7.300 sf
+[<07C00C201070207060006000C000CF00D0C0E060C020C030C030C03040306020206010
+C00F00>
+16 19 -2 18 17] 54 dc
+cmtt8.300 sf
+[<C000E000E00070007000380038001C001C001C000E000E00070007000380038001C001
+C001C000E000E000700070003800380018>
+16 26 -2 22 18] 92 dc
+97 @bop1
+cmr6.300 sf
+223 2783(6)s
+cmr7.300 sf
+1479 2662(6)s
+cmtt8.300 sf
+1714 2795(\\n)s
+cmbx10.300 sf
+177 42(3.15.7.9)s
+48(Execute)h
+177 1421(3.15.7.10)s
+48(Exists)h
+177 1987(3.15.7.11)s
+48(Fixeols)h
+cmr8.300 sf
+241 2795(Note:)s
+18(A)h
+13(nativ)h
+-1(e)h
+12(EOL)h
+13(can)h
+13(b)h
+1(e)h
+12(inserted)h
+11(in)h
+-1(to)h
+12(a)h
+13(text)h
+12(\014le)h
+12(in)h
+13(a)h
+13(p)h
+1(ortable)h
+11(manne)h
+-1(r)h
+11(simply)h
+12(b)h
+-1(y)h
+12(writing)h
+12(\\)h
+36(")h
+12(to)h
+13(the)h
+12(text)h
+177 2835(output)s
+10(stream.)h
+cmtt10.300 sf
+268 138(execute)s
+588 237($1)s
+29($2)h
+108($9)h
+701($1)h
+71($9)h
+1167 287("")s
+29($0)h
+569 387(.fws)s
+177 485(Syntax)s
+43(:)h
+21(execute)h
+20(=)h
+22("execute")h
+20(s)h
+22(filename)h
+20({argument_s)h
+-1(tring)h
+-1(})h
+177 534(Examples:)s
+20(execute)h
+20(megatest.fws)h
+20(/usr/users/)h
+-1(ross/)h
+-1(fwtes)h
+-1(t)h
+20(!)h
+395 584(execute)s
+20(sloth)h
+177 780($0)s
+22(=)h
+21("")h
+177 829($1)s
+22(=)h
+21("/usr/users/r)h
+-1(oss/f)h
+-1(wtest)h
+-1(")h
+177 879($2)s
+22(=)h
+21("!")h
+177 929($3)s
+22(=)h
+21("")h
+177 979(...)s
+177 1029($9)s
+22(=)h
+21("")h
+263 1246(execute)s
+267 1517(exists)s
+177 1665(Syntax)s
+21(:)h
+21(exists)h
+21(=)h
+21("exists")h
+21(s)h
+21(filename)h
+177 1714(Example:)s
+20(exists)h
+21(test6.fw)h
+261 2083(fixeols)s
+177 2331(Syntax)s
+43(:)h
+21(fixeols)h
+20(=)h
+22("fixeols")h
+20(s)h
+22(filename)h
+20([s)h
+21(filename])h
+177 2380(Examples:)s
+20(fixeols)h
+20(imported.hak)h
+20(result.kln)h
+395 2430(fixeols)s
+20(sloth.dat)h
+260 2528(fixeols)s
+319 2727(X)s
+106(ABCD)h
+cmr10.300 sf
+177 138(The)s
+191(comma)h
+-1(nd)h
+17(causes)h
+21(a)h
+19(sp)h
+1(eci\014ed)h
+20(text)h
+20(\014le)h
+19(to)h
+19(b)h
+1(e)h
+19(executed)h
+21(as)h
+19(a)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+19(shellscript.)h
+177 188(The)s
+17(\014rst)h
+18(argumen)h
+-1(t)h
+15(is)h
+17(the)h
+17(name)h
+16(of)h
+16(the)h
+17(script)h
+17(\014le.)h
+27(The)h
+17(remaining)h
+15(argumen)h
+-1(ts)h
+16(are)h
+17(assigned)h
+17(to)h
+16(the)h
+177 237(substitution)s
+18(v)h
+-2(ariables)h
+61(,)h
+61(,)h
+17(.)h
+7(.)h
+7(.)h
+-1(,)h
+62(.)h
+28(Substitution)h
+17(v)h
+-2(ariables)h
+17(in)h
+17(the)h
+18(range)h
+79(to)h
+78(that)h
+18(do)h
+17(not)h
+177 287(corresp)s
+1(ond)h
+14(to)h
+12(an)h
+12(argumen)h
+-1(t)h
+11(are)h
+13(set)h
+13(to)h
+12(the)h
+13(empt)h
+-1(y)h
+11(string)h
+56(.)h
+73(is)h
+12(set)h
+13(to)h
+12(the)h
+13(empt)h
+-1(y)h
+11(string)h
+12(regardless.)h
+177 337(The)s
+16(execute)h
+17(comm)h
+-1(and)h
+13(can)h
+16(b)h
+1(e)h
+15(used)h
+16(recursiv)h
+-1(ely)h
+-3(,)h
+16(allo)h
+-1(wing)h
+13(shell)h
+15(scripts)h
+16(to)h
+15(in)h
+-1(v)h
+-1(ok)h
+-1(e)h
+14(eac)h
+-1(h)h
+16(other.)h
+23(A)h
+15(\014le)h
+177 387(extension)s
+15(default)h
+13(of)h
+14(\\)h
+88(")h
+12(\(F)h
+-3(unnelW)h
+-3(eb)h
+14(Script\))h
+14(applies)h
+14(to)h
+13(script)h
+15(\014les.)h
+177 682(The)s
+14(\014rst)h
+15(example)h
+13(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+13(will)h
+13(result)h
+14(in)h
+14(the)h
+14(follo)h
+-1(wing)h
+12(substitution)h
+14(v)h
+-2(ariable)h
+12(assignmen)h
+-1(ts.)h
+177 1126(It)s
+16(should)h
+15(b)h
+1(e)h
+15(stresse)h
+1(d)h
+17(that)h
+15(there)h
+17(are)h
+16(no)h
+15(lo)h
+1(cal)h
+14(v)h
+-2(ariables)h
+15(in)h
+15(the)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(comma)h
+-1(nd)h
+14(language;)h
+14(the)h
+177 1176(v)s
+-2(ariables)h
+13(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+14(are)h
+14(globally)h
+12(mo)h
+1(di\014ed.)h
+177 1246(The)s
+183(comm)h
+-1(and)h
+13(w)h
+-1(as)h
+14(added)h
+15(to)h
+15(allo)h
+-1(w)h
+13(the)h
+15(creation)h
+16(of)h
+14(sub-scripts)h
+16(to)h
+15(test)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(in)h
+14(par-)h
+177 1296(ticular)s
+14(w)h
+-1(a)h
+-1(ys.)h
+177 1517(The)s
+167(command)h
+16(p)h
+1(erforms)h
+17(no)h
+18(action)h
+18(except)h
+20(to)h
+17(return)h
+20(a)h
+18(status.)h
+31(If)h
+18(the)h
+18(\014le)h
+19(sp)h
+1(eci\014ed)h
+19(in)h
+18(its)h
+177 1567(argumen)s
+-1(t)h
+13(exists)h
+15(it)h
+13(returns)h
+15(succes)h
+1(s)h
+16(status,)h
+14(otherwise)h
+15(it)h
+13(returns)h
+16(sev)h
+-1(ere)h
+15(status.)h
+177 1812(This)s
+10(comm)h
+-1(and)h
+8(is)h
+10(useful)h
+10(in)h
+10(regression)h
+11(testing)h
+10(for)h
+10(ensuring)h
+10(that)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+10(has)h
+10(pro)h
+1(duced)h
+11(a)h
+10(particular)h
+177 1862(output)s
+14(\014le.)h
+177 2083(The)s
+179(comm)h
+-1(and)h
+11(tak)h
+-1(es)h
+13(t)h
+-1(w)h
+-1(o)h
+12(\014lename)h
+12(argumen)h
+-1(ts:)h
+16(an)h
+13(input)h
+12(\014le)h
+13(and)h
+13(an)h
+12(output)h
+13(\014le.)h
+18(It)h
+13(reads)h
+13(in)h
+177 2133(the)s
+12(input)h
+11(\014le)h
+11(and)h
+11(writes)h
+12(it)h
+10(to)h
+11(the)h
+12(output)h
+11(\014le)h
+11(c)h
+-1(hanging)h
+11(all)h
+9(the)h
+12(end)h
+12(of)h
+10(line)h
+11(con)h
+-1(trol)h
+11(c)h
+-1(haracter)h
+12(sequences)h
+177 2183(to)s
+16(the)h
+16(lo)h
+1(cal)h
+15(format.)h
+22(It)h
+15(can)h
+16(also)h
+15(tak)h
+-1(e)h
+16(one)h
+16(\014lename)h
+15(argumen)h
+-1(t,)h
+14(in)h
+15(whic)h
+-1(h)h
+16(case)h
+17(it)h
+15(replaces)h
+17(the)h
+16(target)h
+177 2233(\014le)s
+14(with)h
+14(its)h
+13(transformation.)h
+177 2528(The)s
+176(comm)h
+-1(and)h
+9(w)h
+-1(orks)h
+12(b)h
+-1(y)h
+11(parsing)h
+11(the)h
+12(input)h
+11(\014le)h
+11(in)h
+-1(to)h
+11(alternating)h
+10(runs)h
+12(of)h
+11(prin)h
+-1(table)h
+11(c)h
+-1(haracters)h
+177 2578(\(ASCI)s
+1(I)h
+13(20)h
+12(to)h
+12(ASCI)h
+1(I)h
+13(126\))h
+11(and)h
+13(runs)h
+13(of)h
+11(non-prin)h
+-1(table)h
+12(c)h
+-1(haracters)h
+14(\(all)h
+12(the)h
+13(others\).)h
+18(It)h
+13(then)h
+13(parses)h
+13(eac)h
+-1(h)h
+177 2628(run)s
+13(of)h
+12(non-prin)h
+-1(table)h
+11(c)h
+-1(haracters)h
+14(from)h
+11(left)h
+12(to)h
+12(righ)h
+-1(t)h
+12(in)h
+-1(to)h
+11(subruns)h
+14(of)h
+12(non-prin)h
+-1(tables)h
+12(not)h
+12(con)h
+-1(taining)h
+11(the)h
+177 2677(same)s
+14(c)h
+-1(haracter)h
+16(t)h
+-1(wice.)h
+22(It)h
+15(then)h
+15(replaces)h
+16(eac)h
+-1(h)h
+16(subrun)h
+16(with)h
+14(a)h
+15(nativ)h
+-1(e)h
+14(EOL.)h
+34(F)h
+-3(or)h
+14(example,)h
+13(if)h
+15(a)h
+14(nativ)h
+-1(e)h
+177 2727(EOL)s
+14(is)h
+36(,)h
+13(and)h
+115(are)h
+14(non-prin)h
+-1(table)h
+14(c)h
+-1(haracters,)h
+15(and)h
+14(the)h
+14(\014le)h
+14(to)h
+14(b)h
+1(e)h
+14(con)h
+-1(v)h
+-1(erted)h
+15(is)h
+1042 2940(96)s
+709 2 177 2756 r
+97 @eop
+98 @bop0
+98 @bop1
+cmsy10.300 sf
+239 1637(\017)s
+239 1732(\017)s
+239 1827(\017)s
+239 1922(\017)s
+239 2017(\017)s
+239 2112(\017)s
+cmbx10.300 sf
+177 985(3.15.7.12)s
+48(Fw)h
+177 2263(3.15.7.13)s
+48(Help)h
+cmtt10.300 sf
+177 42(thisABisABCDa)s
+-1(nABAB)h
+-1(examp)h
+-1(leABC)h
+-1(CCof)h
+19(the)h
+22(conversion)h
+-1(.)h
+272 173(fixeols)s
+177 304(thisXisXanXXe)s
+-1(xampl)h
+-1(eXXXo)h
+-1(f)h
+20(the)h
+21(conversion.)h
+265 435(fixeols)s
+1413 684(fixeols)s
+1235 783(fixeols)s
+260 1095(fw)s
+177 1276(Syntax)s
+43(:)h
+21(fw)h
+21(=)h
+22("fw")h
+21(s)h
+22(ordinary_fu)h
+-1(nnelw)h
+-1(eb_c)h
+-1(omman)h
+-1(d_lin)h
+-1(e)h
+177 1325(Examples:)s
+20(fw)h
+21(sloth)h
+21(+t)h
+22(+d)h
+395 1375(fw)s
+21(-l)h
+22(walrus)h
+808 1506(fw)s
+366 1732(F)s
+366 1827(K)s
+25(H)h
+106(X)h
+366 1922(J)s
+762 2017(fw)s
+264 2373(help)s
+795 2423(+H)s
+177 2554(Syntax)s
+43(:)h
+21(help)h
+21(=)h
+22("help")h
+20([s)h
+22(help_messag)h
+-1(e_na)h
+-1(me])h
+177 2604(Examples:)s
+20(help)h
+395 2654(help)s
+21(commands)h
+cmr10.300 sf
+177 173(then)s
+181(w)h
+-1(ould)h
+13(pro)h
+1(duce)h
+177 435(The)s
+186(command)h
+14(w)h
+-1(as)h
+17(devised)h
+17(to)h
+17(solv)h
+-1(e)h
+16(the)h
+18(problem)h
+15(created)h
+18(sometim)h
+-1(es)h
+16(when)h
+17(text)h
+17(\014les)h
+17(are)h
+177 485(mo)s
+-1(v)h
+-1(ed)h
+13(from)h
+12(one)h
+14(mac)h
+-1(hine)h
+13(to)h
+14(another)h
+15(\(e.g.)h
+13(with)h
+14(the)h
+15(k)h
+-1(ermit)h
+13(program\))h
+12(using)h
+14(a)h
+14(binary)h
+14(transfer)h
+15(mo)h
+1(de)h
+177 534(rather)s
+18(than)h
+17(a)h
+17(text)h
+18(transfer)h
+18(mo)h
+1(de.)h
+27(If)h
+17(suc)h
+-1(h)h
+18(a)h
+17(transfer)h
+18(is)h
+17(made,)h
+16(and)h
+17(the)h
+18(text)h
+18(\014le)h
+17(line)h
+17(termination)h
+177 584(con)s
+-1(v)h
+-1(en)h
+-1(tions)h
+16(di\013er)h
+15(on)h
+15(the)h
+16(t)h
+-1(w)h
+-1(o)h
+15(mac)h
+-1(hines,)h
+14(one)h
+16(can)h
+15(wind)h
+15(up)h
+16(with)h
+15(a)h
+15(set)h
+16(of)h
+15(text)h
+16(\014les)h
+15(with)h
+15(improp)h
+1(erly)h
+177 634(terminated)s
+10(lines.)h
+16(This)h
+10(can)h
+10(cause)h
+12(problems)h
+9(on)h
+10(a)h
+9(n)h
+-1(um)h
+-1(b)h
+1(er)h
+10(of)h
+9(fron)h
+-1(ts,)h
+10(but)h
+11(in)h
+9(particular)h
+10(a\013ects)h
+12(regression)h
+177 684(testing)s
+13(whic)h
+-1(h)h
+12(relies)h
+13(hea)h
+-1(vily)h
+11(on)h
+12(exact)h
+13(comparisons)h
+11(b)h
+1(et)h
+-1(w)h
+-1(een)h
+14(\014les.)h
+18(The)h
+177(comma)h
+-1(nd)h
+11(pro)h
+-1(vides)h
+12(a)h
+177 734(solution)s
+12(to)h
+13(this)h
+13(problem)h
+12(b)h
+-1(y)h
+13(pro)h
+-1(viding)h
+12(a)h
+13(p)h
+1(ortable)h
+13(w)h
+-1(a)h
+-1(y)h
+12(to)h
+13(\\purify")h
+12(text)h
+14(\014les)h
+13(whose)h
+14(end)h
+14(of)h
+12(lines)h
+13(ha)h
+-1(v)h
+-1(e)h
+177 783(b)s
+1(ecome)h
+14(incorrect.)h
+20(The)h
+14(regression)h
+16(testing)h
+14(scripts)h
+15(all)h
+13(apply)h
+180(to)h
+14(their)h
+14(input)h
+14(and)h
+14(output)h
+14(\014les)h
+177 833(b)s
+1(efore)h
+15(eac)h
+-1(h)h
+14(test.)h
+177 1095(The)s
+68(comm)h
+-1(and)h
+10(allo)h
+-1(ws)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+12(prop)h
+1(er)h
+12(to)h
+12(b)h
+1(e)h
+13(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+11(from)h
+10(a)h
+11(shell)h
+12(script.)h
+18(The)h
+12(syn)h
+-1(tax)h
+12(is)h
+12(almo)h
+-1(st)h
+177 1145(iden)s
+-1(tical)h
+13(to)h
+14(the)h
+15(syn)h
+-1(tax)h
+13(with)h
+14(whic)h
+-1(h)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(is)h
+14(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(from)h
+12(the)h
+15(op)h
+1(erating)h
+13(system.)h
+177 1506(Some)s
+13(imp)h
+1(ortan)h
+-1(t)h
+12(p)h
+1(oin)h
+-1(ts)h
+14(ab)h
+1(out)h
+14(this)h
+71(comm)h
+-1(and)h
+12(are:)h
+281 1637(Options)s
+14(are)h
+14(inherited)h
+15(from)h
+12(the)h
+14(default)h
+14(shell)h
+14(options.)h
+281 1732(The)s
+50(\(input)h
+14(\014le)h
+14(option\))h
+13(m)h
+-1(ust)h
+13(b)h
+1(e)h
+14(turned)h
+15(on.)h
+281 1827(The)s
+36(,)h
+35(,)h
+14(and)h
+49(options)h
+13(m)h
+-1(ust)h
+13(b)h
+1(e)h
+15(turned)h
+15(o\013.)h
+281 1922(The)s
+50(option)h
+13(m)h
+-1(ust)h
+13(b)h
+1(e)h
+14(turned)h
+15(o\013.)h
+281 2017(The)s
+14(options)h
+14(sp)h
+1(eci\014ed)h
+15(in)h
+14(a)h
+71(comm)h
+-1(and)h
+12(do)h
+13(not)h
+14(a\013ect)h
+15(the)h
+15(default)h
+13(shell)h
+14(options.)h
+281 2112(This)s
+14(comm)h
+-1(and)h
+12(p)h
+1(erforms)h
+13(no)h
+14(action)h
+13(in)h
+14(the)h
+14(V)h
+-5(AX)h
+15(VMS)h
+14(v)h
+-1(ersion)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb.)h
+177 2373(The)s
+119(comm)h
+-1(and)h
+13(pro)h
+-1(vides)h
+16(online)h
+15(help)h
+15(from)h
+14(within)h
+14(the)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(shell.)h
+23(It)h
+15(pro)h
+-1(vides)h
+16(access)h
+17(to)h
+177 2423(all)s
+13(of)h
+13(the)h
+15(same)h
+13(messages)h
+14(that)h
+13(the)h
+72(command)h
+12(line)h
+13(option)h
+13(do)h
+1(es.)h
+177 2785(If)s
+14(no)h
+15(message)h
+14(name)h
+14(is)h
+14(giv)h
+-1(en,)h
+14(the)h
+15(default)h
+15(message)h
+14(is)h
+15(displa)h
+-1(y)h
+-1(ed.)h
+19(It)h
+15(con)h
+-1(tains)h
+15(a)h
+14(list)h
+14(of)h
+14(the)h
+15(other)h
+16(help)h
+177 2835(messages)s
+14(and)h
+14(their)h
+14(names.)h
+17(The)h
+15(actual)h
+13(messages)h
+14(themselv)h
+-1(es)h
+14(are)h
+14(not)h
+14(listed)h
+14(here.)h
+1042 2940(97)s
+98 @eop
+99 @bop0
+99 @bop1
+cmbx10.300 sf
+177 42(3.15.7.14)s
+48(Here)h
+177 737(3.15.7.15)s
+48(Quit)h
+177 1209(3.15.7.16)s
+48(Set)h
+177 2033(3.15.7.17)s
+48(Sho)h
+-1(w)h
+177 2505(3.15.7.18)s
+48(Skipto)h
+cmtt10.300 sf
+267 147(here)s
+662(skipto)h
+386 197(skipto)s
+1344(here)h
+177 371(Syntax)s
+21(:)h
+21(here)h
+21(=)h
+22("here")h
+177 421(Example:)s
+20(here)h
+262 545(skipto)s
+21(here)h
+262 843(quit)s
+177 1017(Syntax)s
+21(:)h
+21(quit)h
+21(=)h
+22("quit")h
+177 1067(Example:)s
+20(quit)h
+263 1315(set)s
+1085(set)h
+21(+t)h
+167(+t)h
+1638 1365(-t)s
+177 1489(Syntax)s
+43(:)h
+21(set)h
+21(=)h
+22("set")h
+21(s)h
+21(ordinary_funne)h
+-1(lweb)h
+-1(_comm)h
+-1(and_l)h
+-1(ine)h
+177 1539(Examples:)s
+20(set)h
+21(sloth)h
+21(+t)h
+21(+d)h
+395 1589(set)s
+21(-lwalrus)h
+616 1713(set)s
+745(fw)h
+424 1763(+F)s
+647(set)h
+262 2139(show)s
+390 2189(fw)s
+177 2313(Syntax)s
+21(:)h
+21(show)h
+21(=)h
+22("show")h
+177 2362(Example:)s
+20(show)h
+262 2611(skipto)s
+1279(here)h
+177 2785(Syntax)s
+43(:)h
+21(skipto)h
+21(=)h
+21("skipto")h
+177 2835(Examples:)s
+20(skipto)h
+cmr10.300 sf
+177 147(The)s
+124(comm)h
+-1(and)h
+16(acts)h
+18(as)h
+18(a)h
+18(target)h
+18(for)h
+18(the)h
+167(comm)h
+-1(and.)h
+28(When)h
+18(the)h
+19(shell)h
+18(in)h
+-1(terpreter)h
+19(en-)h
+177 197(coun)s
+-1(ters)h
+20(a)h
+168(comm)h
+-1(and,)h
+17(it)h
+18(ignores)h
+19(all)h
+17(the)h
+19(follo)h
+-1(wing)h
+16(comm)h
+-1(ands)h
+17(un)h
+-1(til)h
+18(it)h
+18(encoun)h
+-1(ters)h
+20(a)h
+177 247(comma)s
+-1(nd.)h
+177 545(The)s
+146(/)h
+98(mec)h
+-1(hanism)h
+11(w)h
+-1(as)h
+13(created)h
+15(to)h
+13(allo)h
+-1(w)h
+11(groups)h
+13(of)h
+13(regression)h
+14(tests)h
+15(to)h
+13(b)h
+1(e)h
+13(skipp)h
+1(ed)h
+14(during)h
+177 595(debugging)s
+13(without)h
+14(ha)h
+-1(ving)h
+13(to)h
+14(comm)h
+-1(en)h
+-1(t)h
+12(them)h
+13(out.)h
+18(F)h
+-3(or)h
+14(more)h
+13(informa)h
+-1(tion,)h
+11(see)h
+15(Section)h
+15(3.15.7.)h
+-1(18.)h
+177 843(The)s
+115(comm)h
+-1(and)h
+12(terminates)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(imm)h
+-1(ediately)h
+11(and)h
+14(returns)h
+15(con)h
+-1(trol)h
+13(to)h
+14(the)h
+14(op)h
+1(erating)h
+13(sys-)h
+177 893(tem.)s
+17(This)h
+14(applies)h
+14(regardless)h
+15(of)h
+13(the)h
+15(depth)h
+14(of)h
+13(the)h
+15(script)h
+15(b)h
+1(eing)h
+13(executed.)h
+177 1315(The)s
+94(command)h
+12(mo)h
+1(di\014es)h
+13(the)h
+15(default)h
+14(shell)h
+14(options.)h
+18(F)h
+-3(or)h
+14(example,)h
+158(sets)h
+15(the)h
+73(option)h
+13(for)h
+177 1365(all)s
+13(subsequen)h
+-1(t)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(runs)h
+14(within)h
+14(the)h
+14(shell)h
+14(un)h
+-1(til)h
+13(another)h
+14(set)h
+15(comm)h
+-1(and)h
+12(sets)h
+59(.)h
+177 1713(The)s
+17(restrictions)h
+17(on)h
+16(the)h
+98(comm)h
+-1(and)h
+14(are)h
+17(iden)h
+-1(tical)h
+15(to)h
+16(those)h
+17(on)h
+16(the)h
+76(comma)h
+-1(nd)h
+14(except)h
+18(that,)h
+16(in)h
+177 1763(addition,)s
+12(the)h
+72(option)h
+13(cannot)h
+15(b)h
+1(e)h
+14(turned)h
+15(on)h
+14(in)h
+13(the)h
+94(comm)h
+-1(and.)h
+177 1840(The)s
+12(set)h
+13(comma)h
+-1(nd)h
+10(is)h
+12(useful)h
+12(for)h
+11(setting)h
+13(option)h
+11(defaults)h
+12(b)h
+1(efore)h
+12(a)h
+12(long)h
+11(run)h
+12(of)h
+11(regression)h
+13(tests.)h
+19(It)h
+12(could)h
+177 1890(also)s
+13(b)h
+1(e)h
+13(useful)h
+14(to)h
+13(set)h
+14(default)h
+13(options)h
+12(in)h
+13(a)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(shell)h
+13(k)h
+-1(ept)h
+14(b)h
+-1(y)h
+13(a)h
+13(user)h
+14(in)h
+13(a)h
+12(w)h
+-1(orkstation)h
+13(windo)h
+-1(w.)h
+177 2139(The)s
+115(command)h
+11(displa)h
+-1(ys)h
+14(the)h
+14(curren)h
+-1(t)h
+15(default)h
+14(shell)h
+13(options.)h
+18(These)h
+15(options)h
+14(are)h
+14(the)h
+14(options)h
+14(that)h
+177 2189(subsequen)s
+-1(t)h
+73(comma)h
+-1(nds)h
+13(will)h
+12(inherit.)h
+177 2611(The)s
+159(comm)h
+-1(and)h
+12(causes)h
+15(the)h
+15(shell)h
+13(to)h
+14(ignore)h
+14(all)h
+12(subsequen)h
+-1(t)h
+16(comm)h
+-1(ands)h
+12(un)h
+-1(til)h
+13(a)h
+115(comm)h
+-1(and)h
+177 2661(is)s
+14(encoun)h
+-1(tered.)h
+1042 2940(98)s
+99 @eop
+100 @bop0
+100 @bop1
+cmbx10.300 sf
+177 1947(3.15.7.19)s
+48(Status)h
+cmtt10.300 sf
+262 42(skipto)s
+21(here)h
+1412 91(goto)s
+177 359(skipto)s
+177 409(execute)s
+21(test)h
+20(infile1)h
+177 459(execute)s
+21(test)h
+20(infile2)h
+177 509(execute)s
+21(test)h
+20(infile3)h
+177 559(execute)s
+21(test)h
+20(infile4)h
+177 608(execute)s
+21(test)h
+20(infile5)h
+177 658(here)s
+177 708(execute)s
+21(test)h
+20(infile6)h
+177 758(execute)s
+21(test)h
+20(infile7)h
+177 808(execute)s
+21(test)h
+20(infile8)h
+1098 976(here)s
+177 1144(skipto)s
+177 1194(!)s
+22(Test)h
+21(the)h
+21(Parser)h
+177 1244(!)s
+22(-----------)h
+-1(----)h
+177 1294(define)s
+21(X)h
+21("execute)h
+20(parsertest.fws")h
+177 1344($X)s
+22(infile1)h
+177 1393($X)s
+22(infile2)h
+177 1443($X)s
+22(infile3)h
+177 1493($X)s
+22(infile4)h
+177 1543($X)s
+22(infile5)h
+177 1593(here)s
+943 1711(define)s
+558($X)h
+459 1761($X)s
+177 1811($X)s
+210(skipto)h
+268 2050(status)s
+177 2249(status)s
+177 2417(Syntax)s
+43(:)h
+21(status)h
+21(=)h
+21("status")h
+20({s)h
+22(\("w"|"e"|"s)h
+-1("\))h
+20(num}0..3)h
+177 2467(Examples:)s
+20(status)h
+395 2517(status)s
+21(w1)h
+21(e5)h
+21(s1)h
+395 2567(status)s
+21(w4)h
+395 2616(status)s
+21(s1)h
+21(e2)h
+263 2735(status)s
+cmr10.300 sf
+177 42(The)s
+146(/)h
+98(mec)h
+-1(hanism)h
+11(w)h
+-1(as)h
+13(created)h
+15(to)h
+13(allo)h
+-1(w)h
+11(groups)h
+13(of)h
+13(regression)h
+14(tests)h
+15(to)h
+13(b)h
+1(e)h
+13(skipp)h
+1(ed)h
+14(during)h
+177 91(debugging)s
+10(without)h
+9(ha)h
+-1(ving)h
+9(to)h
+10(comm)h
+-1(en)h
+-1(t)h
+9(them)h
+9(out.)h
+17(It)h
+10(is)h
+10(lik)h
+-1(e)h
+9(a)h
+10(cut)h
+10(price)h
+99(.)h
+16(F)h
+-3(or)h
+10(example,)h
+9(supp)h
+1(osing)h
+177 141(that)s
+15(there)h
+16(w)h
+-1(ere)h
+15(eigh)h
+-1(t)h
+15(tests)h
+16(and)h
+14(that)h
+15(y)h
+-1(ou)h
+14(had)h
+15(debugged)h
+15(the)h
+15(\014rst)h
+16(\014v)h
+-1(e.)h
+20(Y)h
+-3(ou)h
+14(migh)h
+-1(t)h
+13(w)h
+-1(an)h
+-1(t)h
+14(to)h
+15(skip)h
+14(the)h
+177 191(\014rst)s
+16(\014v)h
+-1(e)h
+15(tests)h
+16(so)h
+16(that)h
+15(y)h
+-1(ou)h
+14(can)h
+15(concen)h
+-1(trate)h
+17(on)h
+15(the)h
+15(next)h
+16(three.)h
+22(The)h
+16(follo)h
+-1(wi)h
+-1(ng)h
+13(co)h
+1(de)h
+16(sho)h
+-1(ws)h
+15(ho)h
+-1(w)h
+15(this)h
+177 241(can)s
+14(b)h
+1(e)h
+15(done.)h
+177 926(It)s
+15(should)h
+14(b)h
+1(e)h
+15(stressed)h
+17(that)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(p)h
+1(erforms)h
+14(full)h
+13(comma)h
+-1(nd)h
+13(line)h
+14(pro)h
+1(cessing)h
+15(including)h
+14(the)h
+15(dollar)h
+177 976(substitutions)s
+17(b)h
+1(efore)h
+17(testing)h
+16(the)h
+17(line)h
+16(to)h
+16(see)h
+17(if)h
+16(it)h
+16(is)h
+104(.)h
+24(This)h
+16(can)h
+16(lead)h
+16(to)h
+16(non-ob)h
+-1(vious)h
+15(problems.)h
+177 1026(F)s
+-3(or)h
+14(example.)h
+177 1711(The)s
+14(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+12(lo)h
+1(oks)h
+13(correct,)h
+14(but,)h
+13(b)h
+1(ecause)h
+15(the)h
+157(comm)h
+-1(and)h
+11(isn't)h
+13(executed)h
+14(\(and)h
+70(is)h
+13(not)h
+13(de\014ned\))h
+177 1761(the)s
+14(subsequen)h
+-1(t)h
+71(lines)h
+13(result)h
+13(in)h
+13(a)h
+12(leading)h
+12(blanks)h
+13(error.)h
+18(The)h
+14(problem)h
+11(can)h
+14(b)h
+1(e)h
+13(corrected)h
+15(b)h
+-1(y)h
+13(de\014ning)h
+235 1811(b)s
+1(efore)h
+14(the)h
+159(comma)h
+-1(nd.)h
+177 2050(The)s
+170(comm)h
+-1(and)h
+18(tak)h
+-1(es)h
+19(t)h
+-1(w)h
+-1(o)h
+19(forms.)h
+33(In)h
+20(its)h
+19(\014rst)h
+20(form)h
+18(in)h
+19(whic)h
+-1(h)h
+19(no)h
+19(argumen)h
+-1(ts)h
+19(are)h
+19(giv)h
+-1(en,)h
+20(it)h
+177 2099(writes)s
+13(out)h
+12(the)h
+13(n)h
+-1(um)h
+-1(b)h
+1(er)h
+11(of)h
+12(w)h
+-1(arnings,)h
+12(errors)h
+13(and)h
+12(sev)h
+-1(ere)h
+14(errors)h
+14(that)h
+12(1\))h
+12(w)h
+-1(ere)h
+13(generated)h
+14(b)h
+-1(y)h
+12(the)h
+12(previous)h
+177 2149(comma)s
+-1(nd)h
+16(and)h
+18(2\))h
+18(ha)h
+-1(v)h
+-1(e)h
+17(b)h
+1(een)h
+19(generated)h
+19(during)h
+18(the)h
+18(en)h
+-1(tire)h
+19(shell)h
+18(in)h
+-1(v)h
+-1(o)h
+1(cation.)h
+28(In)h
+18(its)h
+18(second)h
+19(form)h
+16(it)h
+177 2199(tak)s
+-1(es)h
+13(from)h
+10(one)h
+13(to)h
+12(three)h
+13(argumen)h
+-1(ts)h
+12(eac)h
+-1(h)h
+12(of)h
+12(whic)h
+-1(h)h
+12(sp)h
+1(eci\014es)h
+14(a)h
+12(diagnostic)h
+12(sev)h
+-1(erit)h
+-1(y)h
+13(and)h
+12(a)h
+12(n)h
+-1(um)h
+-1(b)h
+1(er.)h
+16(The)h
+323 2249(comm)s
+-1(and)h
+13(compares)h
+15(eac)h
+-1(h)h
+15(of)h
+15(these)h
+16(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+15(with)h
+15(the)h
+15(n)h
+-1(um)h
+-1(b)h
+1(er)h
+15(of)h
+14(that)h
+15(diagnostic)h
+14(generated)h
+177 2299(b)s
+-1(y)h
+14(the)h
+14(previous)h
+15(comm)h
+-1(and)h
+12(and)h
+13(generates)h
+16(a)h
+13(sev)h
+-1(ere)h
+16(error)h
+15(if)h
+13(they)h
+14(di\013er.)h
+177 2735(The)s
+159(comma)h
+-1(nd)h
+13(w)h
+-1(as)h
+13(in)h
+-1(tro)h
+1(duced)h
+15(to)h
+14(test)h
+15(the)h
+15(status)h
+14(results)h
+16(of)h
+13(comm)h
+-1(ands)h
+13(during)h
+13(their)h
+15(debug-)h
+177 2785(ging.)s
+17(It)h
+13(is)h
+13(also)h
+12(useful)h
+13(for)h
+13(c)h
+-1(hec)h
+-1(king)h
+14(to)h
+12(see)h
+15(that)h
+13(the)h
+13(righ)h
+-1(t)h
+13(n)h
+-1(um)h
+-1(b)h
+1(er)h
+12(of)h
+13(diagnostics)h
+12(ha)h
+-1(v)h
+-1(e)h
+13(b)h
+1(een)h
+14(generated)h
+177 2835(at)s
+14(particular)h
+14(p)h
+1(oin)h
+-1(ts)h
+13(in)h
+14(test)h
+15(scripts.)h
+1042 2940(99)s
+100 @eop
+101 @bop0
+cmbx10.432 sf
+[<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC007FE00003FC000FF00003FC0007F8
+0003FC0007FC0003FC0003FC0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE
+0003FC0003FE0003FC0003FE0003FC0003FC0003FC0007F80003FC0007F80003FC001FE0
+0003FC007FC00003FFFFFE000003FFFFF0000003FC01FC000003FC007F000003FC007F80
+0003FC003FC00003FC003FC00003FC001FE00003FC001FE00003FC001FE00003FC001FE0
+0003FC001FF00003FC001FF00003FC001FF00003FC001FF00003FC001FF00703FC001FF8
+0703FC000FF80703FC000FFC0FFFFFF007FE1EFFFFF001FFFCFFFFF0003FF0>
+48 41 -3 40 52] 82 dc
+101 @bop1
+cmbx10.432 sf
+177 2511(3.16)s
+70(Concluding)h
+22(Rem)h
+-2(arks)h
+cmbx10.300 sf
+177 42(3.15.7.20)s
+48(T)h
+-4(olerate)h
+177 741(3.15.7.21)s
+48(T)h
+-4(race)h
+177 1342(3.15.7.22)s
+48(W)h
+-4(rite)h
+177 2041(3.15.7.23)s
+48(W)h
+-4(riteu)h
+cmtt10.300 sf
+263 141(tolerate)s
+1234 241(tolerate)s
+177 401(Syntax)s
+21(:)h
+21(tolerate)h
+20(=)h
+22("tolerate")h
+177 451(Example:)s
+20(tolerate)h
+1422 561(fw)s
+261 841(trace)s
+177 1001(Syntax)s
+43(:)h
+21(trace)h
+21(=)h
+21("trace")h
+21([s)h
+21(\("on")h
+21(|)h
+22("off"\)])h
+177 1051(Examples:)s
+20(trace)h
+21(on)h
+395 1101(trace)s
+21(off)h
+262 1211(trace)s
+263 1441(write)s
+177 1651(Syntax)s
+43(:)h
+21(write)h
+21(=)h
+21("write")h
+21(s)h
+21(string)h
+177 1701(Examples:)s
+20(write)h
+21("Now)h
+21(about)h
+21(to)h
+21(start)h
+21(the)h
+21(next)h
+21(test.")h
+395 1751(write)s
+21("You)h
+21(don't)h
+21(need)h
+21(to)h
+21(")h
+22(double)h
+20(enclosed)h
+20(double)h
+21(quotes.")h
+261 1861(write)s
+262 2141(writeu)s
+529(write)h
+177 2301(Syntax)s
+43(:)h
+21(writeu)h
+21(=)h
+21("writeu")h
+20(s)h
+22(string)h
+177 2351(Examples:)s
+20(writeu)h
+21("Test)h
+20(6")h
+599 2824(ross@spam.adela)s
+-1(ide.)h
+-1(edu.a)h
+-1(u)h
+cmr10.300 sf
+177 141(The)s
+204(comm)h
+-1(and)h
+13(instructs)h
+16(the)h
+15(shell)h
+14(not)h
+14(to)h
+15(ab)h
+1(ort)h
+14(pro)h
+1(cessing)h
+16(of)h
+14(the)h
+15(script)h
+15(if)h
+14(the)h
+15(next)h
+15(com-)h
+177 191(mand)s
+11(generates)h
+15(one)h
+13(or)h
+13(more)h
+12(w)h
+-1(arnings,)h
+12(errors,)h
+14(or)h
+13(sev)h
+-1(ere)h
+14(errors.)h
+19(F)h
+-3(or)h
+13(the)h
+13(purp)h
+1(oses)h
+15(of)h
+12(this)h
+13(comm)h
+-1(and,)h
+177 241(a)s
+13(blank)h
+12(line)h
+13(coun)h
+-1(ts)h
+13(as)h
+14(a)h
+12(comma)h
+-1(nd,)h
+11(so)h
+13(b)h
+1(e)h
+14(sure)h
+14(to)h
+13(place)h
+13(the)h
+201(comma)h
+-1(nd)h
+12(imm)h
+-2(ediately)h
+11(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+177 291(the)s
+15(comm)h
+-1(and)h
+12(ab)h
+1(out)h
+14(whic)h
+-1(h)h
+13(y)h
+-1(ou)h
+14(wish)h
+13(to)h
+14(b)h
+1(e)h
+15(toleran)h
+-1(t.)h
+177 561(The)s
+15(tolerate)h
+14(comm)h
+-1(and)h
+12(w)h
+-1(as)h
+14(in)h
+-1(tro)h
+1(duced)h
+15(to)h
+13(allo)h
+-1(w)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(\(i.e.)h
+13(the)h
+72(comma)h
+-1(nd\))h
+12(to)h
+14(b)h
+1(e)h
+15(tested)h
+15(in)h
+177 611(a)s
+14(script)h
+14(under)h
+15(conditions)h
+14(whic)h
+-1(h)h
+13(w)h
+-1(ould)h
+14(normall)h
+-1(y)h
+12(cause)h
+15(it)h
+13(to)h
+14(ab)h
+1(ort)h
+14(the)h
+14(script.)h
+177 841(The)s
+134(comm)h
+-1(and)h
+10(turns)h
+13(on)h
+12(or)h
+12(o\013)h
+12(comm)h
+-1(and)h
+10(tracing)h
+12(during)h
+12(script)h
+13(execution.)h
+18(By)h
+12(default,)h
+12(tracing)h
+177 891(is)s
+14(turned)h
+15(o\013.)h
+177 1211(The)s
+137(comma)h
+-1(nd)h
+12(w)h
+-1(as)h
+14(in)h
+-1(tro)h
+1(duced)h
+15(to)h
+14(assist)h
+14(in)h
+13(the)h
+15(debugging)h
+13(of)h
+14(regression)h
+15(test)h
+15(scripts.)h
+177 1441(The)s
+138(command)h
+12(accepts)h
+16(a)h
+14(double-quoted)h
+15(argumen)h
+-1(t)h
+13(and)h
+14(writes)h
+16(it)h
+14(follo)h
+-1(w)h
+-1(ed)h
+13(b)h
+-1(y)h
+14(an)h
+14(EOL)h
+15(to)h
+14(the)h
+177 1491(console)s
+18(\(standard)h
+18(output\).)h
+29(There)h
+19(is)h
+17(no)h
+17(need)h
+18(to)h
+18(double)h
+17(an)h
+-1(y)h
+17(double)h
+17(quotes)h
+18(o)h
+1(ccurring)h
+18(within)h
+17(the)h
+177 1541(string.)s
+177 1861(The)s
+135(comm)h
+-1(and)h
+10(w)h
+-1(as)h
+13(added)h
+12(so)h
+13(as)h
+13(to)h
+12(allo)h
+-1(w)h
+11(regression)h
+14(testing)h
+12(scripts)h
+14(to)h
+12(inform)h
+11(the)h
+13(user)h
+13(of)h
+12(their)h
+177 1911(progress.)s
+177 2141(The)s
+158(comm)h
+-1(and)h
+11(is)h
+13(iden)h
+-1(tical)h
+13(to)h
+13(the)h
+136(comm)h
+-1(and)h
+11(except)h
+15(that)h
+13(it)h
+13(underlines)h
+14(the)h
+14(text)h
+14(on)h
+13(an)h
+177 2191(additional)s
+12(follo)h
+-1(wing)h
+11(output)h
+15(line.)h
+177 2625(This)s
+19(c)h
+-1(hapter)h
+21(de\014nes)h
+20(the)h
+20(seman)h
+-1(tics)h
+19(of)h
+18(the)h
+20(F)h
+-3(unnelW)h
+-3(eb)h
+19(program.)h
+32(As)h
+20(stated)h
+20(at)h
+19(the)h
+20(start)h
+20(of)h
+19(this)h
+177 2675(c)s
+-1(hapter,)h
+19(this)h
+18(do)h
+1(cumen)h
+-1(t)h
+17(tak)h
+-1(es)h
+18(precedence)h
+20(o)h
+-1(v)h
+-1(er)h
+18(the)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(program.)h
+27(While)h
+17(the)h
+18(de\014nition)h
+17(of)h
+177 2725(F)s
+-3(unnelW)h
+-3(eb)h
+12(in)h
+13(this)h
+13(c)h
+-1(hapter)h
+13(is)h
+13(reasonably)h
+13(solid,)h
+11(it)h
+13(is)h
+12(far)h
+13(from)h
+11(w)h
+-1(atertigh)h
+-1(t,)h
+12(and)h
+13(it)h
+12(is)h
+13(hop)h
+1(ed)h
+13(that)h
+13(it)h
+13(can)h
+177 2774(b)s
+1(e)h
+13(tigh)h
+-1(tened)h
+13(further)h
+13(in)h
+12(future)h
+13(v)h
+-1(ersions.)h
+18(All)h
+12(constructiv)h
+-1(e)h
+14(criticism)h
+11(will)h
+11(b)h
+1(e)h
+13(gratefully)h
+11(receiv)h
+-1(ed)h
+14(b)h
+-1(y)h
+12(the)h
+177 2824(author)s
+14(Ross)h
+14(Willia)h
+-1(m)h
+-1(s)h
+12(\()h
+547(\).)h
+1032 2940(100)s
+101 @eop
+102 @bop0
+cmbx10.622 sf
+[<00000007C0000000000FC0000000000FC0000000001FC0000000003FC0000000007FC0
+00000000FFC000000000FFC000000001FFC000000003FFC000000007FFC00000000FFFC0
+0000000FFFC00000001EFFC00000003CFFC00000007CFFC0000000F8FFC0000000F0FFC0
+000001E0FFC0000003C0FFC0000007C0FFC000000F80FFC000000F00FFC000001E00FFC0
+00003C00FFC000007C00FFC00000F800FFC00000F000FFC00001E000FFC00003C000FFC0
+0007C000FFC0000F8000FFC0000F0000FFC0001E0000FFC0003C0000FFC0007C0000FFC0
+00F80000FFC000FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0000001FFC0
+00000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0
+00000001FFC000000001FFC000000001FFC0000007FFFFFFC00007FFFFFFC00007FFFFFF
+C00007FFFFFFC0>
+48 55 -3 54 49] 52 dc
+102 @bop1
+cmsy10.300 sf
+239 955(\017)s
+239 1037(\017)s
+239 1168(\017)s
+239 1398(\017)s
+239 1479(\017)s
+239 1610(\017)s
+239 1692(\017)s
+cmbx10.622 sf
+177 376(Chapter)s
+34(4)h
+cmti10.300 sf
+781 955(or)s
+1009 1037(or)s
+340 1802(not)s
+625 2604(text)s
+563 2654(binary)s
+cmbx10.746 sf
+177 607(F)s
+-10(unnelW)h
+-10(eb)h
+41(Installati)h
+1(on)h
+cmbx10.432 sf
+177 2011(4.1)s
+70(Obtaining)h
+22(a)h
+23(Cop)h
+-2(y)h
+23(of)h
+24(F)h
+-6(unnelW)h
+-6(eb)h
+cmtt10.300 sf
+461 1851(fw)s
+243 2235(Machine)s
+63(:)h
+22(sirius.itd.ad)h
+-1(elaid)h
+-1(e.edu)h
+-1(.au)h
+19([IP=129.127.40.)h
+-1(3].)h
+243 2285(Directory)s
+19(:)h
+22(~pub/funnelwe)h
+-1(b/)h
+63(\(or)h
+22(a)h
+21(directory)h
+20(of)h
+21(similar)h
+21(name\).)h
+1704 2395(.tar)s
+cmr10.300 sf
+177 846(This)s
+14(c)h
+-1(hapter)h
+15(describ)h
+1(es)h
+16(ho)h
+-1(w)h
+13(to)h
+14(obtain,)h
+13(compile,)h
+11(and)h
+14(install)h
+13(F)h
+-3(unnelW)h
+-3(eb.)h
+17(Y)h
+-3(ou)h
+14(will)h
+12(need:)h
+281 955(FTP)s
+14(access)h
+16(to)h
+14(the)h
+14(in)h
+-1(ternet)h
+67(a)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(distribution)h
+14(kit)h
+13(on)h
+14(disk.)h
+281 1037(A)s
+18(Sun,)h
+19(VMS)h
+19(V)h
+-5(AX,)h
+18(Macin)h
+-1(tosh,)h
+19(or)h
+18(PC)h
+76(lots)h
+18(of)h
+17(extra)h
+19(time)h
+17(to)h
+18(p)h
+1(ort)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+17(to)h
+18(a)h
+18(new)h
+281 1086(platform.)s
+281 1168(Ab)s
+1(out)h
+15(four)h
+14(megab)h
+-1(ytes)h
+14(of)h
+14(free)h
+15(disk)h
+14(space.)h
+21(Y)h
+-3(ou)h
+14(migh)h
+-1(t)h
+12(b)h
+1(e)h
+15(able)h
+15(to)h
+14(install)h
+13(it)h
+14(with)h
+15(less,)h
+14(but)h
+15(four)h
+281 1217(megab)s
+-1(ytes)h
+14(is)h
+15(safe.)h
+21(The)h
+15(distribution)h
+14(kit)h
+15(itself)h
+14(is)h
+15(ab)h
+1(out)h
+14(t)h
+-1(w)h
+-1(o)h
+15(and)h
+14(a)h
+15(half)h
+14(megab)h
+-1(ytes.)h
+20(If)h
+14(y)h
+-1(ou)h
+14(are)h
+281 1267(short)s
+11(on)h
+11(space,)h
+12(y)h
+-1(ou)h
+11(can)h
+11(thro)h
+-1(w)h
+11(a)h
+-1(w)h
+-1(a)h
+-1(y)h
+10(ev)h
+-1(erything)h
+11(after)h
+11(installation)h
+9(except)h
+13(the)h
+11(binary)h
+11(executable)h
+281 1317(whic)s
+-1(h)h
+14(will)h
+12(consume)h
+14(ab)h
+1(out)h
+13(half)h
+13(a)h
+14(megab)h
+-1(yte.)h
+281 1398(A)s
+14(C)h
+14(compiler.)h
+281 1479(An)s
+16(acquain)h
+-1(tance)h
+17(with)h
+16(the)h
+17(C)h
+16(programm)h
+-1(ing)h
+14(language)h
+16(and)h
+16(the)h
+17(abilit)h
+-1(y)h
+14(to)h
+17(compil)h
+-1(e)h
+15(and)h
+16(link)h
+16(C)h
+281 1529(programs)s
+13(on)h
+13(y)h
+-1(our)h
+14(mac)h
+-1(hine.)h
+281 1610(Elemen)s
+-1(tary)h
+13(systems)h
+14(programm)h
+-1(ing)h
+11(kno)h
+-1(wledege)h
+14(for)h
+14(y)h
+-1(our)h
+14(mac)h
+-1(hine.)h
+281 1692(Ab)s
+1(out)h
+14(an)h
+14(hour.)h
+177 1802(Y)s
+-3(ou)h
+13(will)h
+84(need)h
+14(an)h
+-1(y)h
+13(sort)h
+14(of)h
+13(system)h
+13(privileges)h
+14(to)h
+13(install)h
+12(F)h
+-3(unnelW)h
+-3(eb,)h
+13(unless)h
+14(y)h
+-1(ou)h
+13(w)h
+-1(an)h
+-1(t)h
+13(the)h
+14(F)h
+-3(unnel-)h
+177 1851(W)s
+-3(eb)h
+14(comm)h
+-1(and)h
+69(to)h
+14(b)h
+1(e)h
+14(automaticall)h
+-1(y)h
+12(a)h
+-1(v)h
+-2(ailable)h
+12(to)h
+14(ev)h
+-1(ery)h
+-1(one)h
+14(on)h
+14(y)h
+-1(our)h
+14(mac)h
+-1(hine)h
+12(as)h
+14(w)h
+-1(ell)h
+13(as)h
+14(y)h
+-1(ourself.)h
+177 2125(The)s
+14(simplest)h
+13(w)h
+-1(a)h
+-1(y)h
+14(to)h
+13(obtain)h
+13(a)h
+14(cop)h
+-1(y)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(is)h
+13(b)h
+-1(y)h
+14(anon)h
+-1(ymous)h
+12(FTP)h
+14(from:)h
+177 2395(It)s
+18(is)h
+17(not)h
+17(clear)h
+18(at)h
+17(the)h
+18(time)h
+16(of)h
+17(writing)h
+17(whether)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(will)h
+16(b)h
+1(e)h
+18(presen)h
+-1(ted)h
+19(as)h
+18(a)h
+17(\\)h
+88(")h
+16(\014le,)h
+18(or)h
+177 2444(as)s
+16(a)h
+16(directory)h
+17(tree,)h
+17(or)h
+16(b)h
+1(oth.)h
+25(Just)h
+17(sni\013)h
+16(around)h
+16(and)h
+16(use)h
+16(y)h
+-1(our)h
+16(commo)h
+-1(n)h
+14(sense.)h
+27(Tw)h
+-1(o)h
+15(p)h
+1(oin)h
+-1(ts)h
+16(deserv)h
+-1(e)h
+177 2494(atten)s
+-1(tion)h
+14(ho)h
+-1(w)h
+-1(ev)h
+-1(er:)h
+228 2604(1.)s
+20(Be)h
+15(sure)h
+15(to)h
+14(use)h
+15(the)h
+94(transfer)h
+15(mo)h
+1(de)h
+13(whenev)h
+-1(er)h
+16(y)h
+-1(ou)h
+13(transfer)h
+15(ra)h
+-1(w)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(\014les.)h
+19(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+281 2654(y)s
+-1(ou)h
+13(should)h
+14(use)h
+143(mo)h
+1(de)h
+12(for)h
+14(T)h
+-3(AR)h
+13(\014les)h
+14(and)h
+14(other)h
+15(conglom)h
+-1(erate)h
+13(represe)h
+1(n)h
+-1(tations.)h
+228 2735(2.)s
+20(If)h
+13(y)h
+-1(ou)h
+13(ha)h
+-1(v)h
+-1(e)h
+13(to)h
+13(transfer)h
+15(the)h
+14(\014les)h
+13(individually)h
+-4(,)h
+11(don't)h
+13(lump)h
+12(all)h
+12(the)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(\014les)h
+13(in)h
+-1(to)h
+13(a)h
+13(single)h
+281 2785(directory)s
+-3(.)h
+20(Refer)h
+14(to)h
+15(the)h
+15(sections)h
+15(that)h
+14(follo)h
+-1(w)h
+13(for)h
+14(informa)h
+-1(tion)h
+12(on)h
+14(the)h
+15(directory)h
+15(tree)h
+16(y)h
+-1(ou)h
+14(should)h
+281 2835(create)s
+15(to)h
+14(receiv)h
+-1(e)h
+15(the)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(\014les.)h
+1032 2940(101)s
+102 @eop
+103 @bop0
+103 @bop1
+cmbx10.432 sf
+177 468(4.2)s
+70(Establishing)h
+21(The)h
+23(Directory)h
+22(T)h
+-6(ree)h
+cmbx12.300 sf
+177 1778(4.2.1)s
+55(Admin)h
+18(Directory)h
+177 2120(4.2.2)s
+55(Answ)h
+-2(ers)h
+20(Directory)h
+cmtt10.300 sf
+243 207(Name:)s
+42(Dr)h
+21(Ross)h
+21(N.)h
+22(Williams)h
+243 257(Email:)s
+20(ross@spam.ade)h
+-1(laide)h
+-1(.edu.)h
+-1(au)h
+243 307(Snail:)s
+20(16)h
+21(Lerwick)h
+21(Avenue,)h
+20(Hazelwood)h
+20(Park)h
+21(5066,)h
+21(Australia.)h
+243 924(fwdir)s
+151(-)h
+22(Root)h
+21(FunnelWeb)h
+20(directory.)h
+308 973(admin)s
+86(-)h
+22(Administrat)h
+-1(ive)h
+20(files.)h
+308 1023(answers)s
+42(-)h
+22(Answers)h
+20(to)h
+21(test)h
+21(suite.)h
+308 1073(hackman)s
+42(-)h
+22(FunnelWeb)h
+20(Hacker's)h
+20(Manual.)h
+308 1123(results)s
+42(-)h
+22(For)h
+21(test)h
+21(results.)h
+308 1173(scripts)s
+42(-)h
+22(Test)h
+21(scripts.)h
+308 1222(sources)s
+42(-)h
+22(Source)h
+20(code.)h
+308 1272(tests)s
+86(-)h
+22(Test)h
+21(suite.)h
+308 1322(userman)s
+42(-)h
+22(FunnelWeb)h
+20(User's)h
+20(Manual.)h
+262 1879(admin)s
+536 1979(admin)s
+261 2221(answers)s
+1453 2271(results)s
+177 2386(an01.lis)s
+20(...)h
+21(an04.lis)h
+177 2436(ex01.lis)s
+20(...)h
+21(ex16.lis)h
+177 2486(ex01.out)s
+20(...)h
+21(ex10.out)h
+177 2536(ex11.tex)s
+20(...)h
+21(ex16.tex)h
+177 2586(generate.lis)s
+177 2635(hi01.lis)s
+20(...)h
+21(hi10.lis)h
+177 2685(hi01.out)s
+20(...)h
+21(hi05.out)h
+177 2735(hi06a.out)s
+177 2785(hi06b.out)s
+177 2835(hi07a.out)s
+cmr10.300 sf
+177 42(If)s
+13(anon)h
+-1(ymous)h
+12(FTP)h
+13(is)h
+13(not)h
+14(a)h
+-1(v)h
+-2(aila)h
+-1(ble)h
+12(to)h
+13(y)h
+-1(ou,)h
+12(con)h
+-1(tact)h
+14(the)h
+14(author)h
+13(for)h
+13(up-to-date)h
+14(informa)h
+-1(tion)h
+11(on)h
+13(other)h
+177 91(c)s
+-1(hannels)h
+15(of)h
+13(distribution.)h
+177 584(A)s
+-1(t)h
+15(this)h
+15(stage,)h
+14(w)h
+-1(e)h
+15(will)h
+13(assume)h
+14(that)h
+15(y)h
+-1(ou)h
+14(ha)h
+-1(v)h
+-1(e)h
+15(someho)h
+-1(w)h
+13(obtained)h
+14(a)h
+15(set)h
+15(of)h
+14(\014les)h
+15(that)h
+15(are)h
+15(supp)h
+1(osed)h
+16(to)h
+177 634(b)s
+1(e)h
+15(F)h
+-3(unnelW)h
+-3(eb,)h
+14(and)h
+15(that)h
+14(they)h
+16(are)h
+15(sitting)h
+14(on)h
+14(a)h
+15(disk)h
+14(on)h
+15(the)h
+15(mac)h
+-1(hine)h
+13(on)h
+15(whic)h
+-1(h)h
+14(y)h
+-1(ou)h
+14(wish)h
+15(to)h
+14(compile)h
+177 684(and)s
+14(install)h
+13(F)h
+-3(unnelW)h
+-3(eb.)h
+177 758(The)s
+12(\014rst)h
+12(thing)h
+11(y)h
+-1(ou)h
+10(ha)h
+-1(v)h
+-1(e)h
+11(to)h
+11(do)h
+11(is)h
+12(to)h
+11(mak)h
+-1(e)h
+9(sure)h
+13(that)h
+11(the)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+10(directory)h
+12(tree)h
+13(has)h
+11(b)h
+1(een)h
+13(correctly)h
+177 808(unpac)s
+-1(k)h
+-1(ed.)h
+19(The)h
+14(directory)h
+15(tree)h
+15(should)h
+13(lo)h
+1(ok)h
+13(lik)h
+-1(e)h
+13(this.)h
+177 1438(The)s
+18(follo)h
+-1(wing)h
+15(sections)h
+18(describ)h
+1(e)h
+20(the)h
+18(con)h
+-1(ten)h
+-1(ts)h
+18(of)h
+17(eac)h
+-1(h)h
+18(directory)h
+18(in)h
+17(alphab)h
+1(etical)h
+17(order.)h
+29(Chec)h
+-1(k)h
+18(the)h
+177 1488(con)s
+-1(ten)h
+-1(ts)h
+18(to)h
+17(mak)h
+-1(e)h
+15(sure)h
+18(that)h
+17(y)h
+-1(ou)h
+17(ha)h
+-1(v)h
+-1(e)h
+16(ev)h
+-1(erything.)h
+28(Do)h
+16(not)h
+17(b)h
+1(ecome)h
+17(fussed)h
+18(if)h
+16(y)h
+-1(our)h
+16(con\014guration)h
+17(is)h
+177 1537(not)s
+14(quite)h
+13(as)h
+14(sp)h
+1(eci\014ed)h
+15(as)h
+13(it)h
+13(is)h
+14(v)h
+-1(ery)h
+14(easy)h
+14(for)h
+13(installation)h
+11(guides)h
+14(suc)h
+-1(h)h
+14(as)h
+14(this)h
+13(one)h
+14(to)h
+14(go)h
+13(out)h
+13(of)h
+13(date)h
+14(as)h
+177 1587(minor)s
+14(last)h
+15(min)h
+-1(ute)h
+14(c)h
+-1(hanges)h
+16(and)h
+16(up)h
+1(dates)h
+16(are)h
+16(made)h
+15(to)h
+15(the)h
+16(distribution)h
+15(kit.)h
+22(Chec)h
+-1(k)h
+17(the)h
+16(source)h
+17(from)h
+177 1637(whic)s
+-1(h)h
+14(y)h
+-1(ou)h
+13(obtained)h
+14(the)h
+14(kit,)h
+13(and)h
+14(if)h
+13(it)h
+14(is)h
+13(di\013eren)h
+-1(t)h
+15(to)h
+1(o,)h
+13(pro)h
+1(ceed.)h
+177 1879(The)s
+136(directory)h
+14(con)h
+-1(tains)h
+13(administrativ)h
+-1(e)h
+11(\014les)h
+14(to)h
+13(do)h
+13(with)h
+13(licensing)h
+13(and)h
+13(suc)h
+-1(h.)h
+18(It)h
+14(is)h
+13(also)h
+12(a)h
+13(catc)h
+-1(h-)h
+177 1929(all)s
+11(directory)h
+13(for)h
+11(\014les)h
+13(that)h
+12(don't)h
+11(b)h
+1(elong)h
+12(an)h
+-1(ywhere)h
+12(else.)h
+18(A)h
+-1(t)h
+12(the)h
+13(time)h
+11(of)h
+11(writing,)h
+11(it)h
+12(is)h
+11(not)h
+12(clear)h
+13(exactly)h
+177 1979(what)s
+14(will)h
+12(b)h
+1(e)h
+15(in)h
+13(the)h
+138(directory)h
+-3(.)h
+18(Wh)h
+-1(y)h
+13(not)h
+14(tak)h
+-1(e)h
+14(a)h
+14(lo)h
+1(ok?)h
+177 2221(The)s
+179(directory)h
+13(con)h
+-1(tains)h
+13(the)h
+13(\\correct)h
+14(answ)h
+-1(ers")h
+14(to)h
+13(all)h
+11(the)h
+14(regression)h
+14(testing)h
+13(input)h
+12(\014les.)h
+18(The)h
+177 2271(regression)s
+15(test)h
+15(scripts)h
+15(compare)h
+13(these)h
+16(\014les)h
+14(to)h
+14(the)h
+14(\014les)h
+14(generated)h
+16(in)h
+13(the)h
+181(directory)h
+-3(.)h
+1032 2940(102)s
+103 @eop
+104 @bop0
+104 @bop1
+cmti10.300 sf
+1354 634(F)s
+-3(unnelWeb)h
+16(Hacker's)h
+14(Manual)h
+177 1216(F)s
+-3(unnelWeb)h
+16(Hacker's)h
+15(Manual)h
+886 1290(F)s
+-3(unnelWeb)h
+19(Hacker's)h
+17(Manual)h
+785 2785(al)s
+2(l)h
+cmbx12.300 sf
+177 532(4.2.3)s
+55(Hac)h
+-2(kman)h
+18(Directory)h
+177 1482(4.2.4)s
+55(Results)h
+18(Directory)h
+177 1925(4.2.5)s
+55(Scripts)h
+19(Directory)h
+177 2683(4.2.6)s
+55(Sources)h
+19(Directory)h
+cmtt10.300 sf
+177 42(hi07b.out)s
+177 91(hi08.out)s
+20(...)h
+21(hi10.out)h
+177 141(pr01.lis)s
+20(...)h
+21(pr10.lis)h
+177 191(sc01.lis)s
+20(...)h
+21(sc29.lis)h
+177 241(tg01.lis)s
+20(...)h
+21(tg09.lis)h
+177 291(tg01.out)s
+20(...)h
+21(tg09.out)h
+177 340(wv01.lis)s
+20(...)h
+21(wv06.lis)h
+177 390(wv01.tex)s
+20(...)h
+21(wv06.tex)h
+262 634(hackman)s
+424(.tex)h
+177 750(h_ch0.tex)s
+107(-)h
+22(Preface,)h
+20(etc.)h
+177 800(h_ch1.tex)s
+107(-)h
+22(Design.)h
+177 850(h_ch2.tex)s
+107(-)h
+22(Implementati)h
+-1(on.)h
+177 900(h_ch3.tex)s
+107(-)h
+22(Modification)h
+-1(.)h
+177 949(h_ch4.tex)s
+107(-)h
+22(Future.)h
+177 999(h_cha.tex)s
+107(-)h
+22(Appendices.)h
+177 1049(h_manual.tex)s
+41(-)h
+22(Main)h
+21(TeX)h
+21(file.)h
+744 1166(h)s
+15(manual.tex)h
+265 1584(results)s
+1145 1683(results)s
+268 2026(scripts)s
+177 2193(master.fws)s
+85(-)h
+22(The)h
+21(master)h
+21(test)h
+21(script.)h
+20(This)h
+21(is)h
+21(the)h
+21(one)h
+22(you)h
+21(run.)h
+177 2243(test_gen.fws)s
+41(-)h
+22(Script)h
+20(to)h
+22(generate)h
+20(certain)h
+20(tricky)h
+21(input)h
+21(files.)h
+177 2292(test_l.fws)s
+85(-)h
+22(Test)h
+21(FunnelWeb)h
+20(with)h
+21(+L.)h
+177 2342(test_ld.fws)s
+63(-)h
+22(Test)h
+21(FunnelWeb)h
+20(with)h
+21(+L)h
+21(+B...)h
+177 2392(test_lo.fws)s
+63(-)h
+22(Test)h
+21(FunnelWeb)h
+20(with)h
+21(+L)h
+21(+O.)h
+177 2442(test_lo2.fws)s
+41(-)h
+22(Test)h
+21(FunnelWeb)h
+20(with)h
+21(+L)h
+21(+O)h
+21(\(two)h
+21(output)h
+21(files\).)h
+177 2492(test_lot.fws)s
+41(-)h
+22(Test)h
+21(FunnelWeb)h
+20(with)h
+21(+L)h
+21(+O)h
+21(+T.)h
+177 2541(test_lt.fws)s
+63(-)h
+22(Test)h
+21(FunnelWeb)h
+20(with)h
+21(+L)h
+21(+T.)h
+267 2785(sources)s
+1642 2835(.c)s
+94(.h)h
+cmr10.300 sf
+177 634(The)s
+181(directory)h
+15(con)h
+-1(tains)h
+13(the)h
+116(\014les)h
+14(that)h
+14(mak)h
+-1(e)h
+12(up)h
+14(the)h
+538(.)h
+177 1166(See)s
+15(the)h
+14(commen)h
+-1(t)h
+12(at)h
+13(the)h
+15(top)h
+13(of)h
+283(\014le)h
+13(for)h
+14(instructions)h
+14(on)h
+14(ho)h
+-1(w)h
+13(to)h
+14(t)h
+-1(yp)h
+1(eset)h
+15(and)h
+14(prin)h
+-1(t)h
+13(the)h
+701 1216(.)s
+177 1290(There)s
+18(is)h
+16(no)h
+17(need)h
+17(to)h
+17(read)h
+17(or)h
+17(prin)h
+-1(t)h
+16(the)h
+563(unless)h
+18(y)h
+-1(ou)h
+16(in)h
+-1(tend)h
+17(to)h
+16(mo)h
+1(dify)h
+177 1340(F)s
+-3(unnelW)h
+-3(eb.)h
+177 1584(The)s
+187(directory)h
+17(exists)h
+17(as)h
+17(a)h
+17(target)h
+17(directory)h
+17(for)h
+17(the)h
+17(output)h
+17(\014les)h
+17(generated)h
+18(b)h
+-1(y)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+177 1633(during)s
+13(regression)h
+15(testing.)h
+18(This)h
+13(directory)h
+14(is)h
+14(distributed)h
+13(empt)h
+-1(y)h
+13(and)h
+13(should)h
+13(b)h
+1(e)h
+14(empt)h
+-1(y)h
+12(at)h
+13(the)h
+14(start)h
+14(of)h
+177 1683(regression)s
+16(testing.)h
+22(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+15(it)h
+14(is)h
+15(p)h
+1(ermissible)h
+14(for)h
+15(the)h
+182(directory)h
+16(to)h
+15(con)h
+-1(tain)h
+14(\014les)h
+15(generated)h
+177 1733(during)s
+17(a)h
+16(previous)h
+17(test)h
+18(run,)h
+18(as)h
+17(the)h
+17(regression)h
+18(testing)h
+18(scripts)h
+18(delete)h
+18(sp)h
+1(eci\014c)h
+18(un)h
+-1(w)h
+-1(an)h
+-1(ted)h
+17(\014les)h
+17(b)h
+1(efore)h
+177 1783(eac)s
+-1(h)h
+15(test)h
+15(an)h
+-1(yw)h
+-1(a)h
+-1(y)h
+-3(.)h
+177 2026(The)s
+192(directory)h
+20(stores)h
+21(the)h
+20(F)h
+-3(unnelW)h
+-3(eb)h
+19(comm)h
+-1(and)h
+18(shell)h
+19(scripts)h
+21(that)h
+19(are)h
+20(used)h
+20(to)h
+20(p)h
+1(erform)h
+177 2076(regression)s
+15(testing.)h
+177 2785(The)s
+189(directory)h
+19(con)h
+-1(tains)h
+80(of)h
+17(the)h
+19(C)h
+18(source)h
+19(\014les)h
+18(required)h
+19(to)h
+18(build)h
+17(a)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(binary)h
+177 2835(executable.)s
+19(In)h
+14(the)h
+15(follo)h
+-1(wi)h
+-1(ng)h
+12(list,)h
+13(\014les)h
+14(giv)h
+-1(en)h
+14(without)h
+13(an)h
+14(extension)h
+14(represe)h
+1(n)h
+-1(t)h
+16(b)h
+1(oth)h
+71(and)h
+71(\014les.)h
+1032 2940(103)s
+14 2 769 1166 r
+104 @eop
+105 @bop0
+105 @bop1
+cmbx12.300 sf
+177 1831(4.2.7)s
+55(T)h
+-5(ests)h
+19(Directory)h
+cmr10.300 sf
+177 1594(The)s
+13(\\)h
+88(",)h
+12(and)h
+12(\\)h
+88(")h
+12(\014les)h
+13(do)h
+12(not)h
+13(participate)h
+13(in)h
+12(the)h
+14(compilati)h
+-1(on,)h
+11(but)h
+13(are)h
+13(considered)h
+14(part)h
+13(of)h
+12(the)h
+177 1644(source)s
+17(co)h
+1(de)h
+17(as)h
+16(they)h
+16(w)h
+-1(ere)h
+17(used)h
+16(to)h
+16(generate)h
+17(the)h
+16(\\)h
+88(")h
+15(\014les.)h
+24(The)h
+16(\\)h
+88(")h
+14(\014les)h
+17(are)h
+16(included)h
+16(b)h
+-1(y)h
+177 1693(\014les)s
+14(of)h
+14(the)h
+14(same)h
+13(name.)h
+17(They)h
+14(do)h
+14(not)h
+14(need)h
+15(to)h
+13(b)h
+1(e)h
+15(compiled)h
+12(themselv)h
+-1(es.)h
+177 1930(The)s
+135(directory)h
+13(stores)h
+14(all)h
+11(the)h
+13(input)h
+12(\014les)h
+13(of)h
+12(the)h
+13(regression)h
+14(test)h
+14(suite.)h
+18(These)h
+14(come)h
+11(in)h
+12(t)h
+-1(w)h
+-1(o)h
+12(kinds:)h
+177 1980(F)s
+-3(unnelW)h
+-3(eb)h
+16(input)h
+16(\014les)h
+17(with)h
+16(extensions)h
+18(of)h
+16(\\)h
+66(",)h
+15(and)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+16(include)h
+17(\014les)h
+17(with)h
+16(extensions)h
+17(of)h
+177 2030(\\)s
+88(".)h
+1032 2940(104)s
+cmtt10.300 sf
+177 42(analyse)s
+151(-)h
+22(The)h
+21(analyser.)h
+177 91(as)s
+261(-)h
+22(Assertions.)h
+177 141(clock)s
+195(-)h
+22(A)h
+21(clock)h
+21(abstraction.)h
+177 191(command)s
+151(-)h
+22(The)h
+21(shell)h
+21(command)h
+20(interpreter.)h
+177 241(data)s
+217(-)h
+22(Shared)h
+20(data)h
+21(structures)h
+20(and)h
+21(global)h
+21(variables.)h
+177 291(dump)s
+217(-)h
+22(Functions)h
+20(to)h
+21(dump)h
+21(internal)h
+20(data)h
+21(structures.)h
+177 340(environ.h)s
+107(-)h
+22(Lightweight)h
+19(machine-depend)h
+-1(ent,)h
+19(program-indepen)h
+-1(dent)h
+19(header.)h
+177 390(help)s
+217(-)h
+22(Module)h
+20(to)h
+22(write)h
+21(out)h
+21(help)h
+21(messages.)h
+177 440(help_gnu)s
+129(-)h
+22(Function)h
+20(to)h
+21(write)h
+21(out)h
+21(the)h
+21(GNU)h
+22(license.)h
+177 490(help_gnu.txt)s
+41(-)h
+22(The)h
+21(GNU)h
+21(license)h
+21(in)h
+21(text)h
+21(form.)h
+177 540(help_gnu.ctx)s
+41(-)h
+22(The)h
+21(GNU)h
+21(license)h
+21(in)h
+21(C)h
+22(code)h
+20(form.)h
+177 589(list)s
+217(-)h
+22(A)h
+21(list)h
+21(abstraction.)h
+177 639(lister)s
+173(-)h
+22(Module)h
+20(to)h
+22(manage)h
+20(the)h
+22(listing)h
+20(file.)h
+177 689(machin)s
+173(-)h
+22(Module)h
+20(to)h
+22(hold)h
+21(machine-dep)h
+-1(enden)h
+-1(t,)h
+20(program-depe)h
+-1(ndent)h
+19(stuff.)h
+177 739(main.c)s
+173(-)h
+22(The)h
+21(main\(\))h
+21(program.)h
+177 789(mapper)s
+173(-)h
+22(Module)h
+20(to)h
+22(read)h
+21(files)h
+21(into)h
+20(memory.)h
+177 839(memory)s
+173(-)h
+22(Memory)h
+20(management.)h
+177 888(misc)s
+217(-)h
+22(Miscellaneou)h
+-1(s)h
+20(functions.)h
+177 938(option)s
+173(-)h
+22(Command)h
+20(line)h
+21(option)h
+21(processing.)h
+177 988(parser)s
+173(-)h
+22(The)h
+21(parser.)h
+177 1038(scanner)s
+151(-)h
+22(The)h
+21(scanner.)h
+177 1088(section)s
+151(-)h
+22(A)h
+21(section)h
+21(number)h
+20(abstraction.)h
+177 1137(style.h)s
+151(-)h
+22(A)h
+21(machine-indepen)h
+-1(dent,)h
+19(program-indep)h
+-1(enden)h
+-1(t)h
+20(header)h
+21(file.)h
+177 1187(table)s
+195(-)h
+22(A)h
+21(table)h
+21(abstraction.)h
+177 1237(tangle)s
+173(-)h
+22(The)h
+21(tangler.)h
+177 1287(texhead)s
+151(-)h
+22(Module)h
+20(to)h
+22(write)h
+21(out)h
+21(TeX)h
+21(header)h
+20(in)h
+22(documentatio)h
+-1(n)h
+20(files.)h
+177 1337(texhead.ctx)s
+63(-)h
+22(The)h
+21(TeX)h
+21(header)h
+21(in)h
+21(C)h
+22(code)h
+21(form.)h
+177 1386(texhead.tex)s
+63(-)h
+22(The)h
+21(TeX)h
+21(header)h
+21(in)h
+21(TeX)h
+21(form.)h
+177 1436(weave)s
+195(-)h
+22(The)h
+21(weaver.)h
+177 1486(writfile)s
+129(-)h
+22(Output)h
+20(abstraction.)h
+282 1594(.txt)s
+145(.tex)h
+1061 1644(.ctx)s
+249(.ctx)h
+419(.c)h
+261 1930(tests)s
+967 1980(.fw)s
+198 2030(.fwi)s
+177 2137(FunnelWeb)s
+20(Input)h
+21(Files:)h
+243 2187(an01.fw)s
+20(...)h
+21(an04.fw)h
+86(-)h
+21(Analyser)h
+21(tests.)h
+243 2237(ex01.fw)s
+20(...)h
+21(ex16.fw)h
+86(-)h
+21(Examples)h
+21(from)h
+20(the)h
+22(tutorial)h
+20(in)h
+21(user)h
+21(manual.)h
+243 2287(generate.f)s
+-1(w)h
+260(-)h
+21(Generates)h
+20(a)h
+22(few)h
+21(other)h
+21(tricky)h
+20(input)h
+21(files.)h
+243 2337(hi01.fw)s
+20(...)h
+21(hi10.fw)h
+86(-)h
+21(Examples)h
+21(from)h
+20(the)h
+22(hints)h
+20(chapter)h
+21(in)h
+21(user)h
+21(manual.)h
+243 2386(pr01.fw)s
+20(...)h
+21(pr10.fw)h
+86(-)h
+21(Parser)h
+21(tests.)h
+243 2436(sc01_note.)s
+-1(fw)h
+238(-)h
+21(A)h
+22(note)h
+21(explaining)h
+20(absence)h
+20(of)h
+21(sc01.fw)h
+243 2486(sc02.fw)s
+20(...)h
+21(sc29.fw)h
+86(-)h
+21(Scanner)h
+21(tests.)h
+243 2536(tg01.fw)s
+20(...)h
+21(tg09.fw)h
+86(-)h
+21(Tangler)h
+21(tests.)h
+243 2586(wv01.fw)s
+20(...)h
+21(wv06.fw)h
+86(-)h
+21(Weaver)h
+21(tests.)h
+177 2685(FunnelWeb)s
+20(Include)h
+20(Files:)h
+243 2735(ex09a.fwi)s
+243 2785(sc13a.fwi)s
+19(...)h
+22(sc13f.fwi)h
+243 2835(sc15a.fwi)s
+105 @eop
+106 @bop0
+cmti10.300 sf
+[<7FF0FF800F001C000E0018000E0010000E0010000E0010001C0020001C0020001C0020
+001C00200038004000380040003800400038004000700080007000800070008000700080
+00E0010000E0010000E0010000E0020000E0020000E0040000E004000060080000303000
+00104000000F800000>
+32 29 -9 27 31] 85 dc
+106 @bop1
+cmbx12.300 sf
+177 180(4.2.8)s
+55(Userman)h
+18(Directory)h
+cmbx10.432 sf
+177 1055(4.3)s
+70(Com)h
+-1(pi)h
+-1(l)h
+-1(ing)h
+21(F)h
+-6(unnelW)h
+-6(eb)h
+177 2562(4.4)s
+70(T)h
+-6(esting)h
+22(F)h
+-6(unnelW)h
+-6(eb)h
+cmti10.300 sf
+1354 279(F)s
+-3(unnelWeb)h
+16(User's)h
+14(Manual)h
+177 896(F)s
+-3(unnelWeb)h
+16(User's)h
+14(Manual)h
+cmtt10.300 sf
+243 42(tg08a.fwi)s
+262 279(userman)s
+424(.tex)h
+177 388(u_ch0.tex)s
+107(-)h
+22(Preface,)h
+20(etc.)h
+177 438(u_ch1.tex)s
+107(-)h
+22(Tutorial.)h
+177 488(u_ch2.tex)s
+107(-)h
+22(Hints.)h
+177 538(u_ch3.tex)s
+107(-)h
+22(Definition.)h
+177 588(u_ch4.tex)s
+107(-)h
+22(Installation)h
+-1(.)h
+177 637(u_ch5.tex)s
+107(-)h
+22(Administrati)h
+-1(on.)h
+177 687(u_cha.tex)s
+107(-)h
+22(Appendices.)h
+177 737(u_manual.tex)s
+41(-)h
+22(Main)h
+21(TeX)h
+21(file.)h
+744 846(u)s
+15(manual.tex)h
+1309 1169(sources)s
+1133 1219(admin)s
+1022 1341(environ.h)s
+388(environ.h)h
+853 1391(#define)s
+80(1)h
+177 1500(#define)s
+21(MAC)h
+21(0)h
+177 1550(#define)s
+21(SUN)h
+21(1)h
+177 1600(#define)s
+21(VMS)h
+21(0)h
+177 1650(#define)s
+21(PC)h
+43(0)h
+1575 1809(environ.h)s
+925 1859(SUN)s
+1021 1908(machin.h)s
+93(machin.c)h
+272 2081(.c)s
+248(sources)h
+322(.txt)h
+152(.tex)h
+749 2131(sources)s
+938(.ctx)h
+386 2180(.ctx)s
+414(.c)h
+1232 2303(fw)s
+75(fw.exe)h
+74(fw.xxx)h
+131(.xxx)h
+1560 2353(sources)s
+919 2835(scripts)s
+cmr10.300 sf
+177 279(The)s
+181(directory)h
+15(con)h
+-1(tains)h
+13(the)h
+116(\014les)h
+14(that)h
+14(mak)h
+-1(e)h
+12(up)h
+14(the)h
+496(.)h
+177 846(See)s
+15(the)h
+14(commen)h
+-1(t)h
+12(at)h
+13(the)h
+15(top)h
+13(of)h
+283(\014le)h
+13(for)h
+14(instructions)h
+14(on)h
+14(ho)h
+-1(w)h
+13(to)h
+14(t)h
+-1(yp)h
+1(eset)h
+15(and)h
+14(prin)h
+-1(t)h
+13(the)h
+658 896(.)s
+177 1169(The)s
+17(F)h
+-3(unnelW)h
+-3(eb)h
+17(source)h
+18(co)h
+1(de)h
+17(is)h
+17(en)h
+-1(tirely)h
+17(con)h
+-1(tained)h
+17(within)h
+16(the)h
+186(directory)h
+-3(.)h
+27(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+18(some)h
+177 1219(simple)s
+13(script)h
+14(\014les)h
+14(and)h
+14(mak)h
+-1(e\014les)h
+13(can)h
+14(b)h
+1(e)h
+15(found)h
+13(in)h
+13(the)h
+138(directory)h
+-3(.)h
+177 1292(F)s
+-3(unnelW)h
+-3(eb)h
+16(con)h
+-1(tains)h
+17(some)h
+16(mac)h
+-1(hine-dep)h
+1(enden)h
+-1(t)h
+17(comp)h
+1(onen)h
+-1(ts,)h
+16(so)h
+17(b)h
+1(efore)h
+17(compiling)h
+14(F)h
+-3(unnelW)h
+-3(eb,)h
+16(y)h
+-1(ou)h
+177 1341(need)s
+14(to)h
+12(sp)h
+1(ecify)h
+13(y)h
+-1(our)h
+13(mac)h
+-1(hine)h
+11(in)h
+12(the)h
+14(source)h
+14(\014le)h
+210(.)h
+16(T)h
+-3(o)h
+12(do)h
+12(this,)h
+13(edit)h
+12(the)h
+222(\014le)h
+13(and)h
+177 1391(set)s
+15(exactly)h
+14(one)h
+14(of)h
+13(the)h
+15(mac)h
+-1(hine)h
+12(name)h
+167(s)h
+13(to)h
+36(.)h
+17(F)h
+-3(or)h
+14(example,)h
+12(on)h
+14(the)h
+14(Sun)h
+14(y)h
+-1(ou)h
+14(should)h
+13(set:)h
+177 1759(There)s
+17(should)h
+15(b)h
+1(e)h
+16(little)h
+15(di\016cult)h
+-1(y)h
+14(compiling)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+15(for)h
+15(an)h
+-1(y)h
+15(of)h
+15(these)h
+17(platforms.)h
+21(If)h
+15(the)h
+16(mac)h
+-1(hine)h
+177 1809(on)s
+16(whic)h
+-1(h)h
+16(y)h
+-1(ou)h
+16(are)h
+16(compiling)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+16(is)h
+16(not)h
+16(one)h
+16(of)h
+16(the)h
+17(ones)h
+16(listed)h
+16(in)h
+16(the)h
+229(\014le,)h
+16(then)h
+177 1859(c)s
+-1(ho)h
+1(ose)h
+16(the)h
+17(closest)h
+16(one)h
+16(y)h
+-1(ou)h
+15(can.)h
+23(T)h
+-3(ry)h
+15(the)h
+97(if)h
+15(y)h
+-1(ou)h
+15(are)h
+16(running)h
+15(a)h
+15(non-Sun)h
+16(Unix.)h
+22(If)h
+16(y)h
+-1(ou)h
+15(run)h
+15(in)h
+-1(to)h
+177 1908(serious)s
+15(di\016culties,)h
+14(y)h
+-1(ou)h
+13(will)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(to)h
+14(customize)h
+202(and)h
+203(for)h
+14(y)h
+-1(our)h
+14(mac)h
+-1(hine.)h
+17(See)h
+15(the)h
+177 1958(commen)s
+-1(ts)h
+12(in)h
+14(these)h
+15(\014les)h
+14(for)h
+14(instructions)h
+14(on)h
+14(ho)h
+-1(w)h
+14(to)h
+13(do)h
+14(this.)h
+177 2031(Once)s
+15(y)h
+-1(ou)h
+14(ha)h
+-1(v)h
+-1(e)h
+13(sp)h
+1(eci\014ed)h
+16(a)h
+14(target)h
+14(mac)h
+-1(hine,)h
+12(compile)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+14(b)h
+-1(y)h
+13(p)h
+1(oin)h
+-1(ting)h
+13(y)h
+-1(our)h
+14(C)h
+14(compiler)h
+12(at)h
+14(all)h
+177 2081(the)s
+17(\\)h
+44(")h
+16(\014les)h
+17(in)h
+16(the)h
+186(directory)h
+-3(.)h
+27(The)h
+17(\\)h
+88(",)h
+15(and)h
+16(\\)h
+88(")h
+16(\014les)h
+17(do)h
+16(not)h
+16(participate)h
+17(in)h
+16(the)h
+177 2131(compilatio)s
+-1(n,)h
+12(but)h
+14(app)h
+1(ear)h
+15(in)h
+13(the)h
+182(directory)h
+15(b)h
+1(ecause)h
+15(they)h
+15(w)h
+-1(ere)h
+15(used)h
+15(to)h
+14(generate)h
+15(the)h
+15(\\)h
+88(")h
+177 2180(\014les.)s
+21(The)h
+15(\\)h
+88(")h
+13(\014les)h
+15(are)h
+15(included)h
+15(b)h
+-1(y)h
+73(\014les)h
+15(of)h
+14(the)h
+15(same)h
+14(name)h
+13(and)h
+15(do)h
+14(not)h
+15(need)h
+16(to)h
+14(b)h
+1(e)h
+15(compiled)h
+177 2230(separately)s
+-3(.)h
+18(Link)h
+14(the)h
+14(results.)h
+177 2303(The)s
+14(result)h
+14(of)h
+13(all)h
+12(this)h
+13(should)h
+13(b)h
+1(e)h
+14(a)h
+13(binary)h
+13(executable)h
+14(called)h
+57(,)h
+13(or)h
+145(,)h
+12(or)h
+157(where)h
+115(is)h
+177 2353(whatev)s
+-1(er)h
+16(\014le)h
+14(extension)h
+15(is)h
+15(appropriate)h
+15(on)h
+14(the)h
+15(target)h
+15(mac)h
+-1(hine.)h
+19(Clean)h
+15(up)h
+14(the)h
+183(directory)h
+15(b)h
+-1(y)h
+177 2403(deleting)s
+14(all)h
+13(the)h
+14(listing)h
+13(and)h
+14(ob)h
+2(ject)h
+14(\014les.)h
+177 2676(Once)s
+13(y)h
+-1(ou)h
+10(ha)h
+-1(v)h
+-1(e)h
+11(obtained)h
+11(a)h
+11(binary)h
+11(executable,)h
+12(y)h
+-1(ou)h
+11(should)h
+11(test)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(b)h
+1(efore)h
+12(maki)h
+-1(ng)h
+9(it)h
+11(a)h
+-1(v)h
+-2(ailabl)h
+-1(e)h
+177 2725(to)s
+14(users.)h
+19(T)h
+-3(o)h
+14(do)h
+13(this:)h
+228 2835(1.)s
+20(Set)h
+14(the)h
+15(default)h
+13(directory)h
+15(to)h
+14(b)h
+1(e)h
+14(the)h
+181(directory)h
+-3(.)h
+1032 2940(105)s
+14 2 769 846 r
+106 @eop
+107 @bop0
+107 @bop1
+cmsy10.300 sf
+239 2255(\017)s
+239 2338(\017)s
+239 2470(\017)s
+cmbx10.432 sf
+177 957(4.5)s
+70(Installing)h
+21(F)h
+-6(unnelW)h
+-6(eb)h
+cmtt10.300 sf
+571 174(master.fws)s
+768 224(R)s
+941(fwdir)h
+1667 356(fw)s
+22(+xmaster)h
+264 472(master.fws)s
+1796 571(results)s
+771 1072(fwdir)s
+1356 1172(scripts)s
+1414 1444(admin)s
+876 1494(/bin)s
+1517 1577(fw)s
+1304 1626(fw)s
+281 1726(login)s
+948 2090(/bin)s
+990 2520(ex*)s
+97(hi*)h
+cmti10.300 sf
+1716 1444(or)s
+177 1941(total)s
+2(ly)h
+14(self)h
+14(c)h
+-2(ontaine)h
+-2(d)h
+726 2040(F)s
+-3(unnelWeb)h
+14(User's)h
+12(Manual)h
+1106 2338(F)s
+-3(unnelWeb)h
+14(User's)h
+13(Manual)h
+163(F)h
+-3(unnelWeb)h
+281 2388(Hacker's)s
+14(Manual)h
+864 2570(F)s
+-3(unnelWeb)h
+18(User's)h
+16(Manual)h
+cmr10.300 sf
+228 42(2.)s
+20(Cop)h
+-1(y)h
+14(the)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+14(executable)h
+16(in)h
+-1(to)h
+14(the)h
+16(scripts)h
+16(directory)h
+16(\(or)h
+15(b)h
+1(e)h
+15(able)h
+15(to)h
+15(in)h
+-1(v)h
+-1(ok)h
+-1(e)h
+14(it)h
+14(from)h
+13(the)h
+281 91(scripts)s
+15(directory\).)h
+228 174(3.)s
+20(Edit)h
+17(the)h
+18(script)h
+238(.)h
+27(Lo)h
+1(cate)h
+18(the)h
+18(section)h
+18(called)h
+17(\\De\014ne)h
+18(Sym)h
+-1(b)h
+1(ol)h
+15(F)h
+-3(or)h
+17(the)h
+18(Ro)h
+1(ot)h
+16(T)h
+-3(est)h
+281 224(Directory")s
+16(and)h
+16(de\014ne)h
+18(the)h
+54(sym)h
+-1(b)h
+1(ol)h
+15(to)h
+16(p)h
+1(oin)h
+-1(t)h
+16(to)h
+16(the)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+16(ro)h
+1(ot)h
+16(directory)h
+127(.)h
+24(The)h
+281 274(examples)s
+13(in)h
+13(the)h
+15(comm)h
+-1(en)h
+-1(ts)h
+13(in)h
+13(the)h
+15(script)h
+14(should)h
+14(mak)h
+-1(e)h
+13(it)h
+13(clear)h
+14(what)h
+14(is)h
+14(required.)h
+228 356(4.)s
+20(In)h
+-1(v)h
+-1(ok)h
+-1(e)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(to)h
+13(execute)h
+16(the)h
+15(master)h
+13(test)h
+15(script)h
+15(with)h
+13(the)h
+15(comm)h
+-1(and)h
+12(line)h
+177 472(The)s
+250(script)h
+17(should)h
+15(run)h
+16(for)h
+16(a)h
+15(few)h
+16(min)h
+-1(utes.)h
+23(If)h
+15(all)h
+15(go)h
+1(es)h
+16(w)h
+-1(ell,)h
+15(y)h
+-1(ou)h
+16(will)h
+14(\014nd)h
+16(a)h
+16(di\013erences)h
+177 521(rep)s
+1(ort)h
+16(on)h
+15(y)h
+-1(our)h
+15(screen)h
+17(rep)h
+1(orting)h
+16(zero)h
+16(di\013erences.)h
+24(If)h
+14(this)h
+15(happ)h
+1(ens,)h
+16(then)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(has)h
+15(b)h
+1(een)h
+16(fully)h
+177 571(tested)s
+17(and)h
+15(is)h
+16(ready)h
+16(to)h
+15(b)h
+1(e)h
+16(made)h
+14(a)h
+-1(v)h
+-2(ailabl)h
+-1(e)h
+14(to)h
+16(users.)h
+24(Y)h
+-3(ou)h
+15(should)h
+15(delete)h
+16(all)h
+14(the)h
+16(\014les)h
+16(in)h
+15(the)h
+177 621(directory)s
+15(and)h
+14(pro)h
+1(ceed)h
+15(to)h
+14(the)h
+14(next)h
+15(section)h
+14(on)h
+14(installing)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(for)h
+14(users.)h
+177 695(If)s
+12(there)h
+14(w)h
+-1(ere)h
+13(one)h
+13(or)h
+13(more)h
+11(di\013erences,)h
+15(y)h
+-1(ou)h
+12(can)h
+12(either)h
+14(giv)h
+-1(e)h
+12(up)h
+12(and)h
+12(con)h
+-1(tact)h
+13(the)h
+13(author,)h
+13(or)h
+12(attempt)h
+12(to)h
+177 745(\014x)s
+15(the)h
+15(co)h
+1(de)h
+16(y)h
+-1(ourself.)h
+21(If)h
+14(y)h
+-1(ou)h
+14(decide)h
+16(to)h
+15(\014x)h
+14(the)h
+16(co)h
+1(de)h
+16(y)h
+-1(ourself,)h
+14(start)h
+15(with)h
+15(the)h
+15(di\013erences)h
+17(log)h
+14(\014le)h
+15(and)h
+177 795(follo)s
+-1(w)h
+12(y)h
+-1(our)h
+14(nose.)h
+18(Go)h
+1(o)h
+1(d)h
+14(luc)h
+-1(k!)h
+177 1072(A)s
+-1(t)h
+15(this)h
+15(stage)h
+15(y)h
+-1(ou)h
+14(should)h
+15(ha)h
+-1(v)h
+-1(e)h
+15(a)h
+138(directory)h
+15(tree)h
+16(somewhere)h
+15(in)h
+15(y)h
+-1(our)h
+14(\014le)h
+15(system.)h
+20(Its)h
+16(con)h
+-1(ten)h
+-1(ts)h
+177 1122(should)s
+16(b)h
+1(e)h
+16(almo)h
+-1(st)h
+14(iden)h
+-1(tical)h
+15(to)h
+16(the)h
+16(directory)h
+16(con)h
+-1(ten)h
+-1(ts)h
+17(sp)h
+1(eci\014ed)h
+17(earlier)h
+16(in)h
+15(this)h
+16(c)h
+-1(hapter)h
+16(except)h
+17(there)h
+177 1172(should)s
+14(no)h
+-1(w)h
+13(b)h
+1(e)h
+15(an)h
+13(additional)h
+13(binary)h
+13(executable)h
+15(\014le)h
+14(sitting)h
+13(in)h
+14(the)h
+181(directory)h
+-3(.)h
+177 1246(T)s
+-3(o)h
+13(mak)h
+-1(e)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(a)h
+-1(v)h
+-2(ailabl)h
+-1(e)h
+13(to)h
+13(users,)h
+15(y)h
+-1(ou)h
+14(should:)h
+228 1361(1.)s
+20(Mak)h
+-1(e)h
+14(the)h
+14(en)h
+-1(tire)h
+15(directory)h
+15(tree)h
+15(readable)h
+14(to)h
+14(all)h
+12(users.)h
+228 1444(2.)s
+20(Mo)h
+-1(v)h
+-1(e)h
+15(the)h
+16(binary)h
+15(executable)h
+17(from)h
+14(the)h
+16(scripts)h
+16(directory)h
+16(to)h
+16(the)h
+140(directory)h
+70(cop)h
+-1(y)h
+16(it)h
+15(to)h
+281 1494(somewhere)s
+14(con)h
+-1(v)h
+-1(enien)h
+-1(t)h
+14(suc)h
+-1(h)h
+15(as)h
+14(a)h
+115(directory)h
+-3(.)h
+228 1577(3.)s
+20(Set)h
+17(up)h
+16(a)h
+16(sym)h
+-1(b)h
+1(ol,)h
+15(path,)h
+17(or)h
+16(comm)h
+-1(and)h
+15(of)h
+15(some)h
+16(kind)h
+16(b)h
+-1(y)h
+16(the)h
+17(name)h
+15(of)h
+76(that)h
+16(\\p)h
+1(oin)h
+-1(ts")h
+16(to)h
+16(the)h
+281 1626(binary)s
+17(executable.)h
+30(If)h
+18(p)h
+1(ossible,)h
+18(set)h
+18(this)h
+18(up)h
+18(so)h
+17(that)h
+18(the)h
+79(sym)h
+-1(b)h
+1(ol)h
+16(is)h
+18(a)h
+-1(v)h
+-2(aila)h
+-1(ble)h
+16(to)h
+17(all)h
+17(users.)h
+281 1676(Alternativ)s
+-1(ely)h
+-3(,)h
+20(y)h
+-1(ou)h
+19(can)h
+20(inform)h
+17(in)h
+-1(terested)h
+22(users)h
+21(of)h
+19(ho)h
+-1(w)h
+19(they)h
+20(can)h
+20(add)h
+20(a)h
+19(comm)h
+-1(and)h
+18(to)h
+19(their)h
+404 1726(comm)s
+-1(and)h
+12(\014le)h
+14(to)h
+13(mak)h
+-1(e)h
+13(the)h
+14(comma)h
+-1(nd)h
+12(a)h
+-1(v)h
+-2(ailable)h
+12(to)h
+14(them.)h
+177 1841(If)s
+16(y)h
+-1(ou)h
+16(are)h
+17(short)h
+16(of)h
+16(disk)h
+16(space)h
+17(or)h
+17(ha)h
+-1(v)h
+-1(e)h
+16(a)h
+16(system)h
+16(that)h
+16(is)h
+16(stresse)h
+1(d)h
+18(in)h
+16(some)h
+15(other)h
+17(w)h
+-1(a)h
+-1(y)h
+-3(,)h
+15(it)h
+16(ma)h
+-1(y)h
+14(b)h
+1(e)h
+17(of)h
+177 1891(assistance)s
+17(to)h
+16(y)h
+-1(ou)h
+15(to)h
+15(kno)h
+-1(w)h
+15(that)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(has)h
+16(b)h
+1(een)h
+17(constructed)h
+18(so)h
+15(that)h
+16(its)h
+16(binary)h
+15(executable)h
+17(is)h
+549 1941(.)s
+19(The)h
+14(binary)h
+12(executable)h
+15(do)h
+1(es)h
+14(not)h
+14(rely)h
+13(on)h
+13(an)h
+-1(y)h
+13(other)h
+15(\014les)h
+13(to)h
+14(op)h
+1(erate.)h
+18(Nor)h
+14(do)h
+1(es)h
+177 1991(it)s
+13(care)h
+14(ab)h
+1(out)h
+13(its)h
+13(p)h
+1(osition)h
+13(in)h
+13(the)h
+13(\014le)h
+14(system.)h
+17(In)h
+13(fact,)h
+13(all)h
+12(that)h
+13(is)h
+13(really)h
+13(required)h
+14(to)h
+13(use)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(is)h
+177 2040(the)s
+13(binary)h
+11(executable)h
+13(and)h
+12(the)h
+490(.)h
+19(Th)h
+-1(us,)h
+12(if)h
+11(y)h
+-1(ou)h
+11(are)h
+13(short)h
+12(of)h
+12(disk)h
+11(space,)h
+13(y)h
+-1(ou)h
+177 2090(can)s
+16(mo)h
+-1(v)h
+-1(e)h
+15(the)h
+17(binary)h
+15(executable)h
+18(to)h
+15(y)h
+-1(our)h
+16(\\)h
+88(")h
+15(directory)h
+17(and)h
+16(delete)h
+17(the)h
+17(en)h
+-1(tire)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+16(tree.)h
+177 2140(Ho)s
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(making)h
+11(the)h
+15(tree)h
+15(a)h
+-1(v)h
+-2(ailabl)h
+-1(e)h
+13(to)h
+13(users)h
+16(is)h
+14(encouraged)h
+14(b)h
+1(ecause:)h
+281 2255(It)s
+14(allo)h
+-1(ws)h
+13(users)h
+15(to)h
+14(cop)h
+-1(y)h
+13(the)h
+15(tree)h
+15(and)h
+14(install)h
+13(it)h
+13(on)h
+14(another)h
+14(mac)h
+-1(hine)h
+13(without)h
+13(b)h
+1(othering)h
+14(y)h
+-1(ou.)h
+281 2338(It)s
+12(allo)h
+-1(ws)h
+12(users)h
+13(access)h
+15(to)h
+12(the)h
+13(T)h
+813 2347(E)s
+836 2338(X)s
+13(co)h
+1(de)h
+13(for)h
+12(the)h
+504(and)h
+13(the)h
+587 2388(.)s
+281 2470(It)s
+13(allo)h
+-1(ws)h
+11(users)h
+14(access)h
+14(to)h
+12(the)h
+13(regression)h
+14(test)h
+14(suite.)h
+18(This)h
+12(ma)h
+-1(y)h
+11(not)h
+12(seem)h
+13(imp)h
+1(ortan)h
+-1(t,)h
+10(but)h
+13(it)h
+12(could)h
+281 2520(b)s
+1(e)h
+16(v)h
+-1(ery)h
+15(con)h
+-1(v)h
+-1(enien)h
+-1(t)h
+16(for)h
+15(the)h
+16(user)h
+16(as)h
+15(the)h
+97(and)h
+96(\014les)h
+15(of)h
+15(the)h
+16(regression)h
+16(test)h
+16(suite)h
+16(con)h
+-1(tain)h
+281 2570(most)s
+15(of)h
+16(the)h
+16(examples)h
+16(from)h
+14(the)h
+502(.)h
+26(By)h
+16(making)h
+14(them)h
+15(a)h
+-1(v)h
+-2(ailable)h
+14(y)h
+-1(ou)h
+281 2620(will)s
+12(sa)h
+-1(v)h
+-1(e)h
+14(users)h
+16(the)h
+14(trouble)h
+14(of)h
+14(t)h
+-1(yping)h
+13(them)h
+13(in.)h
+177 2735(Finally)s
+-3(,)h
+15(y)h
+-1(ou)h
+16(should)h
+17(\014ll)h
+16(in)h
+16(and)h
+17(send)h
+17(o\013)h
+17(a)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(registration)h
+17(form.)h
+24(This)h
+17(allo)h
+-1(ws)h
+16(me)h
+15(to)h
+17(get)h
+17(a)h
+177 2785(handle)s
+17(on)h
+17(the)h
+17(size)h
+18(and)h
+17(needs)h
+18(of)h
+17(the)h
+17(user)h
+18(base,)h
+18(and)h
+17(y)h
+-1(ou)h
+16(to)h
+17(b)h
+1(e)h
+18(k)h
+-1(ept)h
+17(informed)h
+16(of)h
+16(new)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+177 2835(releases)s
+16(\(optional\).)h
+17(See)h
+14(Section)h
+15(5.4)h
+12(for)h
+14(more)h
+13(informati)h
+-1(on.)h
+1032 2940(106)s
+107 @eop
+108 @bop0
+108 @bop1
+cmbx10.432 sf
+177 42(4.6)s
+70(Prin)h
+-2(ting)h
+22(Man)h
+-2(uals)h
+177 643(4.7)s
+70(Installation)h
+21(Problem)h
+-1(s?)h
+cmtt10.300 sf
+684 257(u)s
+16(manual.tex)h
+92(h)h
+16(manual.tex)h
+1113 809(ross@spam.a)s
+-1(delai)h
+-1(de.ed)h
+-1(u.au)h
+cmti10.300 sf
+933 157(F)s
+-3(unnelWeb)h
+21(User's)h
+19(Manual)h
+146(F)h
+-3(unnelWeb)h
+21(Hacker's)h
+177 207(Manual)s
+699 332(F)s
+-3(unnelWeb)h
+13(Hacker's)h
+12(Manual)h
+1020 381(F)s
+-3(unnelWeb)h
+15(User's)h
+13(Manual)h
+1097 431(F)s
+-3(unnelWeb)h
+16(User's)h
+14(Manual)h
+cmr10.300 sf
+177 157(F)s
+-3(unnelW)h
+-3(eb)h
+19(comes)h
+19(with)h
+19(t)h
+-1(w)h
+-1(o)h
+19(man)h
+-1(ual)h
+-1(s,)h
+19(a)h
+530(and)h
+19(a)h
+312 207(.)s
+25(Instructions)h
+17(for)h
+16(ho)h
+-1(w)h
+15(to)h
+16(t)h
+-1(yp)h
+1(eset)h
+17(and)h
+16(prin)h
+-1(t)h
+16(these)h
+17(man)h
+-1(uals)h
+14(app)h
+1(ear)h
+16(at)h
+16(the)h
+16(top)h
+16(of)h
+15(the)h
+17(main)h
+177 257(T)s
+200 266(E)s
+223 257(X)s
+14(\014les)h
+15(for)h
+13(these)h
+15(man)h
+-1(uals)h
+281(and)h
+272(.)h
+177 332(There)s
+12(is)h
+11(no)h
+11(need)h
+12(to)h
+11(prin)h
+-1(t)h
+11(the)h
+542(unless)h
+11(y)h
+-1(ou)h
+11(in)h
+-1(tend)h
+11(to)h
+11(mo)h
+1(dify)h
+9(F)h
+-3(unnelW)h
+-3(eb.)h
+177 381(Ho)s
+-1(w)h
+-1(ev)h
+-1(er,)h
+13(y)h
+-1(ou)h
+13(should)h
+13(mak)h
+-1(e)h
+12(a)h
+13(few)h
+13(copies)h
+14(of)h
+13(the)h
+507(a)h
+-1(v)h
+-2(ailable)h
+11(for)h
+13(users,)h
+15(or)h
+13(at)h
+177 431(least)s
+15(let)h
+14(them)h
+13(kno)h
+-1(w)h
+14(where)h
+15(the)h
+15(T)h
+765 440(E)s
+788 431(X)s
+14(source)h
+16(for)h
+14(the)h
+511(is)h
+14(k)h
+-1(ept)h
+15(so)h
+14(that)h
+14(they)h
+177 481(can)s
+14(t)h
+-1(yp)h
+1(eset)h
+16(and)h
+13(prin)h
+-1(t)h
+14(it)h
+14(themselv)h
+-1(es.)h
+177 759(If)s
+19(y)h
+-1(ou)h
+19(run)h
+19(in)h
+-1(to)h
+19(an)h
+-1(y)h
+19(problems)h
+18(installing)h
+17(F)h
+-3(unnelW)h
+-3(eb,)h
+20(please)h
+20(write)h
+19(a)h
+19(short)h
+20(rep)h
+1(ort)h
+20(describing)h
+20(the)h
+177 809(problem)s
+14(and)h
+16(mail)h
+13(it)h
+15(to)h
+15(the)h
+16(author)h
+16(Ross)h
+15(William)h
+-1(s)h
+14(\()h
+546(\).)h
+22(I)h
+15(ma)h
+-1(y)h
+14(not)h
+15(b)h
+1(e)h
+177 859(able)s
+15(to)h
+15(help)h
+15(y)h
+-1(ou)h
+14(with)h
+15(it)h
+14(imm)h
+-1(ediately)h
+-4(,)h
+13(but)h
+15(I)h
+15(certainly)h
+15(w)h
+-1(an)h
+-1(t)h
+15(to)h
+14(kno)h
+-1(w)h
+15(that)h
+15(a)h
+14(problem)h
+14(exists)h
+16(so)h
+15(that)h
+177 909(it)s
+14(can)h
+14(b)h
+1(e)h
+14(corrected)h
+16(in)h
+14(future)h
+14(releases)h
+16(of)h
+13(F)h
+-3(unnelW)h
+-3(eb.)h
+1032 2940(107)s
+14 2 709 257 r
+14 2 1059 257 r
+108 @eop
+109 @bop0
+109 @bop1
+cmr10.300 sf
+1032 2940(108)s
+109 @eop
+110 @bop0
+cmbx10.622 sf
+[<0C000000C00F800007C00FF8007FC00FFFFFFF800FFFFFFF800FFFFFFF000FFFFFFE00
+0FFFFFFC000FFFFFF0000FFFFFE0000FFFFF80000FFFFE00000FFFF800000F800000000F
+800000000F800000000F800000000F800000000F800000000F800000000F800000000F81
+FF00000F8FFFE0000FBFFFF8000FFE03FE000FF001FF800FC000FFC00F80007FC00F0000
+7FE00700007FF00000003FF00000003FF80000003FF80000003FF80000003FFC0000003F
+FC0600003FFC3F80003FFC7FE0003FFCFFE0003FFCFFF0003FFCFFF0003FFCFFF0003FFC
+FFF0003FF8FFE0003FF8FFE0003FF87FC0007FF07F00007FF07C00007FE03E0000FFE01F
+0001FFC01FC003FF800FF00FFE0003FFFFFC0001FFFFF000007FFFC000000FFC0000>
+40 57 -5 55 49] 53 dc
+cmbx10.432 sf
+[<1C007F00FF80FF80FFC0FFC0FFC07FC01CC000C000C001C0018001800380070006000E
+001C0038003000>
+16 21 -5 41 19] 39 dc
+110 @bop1
+cmtt10.300 sf
+1620 1483(.fw)s
+cmti10.300 sf
+1303 2735(you)s
+cmbx10.622 sf
+177 379(Chapter)s
+34(5)h
+cmbx10.746 sf
+177 613(F)s
+-10(unnelW)h
+-10(eb)h
+41(Administration)h
+cmbx10.300 sf
+295 2161(GNU)s
+19(license:)h
+295 2386(P)s
+-1(ortabil)h
+-1(i)h
+-1(t)h
+-2(y:)h
+1687 2486([ANSI])s
+cmbx10.432 sf
+177 881(5.1)s
+70(In)h
+-2(tro)h
+2(duction)h
+177 1315(5.2)s
+70(The)h
+22(User's)h
+23(Com)h
+-1(m)h
+-2(i)h
+-1(tm)h
+-3(e)h
+-1(n)h
+-2(t)h
+21(T)h
+-6(o)h
+24(F)h
+-6(unnelW)h
+-6(eb)h
+cmr10.300 sf
+177 999(Whether)s
+21(a)h
+19(computer)h
+19(program)h
+18(is)h
+19(useful)h
+20(dep)h
+1(ends)h
+21(not)h
+20(just)h
+19(on)h
+19(the)h
+21(functionalit)h
+-1(y)h
+18(pro)h
+-1(vided)h
+19(b)h
+-1(y)h
+19(the)h
+177 1049(program,)s
+13(but)h
+15(also)h
+15(on)h
+15(the)h
+15(totalit)h
+-1(y)h
+14(of)h
+14(the)h
+16(culture)h
+16(and)h
+14(services)h
+17(surrounding)h
+15(it)h
+15(suc)h
+-1(h)h
+15(as)h
+15(license)h
+16(costs,)h
+177 1098(the)s
+19(qualit)h
+-1(y)h
+17(of)h
+18(do)h
+1(cumen)h
+-1(tation,)h
+17(presenc)h
+1(e)h
+20(of)h
+18(a)h
+18(standard)h
+19(and)h
+18(so)h
+18(on.)h
+31(This)h
+19(c)h
+-1(hapter)h
+19(addresses)h
+20(these)h
+177 1148(issues)s
+15(from)h
+12(a)h
+14(user)h
+15(p)h
+1(ersp)h
+1(ectiv)h
+-1(e.)h
+177 1434(One)s
+20(of)h
+19(the)h
+21(problems)h
+18(that)h
+20(migh)h
+-2(t)h
+18(prev)h
+-1(en)h
+-1(t)h
+21(p)h
+1(oten)h
+-1(tial)h
+19(users)h
+21(from)h
+17(using)h
+20(F)h
+-3(unnelW)h
+-3(eb)h
+19(is)h
+19(the)h
+20(lev)h
+-1(el)h
+19(of)h
+177 1483(commi)s
+-1(tm)h
+-1(en)h
+-1(t)h
+15(that)h
+17(it)h
+16(requires.)h
+27(As)h
+17(so)h
+1(on)h
+17(as)h
+17(the)h
+17(user)h
+18(starts)h
+17(creating)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+98(\014les,)h
+17(the)h
+18(user)h
+177 1533(b)s
+1(ecomes)h
+14(dep)h
+1(enden)h
+-1(t)h
+15(on)h
+13(the)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(program,)h
+12(as)h
+13(the)h
+14(\014les)h
+14(so)h
+13(created)h
+15(will)h
+12(b)h
+1(ecome)h
+14(unmanageabl)h
+-1(e)h
+177 1583(if)s
+16(the)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(program)h
+15(w)h
+-1(ere)h
+17(to)h
+17(b)h
+1(ecome)h
+16(una)h
+-1(v)h
+-2(ailable)h
+14(for)h
+17(some)h
+15(reason.)h
+27(There)h
+17(are)h
+17(a)h
+17(n)h
+-1(um)h
+-1(b)h
+1(er)h
+15(of)h
+177 1633(w)s
+-1(a)h
+-1(ys)h
+14(in)h
+14(whic)h
+-1(h)h
+15(computer)h
+14(programs)h
+13(can)h
+15(b)h
+1(ecome)h
+14(una)h
+-1(v)h
+-2(ailable,)h
+12(including)h
+14(op)h
+1(erating)h
+14(system)h
+15(upgrades,)h
+177 1683(cop)s
+-1(yrigh)h
+-1(t)h
+12(problems,)h
+11(inabilit)h
+-1(y)h
+10(to)h
+11(\014x)h
+12(bugs,)h
+12(or)h
+12(just)h
+13(the)h
+12(inabilit)h
+-1(y)h
+10(of)h
+11(the)h
+13(program)h
+10(to)h
+12(b)h
+1(e)h
+13(p)h
+1(orted)h
+13(to)h
+12(a)h
+11(new)h
+177 1732(target)s
+15(platform)h
+-1(.)h
+177 1809(The)s
+18(fact)h
+17(is)h
+17(that)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+16(de\014nes)h
+19(an)h
+17(input)h
+17(language)h
+17(and)h
+17(that)h
+17(curren)h
+-1(tly)h
+18(there)h
+19(is)h
+17(only)h
+16(one)h
+18(im-)h
+177 1859(plemen)s
+-1(tation)h
+17(of)h
+18(the)h
+20(language.)h
+32(Users)h
+20(will)h
+17(only)h
+18(write)h
+20(programs)h
+17(using)h
+19(that)h
+19(language)h
+17(if)h
+18(they)h
+20(feel)h
+177 1908(comfortable)s
+12(ab)h
+1(out)h
+14(the)h
+15(a)h
+-1(v)h
+-2(aila)h
+-1(bili)h
+-1(t)h
+-1(y)h
+12(of)h
+13(its)h
+14(implem)h
+-1(en)h
+-1(tatio)h
+-1(n.)h
+177 1985(I)s
+16(ha)h
+-1(v)h
+-1(e)h
+16(b)h
+1(een)h
+18(critically)h
+15(a)h
+-1(w)h
+-1(are)h
+16(of)h
+16(these)h
+18(issues)h
+17(throughout)h
+16(the)h
+17(dev)h
+-1(elopmen)h
+-1(t)h
+15(of)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+16(and)h
+16(ha)h
+-1(v)h
+-1(e)h
+177 2034(tak)s
+-1(en)h
+18(ev)h
+-1(ery)h
+18(p)h
+1(ossible)h
+18(step)h
+19(to)h
+18(mak)h
+-1(e)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+17(a)h
+18(solid)h
+16(base)h
+19(on)h
+-1(to)h
+17(whic)h
+-1(h)h
+18(to)h
+17(build)h
+17(programs.)h
+28(The)h
+177 2084(follo)s
+-1(wing)h
+11(p)h
+1(oin)h
+-1(ts)h
+14(describ)h
+1(e)h
+16(the)h
+14(actions)h
+14(I)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(tak)h
+-1(en.)h
+599 2161(F)s
+-3(unnelW)h
+-3(eb's)h
+16(C)h
+16(source)h
+18(co)h
+1(de)h
+17(has)h
+17(b)h
+1(een)h
+17(released)h
+18(under)h
+17(GNU)h
+17(General)h
+295 2210(Public)s
+13(License)h
+14(V)h
+-3(ersion)h
+13(2.)h
+18(This)h
+13(means)h
+12(that)h
+13(the)h
+14(source)h
+14(co)h
+1(de)h
+14(to)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(will)h
+12(alw)h
+-1(a)h
+-1(ys)h
+295 2260(b)s
+1(e)h
+18(a)h
+-1(v)h
+-2(aila)h
+-1(ble)h
+15(to)h
+17(an)h
+-1(y)h
+-1(one)h
+16(who)h
+17(w)h
+-1(an)h
+-1(ts)h
+17(it.)h
+26(The)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(program)h
+15(can)h
+17(nev)h
+-1(er)h
+18(b)h
+1(e)h
+18(tak)h
+-1(en)h
+295 2310(a)s
+-1(w)h
+-1(a)h
+-1(y)h
+13(from)h
+12(y)h
+-1(ou.)h
+558 2386(F)s
+-3(unnelW)h
+-3(eb)h
+17(has)h
+17(b)h
+1(een)h
+18(designed)h
+17(and)h
+17(written)h
+17(to)h
+17(b)h
+1(e)h
+17(extremely)h
+17(p)h
+1(ortable.)h
+295 2436(First,)s
+17(all)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+16(really)h
+16(do)h
+1(es)h
+17(is)h
+16(read)h
+17(and)h
+17(write)h
+16(text)h
+17(\014les.)h
+26(This)h
+17(mak)h
+-1(es)h
+15(it)h
+16(easy)h
+17(to)h
+295 2486(mak)s
+-1(e)h
+9(p)h
+1(ortable.)h
+17(Second,)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+10(is)h
+10(written)h
+10(in)h
+10(the)h
+11(C)h
+10(programm)h
+-1(i)h
+-1(ng)h
+8(language)h
+295 2536(with)s
+15(p)h
+1(ortabilit)h
+-1(y)h
+13(as)h
+15(a)h
+14(ma)h
+2(jor)h
+14(design)h
+14(goal.)h
+20(Third,)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+15(has)h
+14(already)h
+15(b)h
+1(een)h
+16(p)h
+1(orted)h
+295 2586(to)s
+13(four)h
+14(p)h
+1(opular)h
+12(platforms:)h
+16(SunOS,)h
+14(V)h
+-5(AX)h
+14(VMS,)h
+13(PC,)h
+13(and)h
+13(Macin)h
+-1(tosh)h
+13(and)h
+14(it)h
+13(should)h
+13(not)h
+295 2635(pro)s
+-1(v)h
+-1(e)h
+16(hard)h
+16(to)h
+15(mo)h
+-1(v)h
+-1(e)h
+14(it)h
+15(to)h
+16(others.)h
+24(F)h
+-3(ourth,)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(comes)h
+16(with)h
+15(a)h
+15(h)h
+-1(uge)h
+16(automated)h
+295 2685(regression)s
+16(test)h
+15(suite.)h
+20(This)h
+14(mak)h
+-1(es)h
+13(it)h
+14(easy)h
+15(to)h
+14(pinp)h
+1(oin)h
+-1(t)h
+13(problems)h
+13(when)h
+15(it)h
+14(is)h
+14(mo)h
+-1(v)h
+-1(ed)h
+13(to)h
+14(a)h
+295 2735(new)s
+13(platform.)h
+16(P)h
+-1(ortabilit)h
+-1(y)h
+11(is)h
+12(imp)h
+1(ortan)h
+-1(t)h
+11(b)h
+1(ecause,)h
+15(ev)h
+-1(en)h
+13(if)h
+88(are)h
+13(not)h
+13(using)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+295 2785(on)s
+17(some)h
+15(funn)h
+-1(y)h
+16(platform,)h
+15(y)h
+-1(ou)h
+16(ma)h
+-1(y)h
+14(w)h
+-1(an)h
+-1(t)h
+17(to)h
+16(send)h
+17(a)h
+17(computer)h
+16(program)h
+15(written)h
+17(using)h
+295 2835(F)s
+-3(unnelW)h
+-3(eb)h
+14(to)h
+13(someone)h
+14(who)h
+13(do)h
+1(es.)h
+1032 2940(109)s
+110 @eop
+111 @bop0
+111 @bop1
+cmbx10.432 sf
+177 1077(5.3)s
+70(Do)h
+2(cum)h
+-1(e)h
+-1(n)h
+-2(tation)h
+177 1990(5.4)s
+70(Registration)h
+177 2494(5.5)s
+70(Supp)h
+2(ort)h
+cmbx10.300 sf
+295 42(Qualit)s
+-1(y:)h
+295 216(Do)s
+1(cumen)h
+-1(tati)h
+-1(on:)h
+295 540(Standardi)s
+-1(zatio)h
+-1(n:)h
+177 2156(Figure)s
+14(4)h
+cmti10.300 sf
+1746 216(F)s
+-3(un-)h
+295 266(nelWeb)s
+19(Hacker's)h
+18(Manual)h
+1123 1477(F)s
+-3(unnelWeb)h
+15(User's)h
+13(Manual)h
+266 1602(F)s
+-3(unnelWeb)h
+19(Hacker's)h
+18(Manual)h
+419 2835(months)s
+238(unp)h
+-2(aid)h
+cmtt10.300 sf
+264 1311("FunnelWeb)s
+20(User's)h
+64(Manual":)h
+20(Tutorial,)h
+20(Hints,)h
+21(Reference)h
+20(Manual.)h
+264 1360("FunnelWeb)s
+20(Hacker's)h
+20(Manual":)h
+20(Notes)h
+21(on)h
+21(Design)h
+21(and)h
+21(Implementation)h
+-1(.)h
+532 2231(ross@spam.ade)s
+-1(laide)h
+-1(.edu.)h
+-1(au)h
+cmr10.300 sf
+492 42(The)s
+20(F)h
+-3(unnelW)h
+-3(eb)h
+18(source)h
+21(co)h
+1(de)h
+20(is)h
+19(high)h
+18(qualit)h
+-1(y)h
+18(co)h
+1(de.)h
+35(Although)h
+19(it)h
+18(has)h
+20(not)h
+295 91(b)s
+1(een)h
+13(formall)h
+-1(y)h
+10(dev)h
+-1(elop)h
+1(ed)h
+12(under)h
+12(an)h
+-1(y)h
+11(particular)h
+12(co)h
+1(ding)h
+11(standard,)h
+12(it)h
+11(is)h
+12(w)h
+-1(ell)h
+11(designed)h
+12(and)h
+295 141(do)s
+1(cumen)h
+-1(ted.)h
+18(Design)h
+14(decisions)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(not)h
+14(b)h
+1(een)h
+15(tak)h
+-1(en)h
+14(ligh)h
+-1(tly)h
+-3(.)h
+652 216(F)s
+-3(unnelW)h
+-3(eb)h
+16(is)h
+16(w)h
+-1(ell)h
+15(do)h
+1(cumen)h
+-1(ted)h
+16(b)h
+-1(y)h
+16(this)h
+17(man)h
+-1(ual)h
+14(and)h
+16(b)h
+-1(y)h
+16(the)h
+756 266(.)s
+29(This)h
+17(is)h
+17(imp)h
+1(ortan)h
+-1(t)h
+16(b)h
+1(ecause)h
+19(it)h
+17(means)h
+16(that)h
+18(if)h
+16(y)h
+-1(ou)h
+17(w)h
+-1(an)h
+-1(t)h
+17(to)h
+295 316(send)s
+13(someone)h
+11(a)h
+11(program)h
+10(written)h
+12(using)h
+12(F)h
+-3(unnelW)h
+-3(eb,)h
+11(y)h
+-1(ou)h
+11(can)h
+12(simply)h
+9(p)h
+1(oin)h
+-1(t)h
+11(them)h
+11(to)h
+12(this)h
+295 366(man)s
+-1(ual)h
+8(rather)h
+12(than)h
+11(ha)h
+-1(ving)h
+9(to)h
+10(explain)h
+10(it)h
+11(all)h
+9(y)h
+-1(ourself.)h
+17(It)h
+10(is)h
+11(also)h
+10(comforting)h
+8(for)h
+11(managers)h
+295 415(who)s
+14(are)h
+15(con)h
+-1(trolling)h
+13(source)h
+15(co)h
+1(de)h
+15(to)h
+14(kno)h
+-1(w)h
+14(that)h
+14(the)h
+15(format)h
+12(in)h
+14(whic)h
+-1(h)h
+14(the)h
+14(source)h
+16(co)h
+1(de)h
+15(is)h
+295 465(written)s
+15(is)h
+13(w)h
+-1(ell-do)h
+1(cumen)h
+-1(ted.)h
+657 540(Users)s
+15(who)h
+13(create)h
+14(source)h
+15(\014les)h
+13(using)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(are)h
+14(not)h
+13(only)h
+12(com-)h
+295 590(mitting)s
+15(to)h
+18(the)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+16(program;)h
+17(they)h
+18(are)h
+18(also)h
+17(in)h
+-1(v)h
+-1(esting)h
+17(in)h
+17(the)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+17(lan-)h
+295 640(guage.)s
+22(If)h
+14(F)h
+-3(unnelW)h
+-3(eb's)h
+15(language)h
+14(c)h
+-1(hanges)h
+16(radically)h
+13(for)h
+15(some)h
+14(reason,)h
+16(then)h
+16(this)h
+15(in)h
+-1(v)h
+-1(est-)h
+295 690(men)s
+-1(t)h
+14(b)h
+-1(y)h
+15(users)h
+16(will)h
+13(b)h
+1(e)h
+16(undermined.)h
+20(T)h
+-3(o)h
+14(protect)h
+16(this)h
+15(in)h
+-1(v)h
+-1(estmen)h
+-1(t,)h
+14(I)h
+15(in)h
+-1(tend)h
+15(to)h
+14(main)h
+-1(tain)h
+295 740(an)s
+14(\\o\016cial")h
+12(v)h
+-1(ersion)h
+15(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(whose)h
+14(language)h
+13(will)h
+13(not)h
+14(c)h
+-1(hange)h
+15(radically)h
+-3(,)h
+12(at)h
+13(least)h
+295 789(not)s
+14(in)h
+14(a)h
+13(non)h
+14(bac)h
+-1(kw)h
+-1(ard)h
+14(compatibl)h
+-1(e)h
+13(manner.)h
+177 864(It)s
+17(is)h
+16(m)h
+-1(y)h
+15(hop)h
+1(e)h
+16(that)h
+17(the)h
+17(com)h
+-1(binatio)h
+-1(n)h
+15(of)h
+16(these)h
+17(factors)h
+17(will)h
+15(alleviate)h
+15(an)h
+-1(y)h
+16(fears)h
+17(that)h
+17(users)h
+18(ma)h
+-1(y)h
+14(ha)h
+-1(v)h
+-1(e)h
+177 914(ab)s
+1(out)h
+14(comm)h
+-1(itting)h
+11(their)h
+15(source)h
+15(\014les)h
+14(to)h
+14(F)h
+-3(unnelW)h
+-3(eb.)h
+177 1194(The)s
+14(follo)h
+-1(wing)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(do)h
+1(cumen)h
+-1(tation)h
+13(is)h
+14(a)h
+-1(v)h
+-2(aila)h
+-1(ble:)h
+177 1477(Ev)s
+-1(ery)h
+-1(one)h
+14(in)h
+-1(v)h
+-1(olv)h
+-1(ed)h
+12(with)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(should)h
+13(read)h
+14(the)h
+493(.)h
+19(It)h
+13(con)h
+-1(tains)h
+13(ev)h
+-1(ery-)h
+177 1527(thing)s
+14(y)h
+-1(ou)h
+13(need)h
+15(to)h
+14(kno)h
+-1(w)h
+13(ab)h
+1(out)h
+14(ho)h
+-1(w)h
+13(to)h
+14(use)h
+15(F)h
+-3(unnelW)h
+-3(eb.)h
+17(In)h
+14(fact,)h
+13(y)h
+-1(ou)h
+14(are)h
+14(reading)h
+14(it)h
+13(no)h
+-1(w!)h
+177 1602(The)s
+566(is)h
+17(for)h
+17(those)h
+18(who)h
+17(w)h
+-1(an)h
+-1(t)h
+17(to)h
+17(install,)h
+17(mo)h
+1(dif)h
+-1(y)h
+-3(,)h
+16(\014x,)h
+17(\014ddle)h
+18(with,)h
+17(and)h
+177 1652(generally)s
+14(hac)h
+-1(k)h
+14(the)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(C)h
+14(source)h
+15(co)h
+1(de.)h
+177 1727(Both)s
+16(of)h
+14(these)h
+17(man)h
+-1(uals)h
+13(are)h
+16(shipp)h
+1(ed)h
+16(with)h
+14(the)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+15(distribution)h
+15(kit,)h
+14(and)h
+15(should)h
+15(b)h
+1(e)h
+16(a)h
+-1(v)h
+-2(ailabl)h
+-1(e)h
+177 1777(on)s
+16(y)h
+-1(our)h
+15(mac)h
+-1(hine)h
+14(in)h
+16(the)h
+16(form)h
+14(of)h
+15(LaT)h
+-3(eX)h
+15(text)h
+17(\014les.)h
+23(If)h
+16(y)h
+-1(ou)h
+15(cannot)h
+16(\014nd)h
+16(them,)h
+15(y)h
+-1(ou)h
+15(can)h
+16(obtain)h
+15(them)h
+177 1827(from)s
+12(the)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(FTP)h
+14(arc)h
+-1(hiv)h
+-1(e)h
+14(\(see)h
+16(Section)h
+14(5.11\).)h
+177 2106(If)s
+13(y)h
+-1(ou)h
+13(install)h
+13(or)h
+13(use)h
+15(F)h
+-3(unnelW)h
+-3(eb,)h
+12(please)h
+14(register)h
+15(b)h
+-1(y)h
+13(\014lling)h
+12(in)h
+13(and)h
+14(returning)h
+14(the)h
+14(registration)h
+13(form)h
+12(in)h
+352 2156(.)s
+18(F)h
+-3(eel)h
+14(free)h
+15(to)h
+13(expand)h
+15(the)h
+14(form)h
+12(if)h
+13(there)h
+15(is)h
+14(not)h
+14(enough)h
+14(ro)h
+1(om.)h
+177 2231(Email)s
+15(the)h
+18(form)h
+16(to)h
+564(,)h
+16(or)h
+17(snail)h
+17(mail)h
+15(it)h
+17(to)h
+17(Ross)h
+17(William)h
+-2(s,)h
+17(16)h
+16(Lerwic)h
+-1(k)h
+177 2281(Av)s
+-1(en)h
+-1(ue,)h
+12(Hazelw)h
+-1(o)h
+1(o)h
+1(d)h
+11(P)h
+-1(ark)h
+11(5066,)h
+10(Australia.)h
+17(Y)h
+-3(ou)h
+11(ma)h
+-1(y)h
+9(wish)h
+11(to)h
+11(mak)h
+-1(e)h
+9(a)h
+11(con)h
+-1(tribution)h
+11(when)h
+11(y)h
+-1(ou)h
+11(register.)h
+177 2331(See)s
+15(Section)h
+14(5.5)h
+13(for)h
+14(more)h
+13(inform)h
+-1(ation.)h
+177 2610(F)s
+-3(unnelW)h
+-3(eb)h
+13(is)h
+14(released)h
+15(\\as)h
+14(is")h
+13(under)h
+15(a)h
+13(GNU)h
+14(license,)h
+14(and)h
+14(no)h
+13(formal)h
+12(supp)h
+1(ort)h
+14(is)h
+14(a)h
+-1(v)h
+-2(ailabl)h
+-1(e.)h
+17(Y)h
+-3(ou)h
+13(ha)h
+-1(v)h
+-1(e)h
+177 2660(the)s
+20(righ)h
+-1(t)h
+18(to)h
+19(mak)h
+-1(e)h
+17(c)h
+-1(hanges)h
+20(to)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+18(and)h
+19(to)h
+19(use)h
+20(the)h
+19(mo)h
+1(di\014ed)h
+18(v)h
+-1(ersions)h
+19(created)h
+21(b)h
+-1(y)h
+18(random)h
+177 2710(programm)s
+-1(ers.)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(this)h
+14(is)h
+14(discouraged)h
+14(\(see)h
+15(Section)h
+15(5.9\).)h
+177 2785(In)s
+16(fact)h
+16(the)h
+17(supp)h
+1(ort)h
+17(that)h
+16(is)h
+16(most)h
+15(needed)h
+17(is)h
+16(y)h
+-1(our)h
+16(\014nancial)h
+15(supp)h
+1(ort)h
+17(for)h
+16(the)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+16(dev)h
+-1(elop)h
+1(ers!)h
+177 2835(It)s
+17(has)h
+17(tak)h
+-1(en)h
+165(of)h
+17(full-tim)h
+-2(e)h
+153(w)h
+-1(ork)h
+16(to)h
+17(bring)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+17(to)h
+16(y)h
+-1(ou)h
+17(in)h
+17(its)h
+17(curren)h
+-1(t)h
+18(form.)h
+26(I)h
+1032 2940(110)s
+111 @eop
+112 @bop0
+cmtt8.300 sf
+[<FE7CFEFE0FCE0F840F000E000E000E000E000E000E000E00FFF0FFF0>
+16 14 -1 13 18] 114 dc
+[<FDF0FFF81F1E1E0E1C0F1C071C071C071C071C0F1E0E1F1C1FF81DE01C001C001C001C
+001C00FF80FF80>
+16 21 0 13 18] 112 dc
+[<3F807FE070F0207000700FF03FF07870F070E070E070F0F07FFE1F3E>
+16 14 -2 13 18] 97 dc
+[<FB8E00FFFF803EFB803CF38038E38038E38038E38038E38038E38038E38038E38038E3
+80FEFBE0FEFBE0>
+24 14 1 13 18] 109 dc
+[<FCFC00FCFC001C1C001C1C001C1C001C1C001C1C001C1C001C1C001C1C001C1C001C3C
+000FFF8007DF80>
+24 14 0 13 18] 117 dc
+cmr8.300 sf
+[<FFC03F801E001C000F00080007001000078030000380200001C0400001E0400000E080
+0000F1800000710000003A0000003E0000001C0000001C0000001C0000001C0000001C00
+00001C0000001C0000001C0000001C000000FF8000>
+32 23 0 22 26] 89 dc
+112 @bop1
+cmbx10.300 sf
+650 2279(Figure)s
+14(4)h
+cmtt8.300 sf
+1179 2088(ross@sp)s
+-1(am.)h
+-1(ad)h
+-1(ela)h
+-1(ide)h
+-1(.ed)h
+-1(u.a)h
+-1(u)h
+cmr10.300 sf
+825 2279(:)s
+18(The)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(registration)h
+14(form.)h
+1032 2940(111)s
+cmr8.300 sf
+343 2038(T)s
+-3(o)h
+433(register)h
+431(as)h
+432(a)h
+281 2088(F)s
+-3(unnelW)h
+-3(eb)h
+13(user,)h
+15(please)h
+14(\014ll)h
+14(in)h
+15(this)h
+14(form)h
+14(and)h
+14(email)h
+13(it)h
+15(to)h
+458(,)h
+14(or)h
+14(snail)h
+14(mail)h
+281 2138(it)s
+13(to)h
+12(Ross)h
+13(Williams,)h
+11(16)h
+13(Lerwic)h
+-1(k)h
+12(Av)h
+-1(en)h
+-1(ue,)h
+12(Hazelw)h
+-1(o)h
+1(o)h
+1(d)h
+11(P)h
+-1(ark)h
+12(5066,)h
+12(Australia.)h
+18(Y)h
+-3(ou)h
+13(ma)h
+-1(y)h
+12(wish)h
+12(to)h
+13(mak)h
+-1(e)h
+11(a)h
+281 2188(con)s
+-1(tribu)h
+-1(tion)h
+9(when)h
+11(y)h
+-1(ou)h
+11(register.)h
+13(See)h
+11(Section)h
+9(5.5)h
+11(for)h
+11(more)h
+10(informatio)h
+-1(n.)h
+cmtt10.300 sf
+264 602(+-------------)s
+-1(-----)h
+-1(----F)h
+-1(unnel)h
+-1(Web)h
+20(Registrati)h
+-1(on)h
+20(Form--------)h
+-1(-----)h
+-1(----)h
+-1(-----)h
+-1(+)h
+264 652(|)s
+22(1.)h
+21(Date:)h
+1350(|)h
+264 702(|)s
+1547(|)h
+264 751(|)s
+22(2.)h
+21(Title)h
+21(and)h
+21(name:)h
+1132(|)h
+264 801(|)s
+1547(|)h
+264 851(|)s
+22(3.)h
+21(Internet)h
+20(email)h
+21(address:)h
+957(|)h
+264 901(|)s
+1547(|)h
+264 951(|)s
+22(4.)h
+21(Snail)h
+21(mail)h
+21(address:)h
+1044(|)h
+264 1000(|)s
+1547(|)h
+264 1050(|)s
+22(5.)h
+21(Work)h
+21(phone)h
+21(number)h
+21(\(country,ar)h
+-1(ea,n)h
+-1(umber)h
+-1(\):)h
+586(|)h
+264 1100(|)s
+1547(|)h
+264 1150(|)s
+22(6.)h
+21(Which)h
+21(category)h
+20(of)h
+22(FunnelWeb)h
+20(user)h
+20(best)h
+21(describes)h
+20(you?)h
+326(|)h
+264 1200(|)s
+153(Latent)h
+86(-)h
+21(Installed)h
+20(FunnelWeb,)h
+20(but)h
+21(don't)h
+21(intend)h
+20(to)h
+22(use)h
+21(it.)h
+86(|)h
+264 1250(|)s
+153(Beginner)h
+42(-)h
+21(Haven't)h
+21(used)h
+21(FunnelWeb)h
+19(much)h
+21(yet;)h
+21(have)h
+21(an)h
+22(open)h
+21(mind.)h
+20(|)h
+264 1299(|)s
+153(Casual)h
+86(-)h
+21(Use)h
+21(FunnelWeb)h
+20(occasionally.)h
+542(|)h
+264 1349(|)s
+153(Convert)h
+64(-)h
+21(Use)h
+21(FunnelWeb)h
+20(to)h
+22(do)h
+21(most)h
+21(programming.)h
+324(|)h
+264 1399(|)s
+153(Fanatic)h
+64(-)h
+21(FunnelWeb)h
+20(has)h
+21(become)h
+21(a)h
+21(way)h
+22(of)h
+21(life.)h
+369(|)h
+264 1449(|)s
+1547(|)h
+264 1499(|)s
+22(7.)h
+21(What)h
+21(changes)h
+21(or)h
+21(new)h
+21(features)h
+20(would)h
+21(you)h
+21(like)h
+21(to)h
+22(see)h
+21(in)h
+21(FunnelWeb?)h
+63(|)h
+264 1548(|)s
+1547(|)h
+264 1598(|)s
+1547(|)h
+264 1648(|)s
+1547(|)h
+264 1698(|)s
+1547(|)h
+264 1748(|)s
+1547(|)h
+264 1797(|)s
+1547(|)h
+264 1847(|)s
+22(8.)h
+21(Do)h
+22(you)h
+21(want)h
+21(to)h
+21(be)h
+22(kept)h
+21(informed)h
+20(of)h
+21(new)h
+21(FunnelWeb)h
+20(developments?)h
+106(|)h
+264 1897(|)s
+1547(|)h
+264 1947(+-------------)s
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(----)h
+-1(-----)h
+-1(+)h
+112 @eop
+113 @bop0
+cmr10.300 sf
+[<0080008007E01898308460824081C087C08FC08FC086E080F0807E803FC01FF00FF803
+FC00BE008E00876087F083F083E0838082408240842088189007E000800080>
+16 33 -2 30 21] 36 dc
+113 @bop1
+cmsy10.300 sf
+883 1026(\015)s
+239 1317(\017)s
+239 1401(\017)s
+239 1484(\017)s
+239 1567(\017)s
+239 1650(\017)s
+cmbx10.432 sf
+177 910(5.6)s
+70(Cop)h
+-2(yrigh)h
+-2(t)h
+177 2154(5.7)s
+70(No)h
+-2(w)h
+-2(arran)h
+-2(t)h
+-2(y)h
+cmti10.300 sf
+1060 1317(F)s
+-3(unnelWeb)h
+16(Hacker's)h
+15(Manual)h
+657 1817(F)s
+-3(unnelWeb)h
+16(User's)h
+15(Manual)h
+96(F)h
+-3(unnelWeb)h
+16(Hacker's)h
+15(Manual)h
+cmtt10.300 sf
+243 382(Renaissanc)s
+-1(e)h
+20(Software)h
+20(Pty)h
+21(Ltd)h
+243 432(Email:)s
+20(ross@spam.ade)h
+-1(laide)h
+-1(.edu.)h
+-1(au)h
+243 482(Snail:)s
+20(16)h
+21(Lerwick)h
+21(Avenue,)h
+20(Hazelwood)h
+20(Park)h
+21(5066,)h
+21(Australia.)h
+193 1151(ross@spam.adel)s
+-1(aide.)h
+-1(edu.a)h
+-1(u)h
+1369 1401(fw)s
+22(+hlicense)h
+20(+jlicense.t)h
+-1(xt)h
+505 1484(help)s
+681 1567(prep.ai.mit.edu)s
+60(/pub/gnu/CO)h
+-1(PYIN)h
+-1(G-2)h
+308 2486(11.)s
+21(BECAUSE)h
+20(THE)h
+22(PROGRAM)h
+20(IS)h
+21(LICENSED)h
+20(FREE)h
+21(OF)h
+22(CHARGE,)h
+20(THERE)h
+21(IS)h
+21(NO)h
+22(WARRANTY)h
+264 2536(FOR)s
+22(THE)h
+21(PROGRAM,)h
+20(TO)h
+21(THE)h
+21(EXTENT)h
+21(PERMITTED)h
+20(BY)h
+21(APPLICABLE)h
+20(LAW.)h
+43(EXCEPT)h
+20(WHEN)h
+264 2586(OTHERWISE)s
+20(STATED)h
+21(IN)h
+21(WRITING)h
+21(THE)h
+21(COPYRIGHT)h
+20(HOLDERS)h
+20(AND/OR)h
+21(OTHER)h
+20(PARTIES)h
+264 2635(PROVIDE)s
+21(THE)h
+21(PROGRAM)h
+20("AS)h
+21(IS")h
+22(WITHOUT)h
+20(WARRANTY)h
+20(OF)h
+21(ANY)h
+22(KIND,)h
+20(EITHER)h
+21(EXPRESSED)h
+264 2685(OR)s
+22(IMPLIED,)h
+20(INCLUDING,)h
+20(BUT)h
+21(NOT)h
+21(LIMITED)h
+20(TO,)h
+21(THE)h
+22(IMPLIED)h
+20(WARRANTIES)h
+20(OF)h
+264 2735(MERCHANTABILIT)s
+-1(Y)h
+20(AND)h
+21(FITNESS)h
+21(FOR)h
+21(A)h
+21(PARTICULAR)h
+20(PURPOSE.)h
+42(THE)h
+21(ENTIRE)h
+21(RISK)h
+21(AS)h
+264 2785(TO)s
+22(THE)h
+21(QUALITY)h
+20(AND)h
+21(PERFORMANCE)h
+20(OF)h
+21(THE)h
+21(PROGRAM)h
+21(IS)h
+21(WITH)h
+21(YOU.)h
+43(SHOULD)h
+20(THE)h
+264 2835(PROGRAM)s
+21(PROVE)h
+20(DEFECTIVE,)h
+20(YOU)h
+21(ASSUME)h
+21(THE)h
+21(COST)h
+21(OF)h
+21(ALL)h
+22(NECESSARY)h
+20(SERVICING,)h
+cmr10.300 sf
+177 42(don't)s
+15(w)h
+-1(an)h
+-1(t)h
+14(to)h
+15(incon)h
+-1(v)h
+-1(enience)h
+15(users)h
+17(who)h
+14(install)h
+14(F)h
+-3(unnelW)h
+-3(eb,)h
+14(pla)h
+-1(y)h
+14(with)h
+14(it,)h
+15(and)h
+14(then)h
+16(hardly)h
+14(ev)h
+-1(er)h
+16(use)h
+177 91(it.)s
+18(If)h
+14(y)h
+-1(ou)h
+14(are)h
+14(in)h
+14(this)h
+14(category)h
+-3(,)h
+13(please)h
+15(register,)h
+15(but)h
+14(don't)h
+14(b)h
+1(other)h
+15(con)h
+-1(tributing.)h
+18(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(if)h
+13(y)h
+-1(ou)h
+14(\014nd)h
+177 141(that)s
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(has)h
+15(b)h
+1(ecome)h
+15(a)h
+14(useful)h
+15(programm)h
+-1(ing)h
+12(to)h
+1(ol,)h
+14(a)h
+14(con)h
+-1(tribution)h
+15(of)h
+14(some)h
+14(p)h
+1(ositiv)h
+-1(e)h
+14(m)h
+-1(ultipl)h
+-1(e)h
+177 191(of)s
+13(US$50)h
+14(w)h
+-1(ould)h
+13(b)h
+1(e)h
+14(appreciated.)h
+177 266(T)s
+-3(o)h
+13(mak)h
+-1(e)h
+13(a)h
+13(con)h
+-1(tribution,)h
+13(send)h
+15(pa)h
+-1(ymen)h
+-1(t)h
+13(with)h
+13(a)h
+14(completed)h
+13(registration)h
+14(form)h
+12(\(see)h
+15(Section)h
+15(5.4\))h
+13(to:)h
+177 598(P)s
+-1(a)h
+-1(ymen)h
+-1(t)h
+14(can)h
+15(b)h
+1(e)h
+15(b)h
+-1(y)h
+15(p)h
+1(ersonal)h
+15(or)h
+15(bank)h
+15(c)h
+-1(heque)h
+16(to)h
+14(an)h
+-1(y)h
+15(bank)h
+15(in)h
+14(the)h
+15(w)h
+-1(orld)h
+15(or)h
+15(b)h
+-1(y)h
+14(Visa)h
+15(or)h
+15(Mastercard.)h
+177 648(Please)s
+18(giv)h
+-1(e)h
+16(the)h
+17(card)h
+17(name,)h
+16(n)h
+-1(um)h
+-1(b)h
+1(er,)h
+16(expiry)h
+17(date,)h
+17(and)h
+17(the)h
+17(amoun)h
+-1(t)h
+15(to)h
+16(b)h
+1(e)h
+18(paid)h
+16(in)h
+16(US)h
+17(dollars.)h
+26(All)h
+177 698(con)s
+-1(tributions)h
+16(will)h
+15(b)h
+1(e)h
+17(appreciated)h
+17(and)h
+16(will)h
+15(encourage)h
+17(further)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(dev)h
+-1(elopmen)h
+-1(t.)h
+24(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+177 748(no)s
+14(undertaking)h
+14(is)h
+13(made)h
+13(whatso)h
+1(ev)h
+-1(er)h
+15(ab)h
+1(out)h
+14(ho)h
+-1(w)h
+13(the)h
+15(money)h
+12(will)h
+13(b)h
+1(e)h
+14(used.)h
+177 1026(The)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(program)h
+12(is)h
+14(Cop)h
+-1(yrigh)h
+-1(t)h
+894 1025(c)s
+938 1026(1992)s
+13(Ross)h
+14(William)h
+-2(s.)h
+177 1101(Ho)s
+-1(w)h
+-1(ev)h
+-1(er,)h
+28(F)h
+-3(unnelW)h
+-3(eb)h
+25(has)h
+25(b)h
+1(een)h
+27(released)h
+26(b)h
+-1(y)h
+25(the)h
+26(author)h
+26(and)h
+25(cop)h
+-1(yrigh)h
+-1(t)h
+24(o)h
+-1(wner)h
+26(Ross)h
+25(William)h
+-2(s)h
+177 1151(\()s
+547(\))h
+17(under)h
+20(V)h
+-3(ersion)h
+19(2)h
+18(of)h
+18(the)h
+20(GNU)h
+18(General)h
+19(Public)h
+19(License)h
+20(published)h
+177 1201(b)s
+-1(y)h
+14(the)h
+14(F)h
+-3(ree)h
+15(Soft)h
+-1(w)h
+-1(are)h
+14(F)h
+-3(oundation.)h
+16(Here)h
+15(are)h
+15(some)h
+13(w)h
+-1(a)h
+-1(ys)h
+13(that)h
+14(y)h
+-1(ou)h
+14(can)h
+14(obtain)h
+13(a)h
+14(cop)h
+-1(y)h
+13(of)h
+14(this)h
+14(license.)h
+281 1317(The)s
+14(license)h
+15(app)h
+1(ears)h
+15(as)h
+14(an)h
+13(app)h
+1(endix)h
+14(in)h
+14(the)h
+538(.)h
+281 1401(If)s
+13(y)h
+-1(ou)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(a)h
+13(w)h
+-1(orking)h
+13(v)h
+-1(ersion)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb,)h
+13(in)h
+-1(v)h
+-1(ok)h
+-1(e)h
+13(it)h
+14(with)h
+582(.)h
+281 1484(Lo)s
+1(ok)h
+13(in)h
+14(the)h
+115(mo)h
+1(dule)h
+13(of)h
+13(the)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(source)h
+15(co)h
+1(de.)h
+281 1567(FTP)s
+14(the)h
+15(license)h
+14(from)h
+353(in)h
+408(.)h
+281 1650(W)s
+-3(rite)h
+13(to)h
+14(the)h
+15(F)h
+-3(ree)h
+14(Soft)h
+-1(w)h
+-1(are)h
+14(F)h
+-3(oundation,)h
+12(Inc.,)h
+13(675)h
+14(Mass)h
+14(Av)h
+-1(e,)h
+14(Cam)h
+-1(bridg)h
+-1(e,)h
+12(MA)h
+14(02139,)h
+12(USA.)h
+177 1767(The)s
+14(license)h
+15(allo)h
+-1(ws)h
+12(y)h
+-1(ou)h
+14(to)h
+13(redistribute)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(and/or)h
+13(mo)h
+1(dify)h
+11(it)h
+14(under)h
+14(certain)h
+15(conditions.)h
+17(The)h
+177 1817(license)s
+15(do)h
+1(es)h
+15(not)h
+14(co)h
+-1(v)h
+-1(er)h
+15(the)h
+512(and)h
+553(whic)h
+-1(h)h
+14(are)h
+177 1867(distributed)s
+15(under)h
+14(a)h
+14(simpler)h
+13(license)h
+14(that)h
+14(prohibits)h
+14(c)h
+-1(hanges.)h
+177 1941(Note:)s
+23(F)h
+-3(unnelW)h
+-3(eb)h
+15(is)h
+16(distributed)h
+16(WITHOUT)h
+16(ANY)h
+16(W)h
+-5(ARRANTY;)h
+15(without)h
+16(ev)h
+-1(en)h
+16(the)h
+17(impl)h
+-1(ied)h
+14(w)h
+-1(ar-)h
+177 1991(ran)s
+-1(t)h
+-1(y)h
+14(of)h
+13(MER)h
+-1(CHANT)h
+-3(ABILITY)h
+14(or)h
+14(FITNESS)h
+14(F)h
+-1(OR)h
+14(A)h
+14(P)h
+-3(AR)h
+-3(TICULAR)h
+13(PURPOSE.)h
+177 2270(Users)s
+15(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(should)h
+13(b)h
+1(e)h
+14(a)h
+-1(w)h
+-1(are)h
+13(that)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+12(comes)h
+13(with)h
+13(no)h
+14(w)h
+-1(arran)h
+-1(t)h
+-1(y)h
+-3(.)h
+17(Here)h
+14(is)h
+14(an)h
+13(extract)h
+177 2320(from)s
+11(the)h
+13(GNU)h
+12(General)h
+12(Public)h
+12(License)h
+14(V)h
+-3(ersion)h
+12(2,)h
+12(under)h
+13(whic)h
+-1(h)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+11(is)h
+13(distributed.)h
+18(F)h
+-3(or)h
+12(more)h
+177 2369(informati)s
+-1(on)h
+12(see)h
+15(Section)h
+15(5.6.)h
+1032 2940(112)s
+113 @eop
+114 @bop0
+cmbx10.432 sf
+[<0001FF0000001FFFC000007F80F00000FE00F80003FC01FC0003F803FC0007F003FC00
+07F003FC0007F003FC0007F001F80007F000F00007F000000007F000000007F000000007
+F0000000FFFFFFFC00FFFFFFFC00FFFFFFFC0007F001FC0007F001FC0007F001FC0007F0
+01FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001
+FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC
+0007F001FC0007F001FC0007F001FC007FFF1FFFC07FFF1FFFC07FFF1FFFC0>
+40 42 -1 41 38] 12 dc
+114 @bop1
+cmbx10.432 sf
+177 726(5.8)s
+70(Distributi)h
+-1(on)h
+177 1808(5.9)s
+70(Mo)h
+2(di\014cation)h
+cmti10.300 sf
+362 2653(ple)s
+-2(ase)h
+16(change)h
+16(its)h
+15(name)h
+810 2835(F)s
+-3(unnelWeb)h
+16(Hacker's)h
+15(Manual)h
+cmtt10.300 sf
+264 42(REPAIR)s
+21(OR)h
+21(CORRECTION.)h
+308 141(12.)s
+21(IN)h
+21(NO)h
+22(EVENT)h
+21(UNLESS)h
+20(REQUIRED)h
+20(BY)h
+22(APPLICABLE)h
+19(LAW)h
+22(OR)h
+21(AGREED)h
+21(TO)h
+21(IN)h
+21(WRITING)h
+264 191(WILL)s
+21(ANY)h
+21(COPYRIGHT)h
+20(HOLDER,)h
+21(OR)h
+21(ANY)h
+21(OTHER)h
+21(PARTY)h
+21(WHO)h
+21(MAY)h
+21(MODIFY)h
+21(AND/OR)h
+264 241(REDISTRIBUTE)s
+20(THE)h
+21(PROGRAM)h
+20(AS)h
+22(PERMITTED)h
+19(ABOVE,)h
+21(BE)h
+21(LIABLE)h
+21(TO)h
+21(YOU)h
+22(FOR)h
+21(DAMAGES,)h
+264 291(INCLUDING)s
+20(ANY)h
+21(GENERAL,)h
+21(SPECIAL,)h
+20(INCIDENTAL)h
+19(OR)h
+22(CONSEQUENTIA)h
+-1(L)h
+20(DAMAGES)h
+20(ARISING)h
+264 340(OUT)s
+22(OF)h
+21(THE)h
+21(USE)h
+21(OR)h
+22(INABILITY)h
+20(TO)h
+21(USE)h
+21(THE)h
+21(PROGRAM)h
+21(\(INCLUDING)h
+19(BUT)h
+22(NOT)h
+21(LIMITED)h
+264 390(TO)s
+22(LOSS)h
+21(OF)h
+21(DATA)h
+21(OR)h
+21(DATA)h
+21(BEING)h
+21(RENDERED)h
+20(INACCURATE)h
+20(OR)h
+21(LOSSES)h
+21(SUSTAINED)h
+20(BY)h
+264 440(YOU)s
+22(OR)h
+21(THIRD)h
+21(PARTIES)h
+20(OR)h
+21(A)h
+22(FAILURE)h
+20(OF)h
+22(THE)h
+21(PROGRAM)h
+20(TO)h
+22(OPERATE)h
+20(WITH)h
+21(ANY)h
+21(OTHER)h
+264 490(PROGRAMS\),)s
+20(EVEN)h
+21(IF)h
+21(SUCH)h
+21(HOLDER)h
+21(OR)h
+21(OTHER)h
+21(PARTY)h
+21(HAS)h
+21(BEEN)h
+21(ADVISED)h
+20(OF)h
+22(THE)h
+264 540(POSSIBILITY)s
+20(OF)h
+21(SUCH)h
+21(DAMAGES.)h
+308 1038(1.)s
+21(You)h
+21(may)h
+22(copy)h
+21(and)h
+21(distribute)h
+20(verbatim)h
+20(copies)h
+20(of)h
+22(the)h
+21(Program's)h
+264 1088(source)s
+21(code)h
+21(as)h
+21(you)h
+21(receive)h
+21(it,)h
+21(in)h
+21(any)h
+21(medium,)h
+21(provided)h
+20(that)h
+21(you)h
+264 1138(conspicuously)s
+19(and)h
+22(appropriate)h
+-1(ly)h
+20(publish)h
+20(on)h
+21(each)h
+21(copy)h
+21(an)h
+22(appropriate)h
+264 1187(copyright)s
+20(notice)h
+21(and)h
+21(disclaimer)h
+20(of)h
+21(warranty;)h
+20(keep)h
+21(intact)h
+21(all)h
+21(the)h
+264 1237(notices)s
+21(that)h
+21(refer)h
+20(to)h
+22(this)h
+21(License)h
+20(and)h
+21(to)h
+22(the)h
+21(absence)h
+20(of)h
+22(any)h
+21(warranty;)h
+264 1287(and)s
+22(give)h
+20(any)h
+22(other)h
+20(recipients)h
+20(of)h
+22(the)h
+21(Program)h
+20(a)h
+22(copy)h
+21(of)h
+21(this)h
+21(License)h
+264 1337(along)s
+21(with)h
+21(the)h
+21(Program.)h
+264 1436(You)s
+22(may)h
+21(charge)h
+20(a)h
+22(fee)h
+21(for)h
+21(the)h
+21(physical)h
+20(act)h
+22(of)h
+21(transferring)h
+19(a)h
+22(copy,)h
+21(and)h
+264 1486(you)s
+22(may)h
+21(at)h
+21(your)h
+21(option)h
+21(offer)h
+20(warranty)h
+20(protection)h
+20(in)h
+22(exchange)h
+20(for)h
+21(a)h
+21(fee.)h
+793 2702(.fw)s
+cmr10.300 sf
+177 853(Users)s
+15(of)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(should)h
+12(b)h
+1(e)h
+14(a)h
+-1(w)h
+-1(are)h
+13(that)h
+13(they)h
+14(can)h
+13(distribute)h
+13(the)h
+14(program)h
+12(freely)h
+-3(.)h
+17(The)h
+14(follo)h
+-1(wi)h
+-1(ng)h
+11(is)h
+177 903(an)s
+11(extract)h
+12(from)h
+10(the)h
+12(GNU)h
+11(General)h
+11(Public)h
+11(License)h
+12(V)h
+-3(ersion)h
+12(2,)h
+11(under)h
+12(whic)h
+-1(h)h
+11(F)h
+-3(unnelW)h
+-3(eb)h
+11(is)h
+11(distributed.)h
+177 1622(The)s
+14(license)h
+15(also)h
+13(allo)h
+-1(ws)h
+13(y)h
+-1(ou)h
+13(other)h
+15(freedoms.)h
+18(F)h
+-3(or)h
+13(more)h
+13(informati)h
+-1(on)h
+12(see)h
+15(Section)h
+14(5.6.)h
+177 1935(F)s
+-3(unnelW)h
+-3(eb)h
+16(is)h
+16(distributed)h
+16(under)h
+17(a)h
+16(GNU)h
+16(license,)h
+17(and)h
+16(y)h
+-1(ou)h
+16(are)h
+16(free)h
+17(to)h
+16(mo)h
+1(dify)h
+14(the)h
+17(source)h
+17(co)h
+1(de)h
+17(and)h
+177 1985(distribute)s
+12(mo)h
+1(di\014ed)h
+10(copies)h
+12(\(see)h
+13(Section)h
+12(5.6\).)h
+16(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+12(there)h
+13(are)h
+11(go)h
+1(o)h
+1(d)h
+11(reasons)h
+13(wh)h
+-1(y)h
+11(y)h
+-1(ou)h
+11(should)h
+11(a)h
+-1(v)h
+-1(oid)h
+177 2034(doing)s
+13(this.)h
+228 2170(1.)s
+20(If)h
+13(y)h
+-1(ou)h
+13(distribute)h
+14(mo)h
+1(di\014ed)h
+11(v)h
+-1(ersions)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb,)h
+12(y)h
+-1(ou)h
+13(run)h
+14(the)h
+14(risk)h
+13(of)h
+13(creating)h
+13(a)h
+13(v)h
+-1(ersion)h
+14(that)h
+281 2220(will)s
+12(div)h
+-1(erge)h
+14(from)h
+13(the)h
+14(\\o\016cial")h
+12(v)h
+-1(ersion)h
+14(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(that)h
+14(I)h
+13(in)h
+-1(tend)h
+14(to)h
+14(main)h
+-1(tai)h
+-1(n.)h
+228 2318(2.)s
+20(If)h
+13(y)h
+-1(ou)h
+12(release)h
+14(a)h
+13(v)h
+-1(ersion)h
+13(of)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(with)h
+13(a)h
+12(c)h
+-1(hanged)h
+14(input)h
+13(language,)h
+11(users)h
+15(of)h
+12(y)h
+-1(our)h
+13(mo)h
+1(di\014ed)h
+281 2368(v)s
+-1(ersion)h
+13(will)h
+12(create)h
+14(source)h
+14(\014les)h
+14(that)h
+13(will)h
+11(no)h
+13(longer)h
+13(w)h
+-1(ork)h
+13(on)h
+13(other)h
+13(v)h
+-1(ersions)h
+14(of)h
+12(F)h
+-3(unnelW)h
+-3(eb.)h
+17(The)h
+281 2418(result)s
+15(w)h
+-1(ould)h
+13(b)h
+1(e)h
+14(c)h
+-1(haos.)h
+177 2553(F)s
+-3(or)h
+11(these)h
+13(reasons)h
+13(I)h
+11(request)h
+14(that)h
+11(y)h
+-1(ou)h
+11(do)h
+12(not)h
+11(distribute)h
+12(mo)h
+1(di\014ed)h
+10(v)h
+-1(ersions)h
+13(of)h
+11(F)h
+-3(unnelW)h
+-3(eb,)h
+11(particularly)h
+177 2603(v)s
+-1(ersions)h
+19(with)h
+19(a)h
+18(mo)h
+1(di\014ed)h
+18(language.)h
+31(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+20(if)h
+18(y)h
+-1(ou)h
+18(m)h
+-1(ust)h
+18(distribute)h
+19(a)h
+18(v)h
+-1(ersion)h
+19(with)h
+19(a)h
+18(mo)h
+1(di\014ed)h
+177 2653(language,)s
+444(\(i.e.)h
+13(from)h
+13(\\F)h
+-3(unnelW)h
+-3(eb")h
+14(to)h
+14(something)h
+13(else\).)h
+20(Please)h
+16(also)h
+13(allo)h
+1(cate)h
+177 2702(a)s
+19(new)h
+20(\014le)h
+19(extension)h
+21(to)h
+19(replace)h
+20(\\)h
+66(")h
+18(as)h
+20(the)h
+20(extension)h
+20(for)h
+19(source)h
+21(\014les)h
+19(written)h
+20(in)h
+19(the)h
+20(mo)h
+1(di\014ed)h
+177 2752(language.)s
+177 2835(F)s
+-3(or)h
+14(more)h
+13(inform)h
+-1(ation,)h
+11(refer)h
+15(to)h
+14(the)h
+538(.)h
+1032 2940(113)s
+114 @eop
+115 @bop0
+cmbx10.432 sf
+[<FFFFF0003FFF80FFFFF0003FFF80FFFFF0003FFF8003FE000001E00001FE000001C000
+01FF000003C00000FF000003800000FF0000038000007F8000070000007F800007000000
+7FC0000F0000003FC0000E0000003FE0001E0000001FE0001C0000001FF0001C0000000F
+F000380000000FF0003800000007F8007000000007F8007000000007FC00F000000003FC
+00E000000003FE01E000000001FE01C000000001FF01C000000000FF038000000000FF03
+8000000000FF8780000000007F8700000000007FCF00000000003FCE00000000003FFE00
+000000001FFC00000000001FFC00000000000FF800000000000FF800000000000FF80000
+00000007F0000000000007F0000000000003E0000000000003E0000000000001C0000000>
+56 41 -1 40 52] 86 dc
+115 @bop1
+cmbx10.432 sf
+177 42(5.10)s
+70(V)h
+-6(ersions)h
+177 1266(5.11)s
+70(FTP)h
+23(Arc)h
+-2(hiv)h
+-2(e)h
+22(and)h
+24(Author)h
+cmtt10.300 sf
+1320 207(ross@spam.adela)s
+-1(ide.)h
+-1(edu.a)h
+-1(u)h
+830 307(dave@cs.adela)s
+-1(ide.e)h
+-1(du.au)h
+199 523(Vers)s
+43(Lang)h
+42(Created)h
+43(Released)h
+63(Author)h
+217(Copyright)h
+129(Licensing)h
+199 572(----)s
+43(----)h
+42(-------)h
+43(--------)h
+63(--------------)h
+41(-------------)h
+41(---------)h
+199 622(V1.0)s
+43(Ada)h
+64(1986)h
+109(Never)h
+129(Ross)h
+43(Williams)h
+42(Ross)h
+21(Williams)h
+199 672(V2.0)s
+43(C)h
+108(1989)h
+109(Never)h
+129(David)h
+21(Hulse)h
+108(Public)h
+21(domain)h
+42(No)h
+21(restriction.)h
+199 722(V3.0)s
+43(C)h
+108(1992)h
+109(May-1992)h
+63(Ross)h
+43(Williams)h
+42(Ross)h
+21(Williams)h
+42(GNU)h
+21(release.)h
+286 954(*)s
+22(FunnelWeb)h
+150(V3.0.)h
+286 1004(*)s
+22(User's)h
+20(Manual)h
+64(V1.0.)h
+286 1054(*)s
+22(Hacker's)h
+20(Manual)h
+20(V1.0.)h
+286 1104(*)s
+22(TeX)h
+21(Definitions)h
+19(V1.0.)h
+243 1498(Machine)s
+63(:)h
+22(sirius.itd.ad)h
+-1(elaid)h
+-1(e.edu)h
+-1(.au)h
+19([IP=129.127.40.)h
+-1(3].)h
+243 1548(Directory)s
+19(:)h
+22(~pub/funnelwe)h
+-1(b/)h
+63(\(or)h
+22(a)h
+21(directory)h
+20(of)h
+21(similar)h
+21(name\).)h
+243 1780(Name:)s
+42(Dr)h
+21(Ross)h
+21(N.)h
+22(Williams)h
+243 1830(Email:)s
+20(ross@spam.ade)h
+-1(laide)h
+-1(.edu.)h
+-1(au)h
+243 1880(Snail:)s
+20(16)h
+21(Lerwick)h
+21(Avenue,)h
+20(Hazelwood)h
+20(Park)h
+21(5066,)h
+21(Australia.)h
+cmr10.300 sf
+177 157(F)s
+-3(unnelW)h
+-3(eb)h
+1502(w)h
+-1(as)h
+177 207(created)s
+19(in)h
+18(1986)h
+17(and)h
+17(w)h
+-1(as)h
+18(used)h
+18(extensiv)h
+-1(ely)h
+19(b)h
+-1(y)h
+17(Ross)h
+18(William)h
+-2(s)h
+16(\()h
+547(\))h
+16(for)h
+177 257(three)s
+19(y)h
+-1(ears.)h
+29(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+18(V)h
+-3(ersion)h
+18(1.0)h
+16(w)h
+-1(as)h
+17(written)h
+18(in)h
+17(Ada)h
+18(and)h
+17(w)h
+-1(as)h
+17(not)h
+17(v)h
+-1(ery)h
+18(p)h
+1(ortable)h
+18(\(it)h
+17(w)h
+-1(as)h
+17(fairly)h
+177 307(V)s
+-5(AX/VMS)h
+16(sp)h
+1(eci\014c\).)h
+24(Da)h
+-1(vid)h
+14(Hulse)h
+16(\()h
+503(\))h
+14(to)h
+1(ok)h
+15(the)h
+16(\014rst)h
+16(step)h
+16(to)h
+-1(w)h
+-1(ards)h
+15(a)h
+15(re-)h
+177 357(lease)s
+18(b)h
+-1(y)h
+16(translating)h
+16(the)h
+18(Ada)h
+16(co)h
+1(de)h
+18(in)h
+-1(to)h
+16(C.)h
+17(Ross)h
+16(William)h
+-1(s)h
+15(then)h
+17(extensiv)h
+-1(ely)h
+18(rew)h
+-1(ork)h
+-1(ed)h
+17(the)h
+18(C)h
+16(co)h
+1(de,)h
+177 406(making)s
+12(it)h
+13(robust)h
+15(and)h
+13(p)h
+1(ortable,)h
+14(adding)h
+13(new)h
+14(features,)h
+15(and)h
+14(p)h
+1(olishing)h
+12(it)h
+14(to)h
+13(its)h
+14(curren)h
+-1(t)h
+16(form.)h
+177 838(This)s
+14(man)h
+-1(ual)h
+11(w)h
+-1(as)h
+14(released)h
+15(for:)h
+177 1382(The)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(FTP)h
+14(arc)h
+-1(hiv)h
+-1(e)h
+14(is:)h
+177 1664(The)s
+14(author)h
+14(of)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(and)h
+14(this)h
+14(man)h
+-1(ual)h
+11(is:)h
+177 1996(I)s
+11(in)h
+-1(tend)h
+11(to)h
+11(mai)h
+-1(n)h
+-1(tain)h
+9(an)h
+10(\\o\016cial")h
+9(v)h
+-1(ersion)h
+11(of)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+11(whic)h
+-1(h)h
+10(I)h
+11(will)h
+10(release)h
+12(under)h
+11(GNU)h
+11(license)h
+12(from)h
+177 2046(time)s
+9(to)h
+10(time.)h
+15(I)h
+10(am)h
+8(happ)h
+-1(y)h
+10(to)h
+10(receiv)h
+-1(e)h
+11(constructiv)h
+-1(e)h
+11(criticism)h
+9(ab)h
+1(out)h
+10(F)h
+-3(unnelW)h
+-3(eb)h
+10(and)h
+9(its)h
+10(do)h
+1(cumen)h
+-1(tation.)h
+177 2121(I)s
+14(will)h
+12(alw)h
+-1(a)h
+-1(ys)h
+12(b)h
+1(e)h
+14(happ)h
+-1(y)h
+13(to)h
+14(receiv)h
+-1(e)h
+15(mai)h
+-1(l)h
+11(ab)h
+1(out)h
+14(F)h
+-3(unnelW)h
+-3(eb,)h
+12(but)h
+14(cannot)h
+14(guaran)h
+-1(tee)h
+14(that)h
+13(I)h
+14(will)h
+12(b)h
+1(e)h
+14(able)h
+177 2171(to)s
+14(reply)h
+14(to)h
+14(it)h
+13(imm)h
+-1(ediately)h
+-4(.)h
+1032 2940(114)s
+115 @eop
+116 @bop0
+cmbx10.746 sf
+[<000000003FFE00000E000000000FFFFFC0001E000000007FFFFFF8003E00000003FFFF
+FFFE00FE0000000FFFFFFFFF81FE0000003FFFF800FFC3FE000000FFFF80000FF7FE0000
+01FFFC000003FFFE000007FFF0000001FFFE00000FFFC00000007FFE00001FFF80000000
+3FFE00003FFF000000001FFE00007FFE000000000FFE0000FFFC0000000007FE0001FFF8
+0000000007FE0003FFF00000000003FE0003FFF00000000001FE0007FFE00000000001FE
+0007FFE00000000000FE000FFFC00000000000FE000FFFC000000000007E001FFFC00000
+0000007E001FFF8000000000007E003FFF8000000000007E003FFF8000000000003E003F
+FF8000000000003E007FFF8000000000003E007FFF0000000000003E007FFF0000000000
+0000007FFF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF00
+00000000000000FFFF0000000000000000FFFF0000000000000000FFFF00000000000000
+00FFFF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF000000
+0000000000FFFF0000000000000000FFFF0000000000000000FFFF0000007FFFFFFFFE7F
+FF0000007FFFFFFFFE7FFF0000007FFFFFFFFE7FFF8000007FFFFFFFFE7FFF8000007FFF
+FFFFFE3FFF8000000000FFFE003FFF8000000000FFFE003FFF8000000000FFFE001FFF80
+00000000FFFE001FFFC000000000FFFE000FFFC000000000FFFE000FFFC000000000FFFE
+0007FFE000000000FFFE0007FFE000000000FFFE0003FFF000000000FFFE0003FFF80000
+0000FFFE0001FFF800000000FFFE0000FFFC00000000FFFE00007FFE00000000FFFE0000
+3FFF00000000FFFE00001FFF80000000FFFE00000FFFE0000001FFFE000007FFF0000003
+FFFE000001FFFC000007FFFE000000FFFF80001FFFFE0000003FFFFC00FFC7FE0000000F
+FFFFFFFF83FE00000003FFFFFFFE00FE000000007FFFFFF8003E000000000FFFFFE0000E
+00000000003FFE00000000>
+80 73 -7 71 93] 71 dc
+[<7FFFFFC000FFFF807FFFFFC000FFFF807FFFFFC000FFFF807FFFFFC000FFFF807FFFFF
+C000FFFF8000FFF000000FE00000FFF800000FC00000FFF800000FC000007FFC00000F80
+00007FFC00001F8000003FFC00001F0000003FFE00003F0000001FFE00003E0000001FFF
+00007E0000000FFF00007C0000000FFF8000FC00000007FF8000F800000007FFC001F800
+000003FFC001F000000003FFE003F000000003FFE003F000000001FFF003E000000001FF
+F007E000000000FFF007C000000000FFF80FC0000000007FF80F80000000007FFC1F8000
+0000003FFC1F00000000003FFE3F00000000001FFE3E00000000001FFF7E00000000000F
+FF7C00000000000FFFFC00000000000FFFFC000000000007FFF8000000000007FFF80000
+00000003FFF0000000000003FFF0000000000001FFE0000000000001FFE0000000000000
+FFC0000000000000FFC00000000000007F800000000000007F800000000000003F000000
+000000003F000000000000003F000000000000003E000000000000007E00000000000000
+7C00000000000000FC000000001F8000F8000000003FC001F8000000007FE001F0000000
+00FFF003F000000000FFF003E000000000FFF007E000000000FFF00FC000000000FFF01F
+8000000000FFF03F80000000007FE07F00000000007F43FE00000000003FFFF800000000
+001FFFF0000000000007FFC0000000000001FE000000000000>
+64 66 -2 45 63] 121 dc
+cmbx10.622 sf
+[<00000001F80000000000000001F80000000000000003FC0000000000000003FC000000
+0000000007FE0000000000000007FE0000000000000007FE000000000000000FFF000000
+000000000FFF000000000000001FFF800000000000001FFF800000000000001FFF800000
+000000003FFFC00000000000003FFFC00000000000007FFFE00000000000007DFFE00000
+000000007DFFE0000000000000FDFFF0000000000000F8FFF0000000000001F8FFF80000
+00000001F07FF8000000000001F07FF8000000000003F07FFC000000000003E03FFC0000
+00000007E03FFE000000000007C01FFE00000000000FC01FFF00000000000F801FFF0000
+0000000F800FFF00000000001F800FFF80000000001F0007FF80000000003F0007FFC000
+0000003E0003FFC0000000003E0003FFC0000000007E0003FFE0000000007C0001FFE000
+000000FC0001FFF000000000F80000FFF000000000F80000FFF000000001FFFFFFFFF800
+000001FFFFFFFFF800000003FFFFFFFFFC00000003FFFFFFFFFC00000003E000003FFC00
+000007E000003FFE00000007C000001FFE0000000FC000001FFF0000000F8000000FFF00
+00001F8000000FFF8000001F0000000FFF8000001F00000007FF8000003F00000007FFC0
+00003E00000003FFC000007E00000003FFE00000FF00000001FFE000FFFFFC0001FFFFFF
+F0FFFFFC0001FFFFFFF0FFFFFC0001FFFFFFF0FFFFFC0001FFFFFFF0>
+72 59 -3 58 75] 65 dc
+[<00FE007FC000FFFE01FFF800FFFE07FFFE00FFFE1F03FF00FFFE3C01FF0007FE7801FF
+8003FE7000FF8003FEE000FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFF
+FFFFFFFC3FFFFFFFFFFC3FFFFF>
+48 38 -4 37 55] 110 dc
+[<000000003FC00000003FFFC00000003FFFC00000003FFFC00000003FFFC000000001FF
+C000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FF
+C000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FF
+C000000000FFC000000000FFC000000000FFC000000000FFC00000FFC0FFC0000FFFF8FF
+C0003FFFFEFFC000FFE03FFFC001FF000FFFC007FE0003FFC00FFC0001FFC00FF80000FF
+C01FF80000FFC03FF00000FFC03FF00000FFC07FF00000FFC07FE00000FFC07FE00000FF
+C0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FF
+C0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC07FE00000FFC07FE00000FF
+C07FF00000FFC03FF00000FFC03FF00000FFC01FF00000FFC01FF80001FFC00FFC0003FF
+C007FC0007FFC003FF001FFFE000FFC07EFFFF003FFFFCFFFF000FFFF0FFFF0001FF80FF
+FF>
+48 60 -3 59 55] 100 dc
+[<00F00003FC0007FE000FFE000FFF001FFF001FFF001FFF000FFF000FFE0007FE0003FC
+0000F00000000000000000000000000000000000000000000000000000000000000000FF
+00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF
+0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF
+0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00FFFFF8FFFFF8FFFF
+F8FFFFF8>
+24 61 -3 60 27] 105 dc
+[<FFFFF007FFFCFFFFF007FFFCFFFFF007FFFCFFFFF007FFFC01FF8000FC0000FFC000F8
+0000FFE001F000007FF003E000003FF007C000001FF80FC000000FFC1F8000000FFE1F00
+000007FF3E00000003FFFC00000001FFF800000000FFF0000000007FE0000000007FF000
+0000003FF8000000001FF8000000001FFC000000003FFE000000007FFF00000000FBFF80
+000001F9FF80000003F0FFC0000003E07FE0000007C07FF000000F803FF800001F001FFC
+00003E000FFC00007C0007FE0000FC0003FF0001FC0003FF80FFFF801FFFFEFFFF801FFF
+FEFFFF801FFFFEFFFF801FFFFE>
+48 38 -2 37 52] 120 dc
+116 @bop1
+cmbx10.746 sf
+177 612(Glossary)s
+cmbx10.622 sf
+177 379(App)s
+3(endix)h
+34(A)h
+cmtt10.300 sf
+1659 903(@Z)s
+1620 2433(@i)s
+22(filename)h
+608 2558(+F)s
+cmbx10.300 sf
+177 854(Analyser:)s
+177 1029(Argumen)s
+-1(t:)h
+177 1154(Directiv)s
+-2(e:)h
+177 1280(Do)s
+1(cumen)h
+-1(tati)h
+-1(on:)h
+177 1355(Do)s
+1(cumen)h
+-1(tati)h
+-1(on)h
+18(\014le:)h
+177 1531(F)s
+-4(ree)h
+19(text:)h
+177 1656(F)s
+-4(unnelW)h
+-4(eb:)h
+177 1931(F)s
+-4(unnelW)h
+-4(eb)h
+14(\014le:)h
+177 2006(F)s
+-4(unnelW)h
+-4(eb)h
+14(language:)h
+177 2082(F)s
+-4(unnelW)h
+-4(eb)h
+17(prop)h
+1(er:)h
+177 2357(FW:)s
+177 2433(Include)s
+14(\014le:)h
+177 2508(Input)s
+16(\014le:)h
+177 2634(Journal)s
+14(\014le:)h
+177 2759(Listin)s
+-1(g)h
+14(\014le:)h
+177 2835(Macro:)s
+cmr10.300 sf
+396 854(A)s
+15(comp)h
+1(onen)h
+-1(t)h
+14(of)h
+15(the)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(program)h
+13(that)h
+15(c)h
+-1(hec)h
+-1(ks)h
+17(the)h
+15(macro)h
+14(table)h
+15(created)h
+16(b)h
+-1(y)h
+15(the)h
+177 903(parser)s
+15(for)h
+14(errors.)h
+19(F)h
+-3(or)h
+14(example,)h
+12(the)h
+14(analyser)h
+14(c)h
+-1(hec)h
+-1(ks)h
+15(to)h
+14(see)h
+15(if)h
+13(an)h
+-1(y)h
+14(macro)h
+12(without)h
+14(a)h
+71(has)h
+14(not)h
+14(b)h
+1(een)h
+177 953(called.)s
+419 1029(A)s
+12(string)h
+11(delimited)h
+10(b)h
+-1(y)h
+11(blanks)h
+11(app)h
+1(earing)h
+12(on)h
+11(the)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(comm)h
+-1(and)h
+9(line.)h
+17(Argumen)h
+-1(ts)h
+177 1079(are)s
+14(used)h
+15(to)h
+14(con)h
+-1(trol)h
+14(options.)h
+400 1154(A)s
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(sp)h
+1(ecial)h
+15(sequence)h
+17(or)h
+14(co)h
+1(op)h
+1(erating)h
+15(group)h
+14(of)h
+14(sp)h
+1(ecial)h
+14(sequence)h
+1(s)h
+16(that)h
+15(do)h
+14(not)h
+177 1204(form)s
+12(part)h
+14(of)h
+14(a)h
+13(macro)h
+13(de\014nition.)h
+18(A)h
+13(directiv)h
+-1(e)h
+15(can)h
+14(tak)h
+-1(e)h
+14(the)h
+14(form)h
+13(of)h
+13(a)h
+13(pragma.)h
+529 1280(Descriptiv)s
+-1(e)h
+15(text.)h
+619 1355(An)s
+18(output)h
+18(\014le,)h
+19(pro)h
+1(duced)h
+19(b)h
+-1(y)h
+18(the)h
+18(W)h
+-3(ea)h
+-1(v)h
+-1(e)h
+17(comp)h
+1(onen)h
+-1(t)h
+18(of)h
+17(F)h
+-3(unnelW)h
+-3(eb,)h
+18(that)h
+177 1405(con)s
+-1(tains)h
+14(t)h
+-1(yp)h
+1(esetter)h
+16(comma)h
+-1(nds.)h
+17(When)h
+14(fed)h
+14(in)h
+-1(to)h
+13(the)h
+15(appropriate)h
+14(t)h
+-1(yp)h
+1(esetter)h
+16(program,)h
+12(the)h
+15(result)h
+14(is)h
+14(a)h
+177 1455(t)s
+-1(yp)h
+1(eset)h
+16(ima)h
+-1(ge)h
+12(of)h
+14(the)h
+14(input)h
+14(\014le.)h
+408 1531(The)s
+17(text)h
+18(in)h
+16(an)h
+17(input)h
+17(\014le)h
+17(that)h
+17(remains)h
+16(if)h
+16(one)h
+17(w)h
+-1(ere)h
+18(to)h
+16(remo)h
+-1(v)h
+-1(e)h
+16(macro)h
+16(de\014nitions)h
+17(and)h
+177 1580(directiv)s
+-1(es.)h
+454 1656(This)s
+19(w)h
+-1(ord)h
+18(has)h
+20(a)h
+18(n)h
+-1(um)h
+-1(b)h
+1(er)h
+18(of)h
+19(di\013eren)h
+-1(t)h
+20(meanings)h
+17(all)h
+18(p)h
+1(ertaining)h
+19(to)h
+19(the)h
+19(F)h
+-3(unnelW)h
+-3(eb)h
+177 1706(system)s
+19(of)h
+19(programm)h
+-1(ing.)h
+33(1\))h
+19(The)h
+20(en)h
+-1(tire)h
+20(system)h
+20(of)h
+19(programm)h
+-1(i)h
+-1(ng)h
+17(as)h
+20(in)h
+19(\\Ma)h
+-1(yb)h
+1(e)h
+20(F)h
+-3(unnelW)h
+-3(eb)h
+19(can)h
+177 1756(help.")s
+23(2\))h
+15(The)h
+16(computer)h
+15(program)h
+14(that)h
+16(impl)h
+-1(em)h
+-1(en)h
+-1(ts)h
+15(the)h
+16(system)h
+15(as)h
+16(in)h
+15(\\Run)h
+15(it)h
+15(through)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+177 1805(and)s
+12(see)h
+13(what)h
+12(comes)h
+11(out.")h
+17(3\))h
+12(The)h
+12(language)h
+11(implem)h
+-1(en)h
+-1(ted)h
+11(b)h
+-1(y)h
+11(the)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+11(program)h
+10(as)h
+12(in)h
+12(\\I)h
+11(wrote)h
+177 1855(the)s
+15(program)h
+12(in)h
+13(F)h
+-3(unnelW)h
+-3(eb.")h
+18(or)h
+13(\\I)h
+14(wrote)h
+14(the)h
+15(program)h
+12(in)h
+14(Ada)h
+13(using)h
+14(F)h
+-3(unnelW)h
+-3(eb.".)h
+521 1931(A)s
+14(\014le)h
+14(whose)h
+14(con)h
+-1(ten)h
+-1(ts)h
+15(are)h
+15(written)h
+14(in)h
+13(the)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(language.)h
+642 2006(The)s
+14(language)h
+13(in)h
+13(whic)h
+-1(h)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(input)h
+14(\014les)h
+14(are)h
+15(written.)h
+609 2082(Usually)s
+-3(,)h
+16(when)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+17(is)h
+17(in)h
+-1(v)h
+-1(ok)h
+-1(ed,)h
+16(it)h
+17(pro)h
+1(cesses)h
+20(a)h
+16(single)h
+17(input)h
+17(\014le)h
+17(and)h
+177 2132(then)s
+15(terminates.)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(it)h
+13(also)h
+13(has)h
+14(a)h
+14(comm)h
+-1(and)h
+12(language)h
+13(mo)h
+1(de)h
+12(in)h
+14(whic)h
+-1(h)h
+13(it)h
+14(is)h
+13(p)h
+1(ossible)h
+14(to)h
+14(in)h
+-1(v)h
+-1(ok)h
+-1(e)h
+177 2182(\\F)s
+-3(unnelW)h
+-3(eb")h
+14(man)h
+-1(y)h
+12(times.)h
+19(This)h
+14(leads)h
+15(to)h
+14(confusion)h
+14(b)h
+1(et)h
+-1(w)h
+-1(een)h
+16(\\F)h
+-3(unnelW)h
+-3(eb")h
+13(the)h
+15(outer)h
+15(program)h
+13(and)h
+177 2232(\\F)s
+-3(unnelW)h
+-3(eb")h
+19(the)h
+20(inner)h
+20(program.)h
+34(T)h
+-3(o)h
+18(a)h
+-1(v)h
+-1(oid)h
+19(this)h
+19(confusion,)h
+21(the)h
+20(inner)h
+20(F)h
+-3(unnelW)h
+-3(eb)h
+19(is)h
+20(sometim)h
+-1(es)h
+177 2281(referred)s
+16(to)h
+14(as)h
+14(\\F)h
+-3(unnelW)h
+-3(eb)h
+13(prop)h
+1(er".)h
+284 2357(An)s
+14(abbreviation)h
+13(for)h
+13(\\F)h
+-3(unnelW)h
+-3(eb")h
+13(that)h
+14(is)h
+14(used)h
+15(wherev)h
+-1(er)h
+15(appropriate.)h
+440 2433(A)s
+14(\014le)h
+14(read)h
+15(in)h
+13(b)h
+-1(y)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(as)h
+14(the)h
+15(result)h
+14(of)h
+14(an)h
+13(include)h
+14(pragma)h
+12(\()h
+242(\).)h
+407 2508(An)s
+-1(y)h
+16(\014le)h
+15(read)h
+16(in)h
+15(b)h
+-1(y)h
+15(F)h
+-3(unnelW)h
+-3(eb.)h
+22(The)h
+16(phrase)h
+16(\\the)h
+16(input)h
+15(\014le")h
+15(refers)h
+17(to)h
+16(the)h
+16(ro)h
+1(ot)h
+15(input)h
+177 2558(\014le)s
+14(\(sp)h
+1(eci\014ed)h
+16(using)h
+13(the)h
+72(option\).)h
+445 2634(An)s
+14(output)h
+14(\014le)h
+14(con)h
+-1(taining)h
+13(a)h
+14(cop)h
+-1(y)h
+13(of)h
+14(the)h
+14(output)h
+15(sen)h
+-1(t)h
+15(to)h
+13(the)h
+15(user's)h
+15(console)h
+14(during)h
+14(an)h
+177 2683(in)s
+-1(v)h
+-1(o)h
+1(cation)h
+13(of)h
+13(F)h
+-3(unnelW)h
+-3(eb.)h
+18(In)h
+13(other)h
+15(systems,)h
+14(this)h
+14(\014le)h
+13(is)h
+14(sometimes)h
+12(called)h
+14(a)h
+13(\\log)h
+13(\014le".)h
+429 2759(An)s
+14(output)h
+15(\014le)h
+13(summarizing)h
+11(the)h
+15(result)h
+14(of)h
+14(pro)h
+1(cessing)h
+15(an)h
+13(input)h
+14(\014le.)h
+342 2835(A)s
+14(binding)h
+13(of)h
+13(a)h
+14(name)h
+13(to)h
+13(a)h
+14(string.)h
+1032 2940(115)s
+116 @eop
+117 @bop0
+117 @bop1
+cmtt10.300 sf
+1676 913(@p)s
+1057 1760(@)s
+806(@=)h
+cmbx10.300 sf
+177 42(Macro)s
+14(de\014niti)h
+-1(on)h
+-1(:)h
+177 166(Mapp)s
+1(er:)h
+177 291(Option:)s
+177 415(Output)s
+15(\014le:)h
+177 689(P)s
+-1(arser:)h
+177 863(Pragma:)s
+177 988(Prin)s
+-1(t)h
+-1(ed)h
+19(do)h
+1(cumen)h
+-1(tati)h
+-1(on:)h
+177 1112(Pro)s
+1(duct)h
+11(\014le:)h
+177 1287(Scanner:)s
+177 1461(Script:)s
+177 1536(Shell:)s
+177 1710(Sp)s
+1(ecial)h
+12(c)h
+-1(haracter:)h
+177 1885(Sp)s
+1(ecial)h
+13(sequence:)h
+177 2109(T)s
+-4(angle:)h
+177 2233(T)s
+-1(yp)h
+1(esetting)h
+14(directiv)h
+-2(e:)h
+177 2358(W)s
+-4(ea)h
+-1(v)h
+-1(e:)h
+cmr10.300 sf
+552 42(A)s
+12(construct)h
+14(app)h
+1(earing)h
+12(in)h
+12(a)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(\014le)h
+12(that)h
+13(binds)h
+12(a)h
+12(name)h
+11(to)h
+12(a)h
+11(text)h
+13(string.)h
+177 91(A)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(\014le)h
+14(consists)h
+15(of)h
+14(a)h
+13(series)h
+15(of)h
+14(macro)h
+12(de\014nitions)h
+14(surrounded)h
+15(b)h
+-1(y)h
+14(do)h
+1(cumen)h
+-1(tary)h
+13(text.)h
+373 166(A)s
+13(comp)h
+1(onen)h
+-1(t)h
+12(of)h
+12(the)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+12(program)h
+12(that)h
+12(reads)h
+14(in)h
+12(the)h
+14(input)h
+12(\014le)h
+13(and)h
+13(creates)h
+14(a)h
+13(cop)h
+-1(y)h
+177 216(of)s
+13(it)h
+14(in)h
+13(memory)h
+-4(.)h
+353 291(An)s
+14(parameter)h
+13(in)h
+-1(ternal)h
+12(to)h
+14(the)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(program)h
+12(whic)h
+-1(h)h
+13(can)h
+14(b)h
+1(e)h
+13(con)h
+-1(trolled)h
+13(b)h
+-1(y)h
+14(comm)h
+-1(and)h
+177 340(line)s
+14(argumen)h
+-1(ts)h
+13(or)h
+14(pragmas.)h
+444 415(An)s
+-1(y)h
+15(\014le)h
+15(written)h
+16(b)h
+-1(y)h
+15(F)h
+-3(unnelW)h
+-3(eb.)h
+22(This)h
+16(includes)h
+16(listing,)h
+14(journal,)h
+14(pro)h
+1(duct,)h
+16(and)h
+16(do)h
+1(cu-)h
+177 465(men)s
+-1(tation)h
+14(\014les.)h
+21(\(W)h
+-3(arning:)h
+20(During)h
+14(most)h
+14(of)h
+14(F)h
+-3(unnelW)h
+-3(eb's)h
+15(dev)h
+-1(elopmen)h
+-1(t)h
+14(the)h
+16(term)h
+14(\\output)h
+15(\014le")h
+15(w)h
+-1(as)h
+177 515(also)s
+10(used)h
+12(to)h
+11(refer)h
+12(to)h
+11(what)h
+11(are)h
+11(no)h
+-1(w)h
+10(called)h
+11(\\pro)h
+1(duct)h
+12(\014les".)h
+17(This)h
+11(turned)h
+11(out)h
+11(to)h
+11(b)h
+1(e)h
+12(extremely)h
+10(confusing)h
+177 565(and)s
+13(so)h
+14(the)h
+13(term)h
+13(\\pro)h
+1(duct)h
+14(\014le")h
+13(w)h
+-1(as)h
+13(in)h
+-1(v)h
+-1(en)h
+-1(ted)h
+13(to)h
+14(distinguish)h
+12(the)h
+14(generic)h
+14(from)h
+12(the)h
+14(sp)h
+1(eci\014c.)h
+19(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+177 614(as)s
+14(this)h
+14(w)h
+-1(as)h
+14(a)h
+13(late)h
+14(mo)h
+1(di\014cation,)h
+11(y)h
+-1(ou)h
+14(ma)h
+-1(y)h
+12(\014nd)h
+14(some)h
+13(o)h
+1(ccurrence)h
+1(s)h
+16(of)h
+13(the)h
+15(old)h
+13(use)h
+14(of)h
+14(\\output)h
+14(\014le".\).)h
+346 689(A)s
+15(comp)h
+1(onen)h
+-1(t)h
+14(of)h
+15(the)h
+16(F)h
+-3(unnelW)h
+-3(eb)h
+14(program)h
+14(that)h
+15(pro)h
+1(cesses)h
+17(the)h
+16(tok)h
+-1(en)h
+15(list)h
+15(generated)h
+16(b)h
+-1(y)h
+15(the)h
+177 739(scanner)s
+17(and)h
+16(pro)h
+1(duces)h
+17(a)h
+16(macro)h
+14(table)h
+16(and)h
+15(a)h
+16(do)h
+1(cumen)h
+-1(t)h
+15(list.)h
+23(The)h
+17(parser)h
+17(mai)h
+-1(nly)h
+14(analyses)h
+16(the)h
+16(input)h
+177 789(\014le)s
+14(at)h
+14(the)h
+14(syn)h
+-1(tactic)h
+15(lev)h
+-1(el,)h
+13(but)h
+14(also)h
+13(do)h
+1(es)h
+15(some)h
+13(ligh)h
+-1(t)h
+-1(w)h
+-1(eigh)h
+-1(t)h
+12(seman)h
+-1(tic)h
+13(c)h
+-1(hec)h
+-1(king)h
+14(to)h
+1(o.)h
+370 863(Single-line)s
+11(directiv)h
+-1(es)h
+14(that)h
+12(app)h
+1(ears)h
+13(in)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+11(\014les.)h
+18(Pragmas)h
+11(con)h
+-1(trol)h
+12(ev)h
+-1(erything)h
+13(from)h
+177 913(maxim)s
+-3(um)h
+11(input)h
+14(line)h
+13(length)h
+14(to)h
+14(t)h
+-1(yp)h
+1(esetter)h
+16(dep)h
+1(endence.)h
+20(A)h
+14(pragma)h
+12(line)h
+14(starts)h
+15(with)h
+13(\\)h
+44(".)h
+708 988(Sheets)s
+21(of)h
+18(pap)h
+1(er)h
+20(resulting)h
+18(from)h
+18(actually)h
+18(t)h
+-1(yp)h
+1(esetting)h
+19(and)h
+19(prin)h
+-1(ting)h
+18(a)h
+177 1038(do)s
+1(cumen)h
+-1(tation)h
+13(\014le.)h
+451 1112(An)s
+11(output)h
+11(\014le,)h
+11(generated)h
+12(b)h
+-1(y)h
+10(the)h
+12(T)h
+-3(angle)h
+9(comp)h
+1(onen)h
+-1(t)h
+10(of)h
+10(F)h
+-3(unnelW)h
+-3(eb,)h
+11(that)h
+11(con)h
+-1(tains)h
+10(the)h
+177 1162(expansion)s
+14(of)h
+14(the)h
+15(macros)h
+13(in)h
+14(the)h
+15(input)h
+14(\014le.)h
+19(Note:)h
+19(Other)h
+16(names)h
+13(considered)h
+16(for)h
+13(this)h
+15(w)h
+-1(ere:)h
+19(generated)h
+177 1212(\014le,)s
+14(expanded)h
+14(\014le,)h
+14(result)h
+14(\014le,)h
+14(program)h
+12(\014le,)h
+13(and)h
+14(tangle)h
+14(\014le.)h
+374 1287(A)s
+14(comp)h
+1(onen)h
+-1(t)h
+12(of)h
+13(the)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(program)h
+12(that)h
+14(scans)h
+14(a)h
+13(cop)h
+-1(y)h
+14(of)h
+12(the)h
+15(input)h
+13(\014le)h
+13(in)h
+13(memory)h
+177 1337(and)s
+14(generates)h
+16(a)h
+14(line)h
+14(list)h
+13(and)h
+14(a)h
+14(tok)h
+-1(en)h
+14(list)h
+14(to)h
+14(b)h
+1(e)h
+15(fed)h
+14(to)h
+14(the)h
+15(parser.)h
+20(The)h
+15(scanner)h
+15(pro)h
+1(cesse)h
+1(s)h
+16(the)h
+15(input)h
+177 1386(at)s
+14(the)h
+14(lexical)h
+13(lev)h
+-1(el.)h
+335 1461(A)s
+14(\014le)h
+13(con)h
+-1(taining)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(shell)h
+13(commands.)h
+309 1536(A)s
+11(comm)h
+-1(and)h
+9(language)h
+10(in)h
+-1(terpreter)h
+13(built)h
+10(in)h
+-1(to)h
+10(the)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+10(program.)h
+16(The)h
+11(in)h
+-1(terpreter)h
+13(allo)h
+-1(ws)h
+177 1586(the)s
+19(user)h
+18(to)h
+18(in)h
+-1(v)h
+-1(ok)h
+-1(e)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+17(prop)h
+1(er)h
+19(man)h
+-1(y)h
+16(times)h
+17(during)h
+17(a)h
+18(single)h
+17(in)h
+-1(v)h
+-1(o)h
+1(cation)h
+17(of)h
+17(the)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+177 1636(program.)s
+563 1710(A)s
+13(distinguished)h
+12(c)h
+-1(haracter)h
+14(in)h
+11(a)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+12(input)h
+12(\014le)h
+13(that)h
+12(in)h
+-1(tro)h
+1(duces)h
+13(a)h
+13(sp)h
+1(ecial)h
+177 1760(sequence.)s
+32(By)h
+19(default)h
+17(the)h
+19(sp)h
+1(ecial)h
+18(c)h
+-1(haracter)h
+19(is)h
+18(\\)h
+22(".)h
+29(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+19(it)h
+18(can)h
+18(b)h
+1(e)h
+18(c)h
+-1(hanged)h
+19(using)h
+17(the)h
+19(\\)h
+44(")h
+177 1810(sp)s
+1(ecial)h
+14(sequence)h
+1(.)h
+554 1885(A)s
+12(sp)h
+1(ecial)h
+13(sequence)h
+15(is)h
+13(a)h
+12(construct)h
+14(in)h
+-1(tro)h
+1(duced)h
+13(b)h
+-1(y)h
+13(the)h
+13(sp)h
+1(ecial)h
+13(c)h
+-1(haracter.)h
+19(Sp)h
+1(ecial)h
+177 1934(sequences)s
+17(are)h
+15(used)h
+15(to)h
+15(de\014ne)h
+15(a)h
+14(structure)h
+17(in)h
+14(a)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(input)h
+14(\014le)h
+14(that)h
+15(exists)h
+15(at)h
+14(a)h
+14(higher)h
+15(lev)h
+-1(el)h
+14(to)h
+177 1984(the)s
+18(surrounding)h
+18(text.)h
+29(A)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+17(input)h
+17(\014le)h
+17(ma)h
+-1(y)h
+16(b)h
+1(e)h
+18(considered)h
+19(to)h
+17(b)h
+1(e)h
+18(a)h
+17(sequence)h
+19(of)h
+17(text)h
+18(and)h
+177 2034(sp)s
+1(ecial)h
+14(sequence)h
+1(s.)h
+350 2109(This)s
+16(is)h
+15(the)h
+16(name)h
+14(for)h
+16(the)h
+16(comp)h
+1(onen)h
+-1(t)h
+14(of)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+15(that)h
+16(generates)h
+17(one)h
+16(or)h
+15(more)h
+15(pro)h
+1(duct)h
+177 2159(\014les)s
+14(con)h
+-1(taining)h
+13(the)h
+15(expansion)h
+13(of)h
+14(macros)h
+13(in)h
+13(the)h
+15(input)h
+13(\014le.)h
+655 2233(A)s
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(directiv)h
+-1(e)h
+15(whose)h
+16(sole)h
+14(e\013ect)h
+16(is)h
+15(to)h
+14(mo)h
+1(dify)h
+13(the)h
+15(w)h
+-1(a)h
+-1(y)h
+14(in)h
+14(whic)h
+-1(h)h
+177 2283(the)s
+15(input)h
+13(\014le)h
+14(is)h
+14(represen)h
+-1(te)h
+1(d)h
+16(in)h
+13(the)h
+15(do)h
+1(cumen)h
+-1(tation)h
+12(\014le.)h
+348 2358(This)s
+16(is)h
+15(the)h
+17(name)h
+15(for)h
+15(the)h
+17(comp)h
+1(onen)h
+-1(t)h
+15(of)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+16(that)h
+16(generates)h
+17(a)h
+16(do)h
+1(cumen)h
+-1(tation)h
+15(\014le)h
+177 2408(con)s
+-1(taining)h
+13(t)h
+-1(yp)h
+1(esetting)h
+15(comm)h
+-1(ands)h
+12(represe)h
+1(n)h
+-1(ting)h
+15(the)h
+14(input)h
+14(\014le.)h
+1032 2940(116)s
+117 @eop
+118 @bop0
+cmbx10.622 sf
+[<FFFFFFFFFFC00000FFFFFFFFFFFC0000FFFFFFFFFFFF0000FFFFFFFFFFFFC000007FF0
+0001FFF000007FF000007FF800007FF000003FFC00007FF000001FFE00007FF000001FFE
+00007FF000000FFF00007FF000000FFF00007FF0000007FF80007FF0000007FF80007FF0
+000007FF80007FF0000007FF80007FF0000007FF80007FF0000007FF80007FF0000007FF
+80007FF0000007FF00007FF000000FFF00007FF000000FFF00007FF000001FFE00007FF0
+00001FFC00007FF000003FF800007FF000007FF000007FF00001FFE000007FF0000FFF80
+00007FFFFFFFFE0000007FFFFFFFFE0000007FFFFFFFFFC000007FF000007FF000007FF0
+00001FFC00007FF000000FFE00007FF0000007FF00007FF0000007FF80007FF0000003FF
+C0007FF0000003FFC0007FF0000001FFE0007FF0000001FFE0007FF0000001FFF0007FF0
+000001FFF0007FF0000001FFF0007FF0000001FFF0007FF0000001FFF0007FF0000001FF
+F0007FF0000001FFF0007FF0000001FFF0007FF0000001FFE0007FF0000003FFE0007FF0
+000003FFC0007FF0000007FFC0007FF000000FFF80007FF000001FFF00007FF000003FFE
+00007FF00001FFFC00FFFFFFFFFFFFF800FFFFFFFFFFFFE000FFFFFFFFFFFF8000FFFFFF
+FFFFF80000>
+64 59 -4 58 70] 66 dc
+cmbx10.746 sf
+[<FFFFFFFFFFFC0000000000FFFFFFFFFFFFF000000000FFFFFFFFFFFFFE00000000FFFF
+FFFFFFFFFF80000000FFFFFFFFFFFFFFE0000000001FFF80001FFFF8000000001FFF8000
+01FFFC000000001FFF8000007FFF000000001FFF8000003FFF800000001FFF8000001FFF
+800000001FFF8000000FFFC00000001FFF8000000FFFE00000001FFF8000000FFFE00000
+001FFF80000007FFF00000001FFF80000007FFF00000001FFF80000007FFF80000001FFF
+80000007FFF80000001FFF80000007FFF80000001FFF80000007FFF80000001FFF800000
+07FFF80000001FFF80000007FFF80000001FFF80000007FFF80000001FFF80000007FFF8
+0000001FFF80000007FFF00000001FFF80000007FFF00000001FFF8000000FFFE0000000
+1FFF8000000FFFE00000001FFF8000000FFFC00000001FFF8000001FFF800000001FFF80
+00003FFF000000001FFF800000FFFE000000001FFF800003FFF8000000001FFF80001FFF
+F0000000001FFFFFFFFFFFC0000000001FFFFFFFFFFE00000000001FFFFFFFFFF8000000
+00001FFFFFFFFFFE00000000001FFF80007FFF80000000001FFF80001FFFC0000000001F
+FF800007FFE0000000001FFF800003FFF0000000001FFF800001FFF8000000001FFF8000
+01FFFC000000001FFF800000FFFE000000001FFF800000FFFE000000001FFF8000007FFE
+000000001FFF8000007FFF000000001FFF8000007FFF000000001FFF8000007FFF000000
+001FFF8000007FFF000000001FFF8000007FFF000000001FFF8000007FFF000000001FFF
+8000007FFF000000001FFF8000007FFF800000001FFF8000007FFF800000001FFF800000
+7FFF800000001FFF8000007FFF800000001FFF8000007FFF800000001FFF8000007FFF80
+00E0001FFF8000007FFF8001F0001FFF8000007FFFC001F0001FFF8000007FFFC001F000
+1FFF8000003FFFC001F0001FFF8000003FFFC003F0001FFF8000001FFFE003E0001FFF80
+00000FFFE007E0FFFFFFFFF00007FFF007C0FFFFFFFFF00003FFFC1F80FFFFFFFFF00001
+FFFFFF00FFFFFFFFF000007FFFFE00FFFFFFFFF000001FFFFC000000000000000000FFF0
+00>
+88 72 -4 70 89] 82 dc
+cmti10.300 sf
+[<007FF0000780000700000700000700000700000E00000E00000E00000E00001C00001C
+00001C00001C0000380000380000380000380000700000700000700000700060E000E0E0
+00C0C00081C0008380004700003C0000>
+24 29 -5 27 22] 74 dc
+cmr10.300 sf
+[<00E0000001900000030800000308000007080000070800000708000007080000071000
+0007100000072000000740000003C03FE003800F00038006000380040005C0040009C008
+0010E0100030E010006070200060702000E0384000E03C4000E01C8000E00F0020E00700
+20700780403009C0401830E18007C03E00>
+32 31 -2 29 32] 38 dc
+118 @bop1
+cmcsc10.300 sf
+723 1967(a)s
+cmbx10.622 sf
+177 378(App)s
+3(endix)h
+34(B)h
+cmbx10.746 sf
+177 610(References)s
+cmti10.300 sf
+1108 1847(The)s
+14(Computer)h
+15(Journal)h
+cmbx10.300 sf
+177 851([ANSI])s
+177 1025([ANZE])s
+177 1150([BSI82])s
+177 1324([Gries81])s
+177 1399([Humphries91)s
+-1(])h
+177 1523([Kernighan88])s
+177 1648([Kn)s
+-1(uth83])h
+177 1773([Kn)s
+-1(uth84])h
+177 1847([Kn)s
+-1(uth84])h
+177 1972([Lamp)s
+1(ort86])h
+177 2096([Roso)s
+-1(vsky90])h
+177 2221([Smith91])s
+177 2345([Strunk79])s
+177 2470([USDOD83])s
+cmr10.300 sf
+342 851(Australian)s
+20(Standard)h
+21(AS)h
+20(3955-1991,)h
+19(\\Programm)h
+-1(ing)h
+18(Languages)h
+20(|)h
+20(C",)h
+20(\(ISBN:)h
+20(0-7262-)h
+177 901(6970-0\),)s
+16(12)h
+17(July)h
+17(1991.)h
+27(Iden)h
+-1(tical)h
+17(to:)h
+24(In)h
+-1(ternational)h
+17(Standard)h
+17(ISO/IEC)h
+18(9899:)h
+23(1990)h
+16(Programm)h
+-1(ing)h
+177 951(Languages)s
+14(|)h
+13(C.)h
+353 1025(\\Australia,)s
+16(New)h
+16(Zealand)h
+16(Encyclop)h
+1(edia",)h
+16(En)h
+-1(try:)h
+22(\\F)h
+-3(unnel-w)h
+-1(eb)h
+15(spiders",)h
+17(V)h
+-3(ol)h
+15(7,)h
+15(pp.)h
+16(564{)h
+177 1075(565,)s
+13(Ba)h
+-1(y)h
+14(Bo)h
+1(oks,)h
+13(Sydney)h
+-3(,)h
+14(\(ISBN:)h
+14(85835{127{)h
+-1(7\),)h
+12(1975.)h
+340 1150(British)s
+11(Standards)h
+11(Institute,)h
+11(\\Sp)h
+1(eci\014cation)h
+11(for)h
+10(Computer)h
+10(Programm)h
+-1(i)h
+-1(ng)h
+9(Language)h
+10(P)h
+-1(ascal",)h
+177 1200(Publication)s
+15(BS6192:1982,)h
+13(British)h
+16(Standards)h
+16(Institute,)h
+17(P)h
+-3(.O.)h
+15(Bo)h
+-1(x)h
+15(372,)h
+15(Milton)h
+14(Keynes,)h
+17(MK146LO,)h
+177 1249(1982.)s
+372 1324(Gries)s
+10(D.,)h
+9(\\The)h
+10(Science)h
+11(of)h
+9(Programm)h
+-1(ing)h
+-1(",)h
+8(Springer-V)h
+-3(erlag,)h
+10(\(ISBN:)h
+10(0-387-9064)h
+-1(1-X\),)h
+7(1981.)h
+497 1399(Humphries)s
+15(B,)h
+15(\\Neglected)h
+16(P)h
+-1(o)h
+1(ems)h
+15(and)h
+15(Other)h
+16(Creatures",)h
+17(Angus)h
+16(and)h
+15(Rob)h
+1(ertson,)h
+177 1449(Sydney)s
+-3(,)h
+14(\(ISBN:)h
+14(0-207-1721)h
+-1(2-9\),)h
+11(1991.)h
+487 1523(Kernighan)s
+17(B.W.,)h
+17(Ritc)h
+-1(hie)h
+16(D.M.,)h
+16(\\The)h
+17(C)h
+17(Programm)h
+-1(ing)h
+14(Language",)h
+17(\(second)h
+18(edi-)h
+177 1573(tion,\\ANSI)s
+13(C"\),)h
+13(Pren)h
+-1(tice)h
+16(Hall,)h
+12(\(ISBN:)h
+14(0-13-110362-)h
+-1(8\),)h
+12(1988.)h
+401 1648(Kn)s
+-1(uth)h
+15(D.E.,)h
+14(\\The)h
+15(WEB)h
+15(System)h
+14(of)h
+15(Structured)h
+16(Do)h
+1(cumen)h
+-1(tation",)h
+13(\(W)h
+-3(eb)h
+15(User)h
+16(Man)h
+-1(ual,)h
+177 1698(V)s
+-3(ersion)h
+14(2.5,)h
+13(No)h
+-1(v)h
+-1(em)h
+-1(b)h
+1(er,)h
+12(1983\),)h
+13(Stanford)h
+13(Univ)h
+-1(ersit)h
+-1(y)h
+-3(,)h
+13(1983.)h
+399 1773(Kn)s
+-1(uth)h
+15(D.E.,)h
+12(\\The)h
+14(T)h
+767 1782(E)s
+790 1773(Xb)s
+1(o)h
+1(ok",)h
+13(Addison-W)h
+-3(esley)h
+-3(,)h
+13(\(ISBN:)h
+14(0-201-13448-)h
+-1(9\),)h
+12(1984.)h
+399 1847(Kn)s
+-1(uth)h
+14(D.E.,)h
+12(\\Literate)h
+14(Programm)h
+-1(i)h
+-1(ng",)h
+427(,)h
+13(V)h
+-3(ol.)h
+11(27,)h
+13(No.)h
+13(2,)h
+12(pp.)h
+13(97-)h
+177 1897(111,)s
+13(1984.)h
+17(Note:)h
+18(The)h
+15(author)h
+13(of)h
+14(this)h
+14(man)h
+-1(ual)h
+11(has)h
+14(not)h
+14(y)h
+-1(et)h
+14(obtained)h
+14(this)h
+14(pap)h
+1(er.)h
+449 1972(Lamp)s
+1(ort)h
+16(L.,)h
+16(\\L)h
+4(T)h
+765 1985(E)s
+788 1972(X:)s
+16(A)h
+16(Do)h
+1(cumen)h
+-1(t)h
+16(Preparation)h
+17(System",)h
+16(Addison-W)h
+-3(esley)h
+-3(,)h
+16(\(ISBN:)h
+177 2022(0-201-15790-)s
+-1(X\),)h
+12(1986.)h
+463 2096(Roso)s
+-1(vsky)h
+15(H.,)h
+16(\\The)h
+16(Univ)h
+-1(ersit)h
+-1(y:)h
+23(An)h
+16(Owner's)h
+17(Man)h
+-1(ual",)h
+15(W.W.Norton)h
+14(&)h
+17(Compan)h
+-1(y)h
+-4(,)h
+177 2146(Inc.,)s
+14(\(ISBN:)h
+14(0-393-0278)h
+-1(2-1\),)h
+11(1990.)h
+394 2221(Smith)s
+17(L.M.C.,)h
+17(\\An)h
+19(Annotated)h
+18(Bibliograph)h
+-1(y)h
+17(of)h
+18(Literate)h
+19(Programm)h
+-1(ing)h
+-1(",)h
+17(A)h
+-1(CM)h
+18(SIG-)h
+177 2271(PLAN)s
+14(Notices,)h
+15(V)h
+-3(ol.)h
+12(26,)h
+13(No.)h
+13(1,)h
+13(Jan)h
+-1(uary)h
+14(1991.)h
+407 2345(Strunk)s
+13(W.,)h
+12(White)h
+12(E.B.,)h
+13(\\The)h
+13(Elemen)h
+-1(ts)h
+12(of)h
+12(St)h
+-1(yle",)h
+12(Third)h
+13(Edition,)h
+12(MacMillan)h
+11(Publish-)h
+177 2395(ing)s
+13(Compan)h
+-1(y)h
+-3(,)h
+11(New)h
+15(Y)h
+-3(ork,)h
+13(\(ISBN:)h
+14(0-02-41820)h
+-1(0-1\),)h
+11(1979.)h
+442 2470(\\The)s
+19(Programm)h
+-1(ing)h
+16(Language)h
+18(Ada)h
+18(Reference)h
+20(Man)h
+-1(ual",)h
+18(American)h
+18(National)h
+17(Stan-)h
+177 2520(dards)s
+15(Institute)h
+14(Inc,)h
+14(ANSI/MIL-STD-1815A-1983,)h
+11(1983.)h
+1032 2940(117)s
+118 @eop
+119 @bop0
+cmbx10.746 sf
+[<7FFFFF801FFFFF007FFFFF801FFFFF007FFFFF801FFFFF007FFFFF801FFFFF007FFFFF
+801FFFFF00007FF80001FF0000007FFC0001FC0000003FFE0003F80000001FFF0007F000
+00000FFF0007E000000007FF800FC000000003FFC01F8000000003FFE03F8000000001FF
+F07F0000000000FFF8FE00000000007FF9FC00000000003FFFF800000000003FFFF00000
+0000001FFFE000000000000FFFC0000000000007FFC0000000000003FFC0000000000001
+FFE0000000000001FFF0000000000001FFF8000000000003FFFC000000000003FFFE0000
+00000007FFFE00000000000FEFFF00000000001FCFFF80000000003F87FFC0000000007F
+03FFE000000000FE01FFE000000001FC00FFF000000001F8007FF800000003F0007FFC00
+000007F0003FFE0000000FE0001FFF0000001FC0000FFF0000003F800007FF800000FF80
+0007FFC000FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFFFF
+C0FFFFF8003FFFFFC0>
+64 46 -2 45 63] 120 dc
+cmr10.300 sf
+[<003F800000C0600003001800040004000800020010000100201F00802070808040E040
+4040C0384041C03840818038208380382083803820838038208380382083803820818038
+2041C0382040C0384040E0784020709880201F0F00100000000800000004000000030001
+E000C01F80003FF000>
+32 29 -2 28 32] 64 dc
+[<60F0F060000000000060606060606060606060606060F0F0F0F0F0F0F060>
+8 30 -4 20 12] 60 dc
+[<030007800780030000000000000000000000010001000200020002000200060004000C
+00180038007000E000E01EE01EE01EE00E600430180FE0>
+16 29 -2 20 20] 62 dc
+119 @bop1
+cmbx10.746 sf
+177 279(Index)s
+cmr10.300 sf
+177 487(+=)s
+15(tutorial)h
+13(26)h
+177 537(+=)s
+15(85)h
+177 587(2167A)s
+13(51)h
+177 637(==)s
+15(tutorial)h
+13(26)h
+177 687(==)s
+15(85)h
+177 737(@!)s
+14(37)h
+177 787(@!)s
+14(75)h
+177 837(@")s
+14(29)h
+177 886(@\()s
+14(29)h
+177 936(@\))s
+14(29)h
+177 986(@+)s
+15(20)h
+177 1036(@+)s
+15(76)h
+177 1086(@,)s
+14(29)h
+177 1136(@-)s
+14(23)h
+177 1186(@-)s
+14(77)h
+177 1236(@1...)s
+13(28)h
+177 1286(@1...)s
+13(86)h
+177 1336(@<)s
+14(20)h
+177 1386(@=)s
+15(20)h
+177 1436(@>)s
+14(20)h
+177 1486(@A...)s
+13(34)h
+177 1536(@braces)s
+16(20)h
+177 1586(@braces)s
+16(37)h
+177 1636(@circum\015ex)s
+14(74)h
+177 1686(@dollar)s
+13(22)h
+177 1736(@hash)s
+15(76)h
+177 1786(@i)s
+14(30)h
+177 1836(@i)s
+14(77)h
+177 1886(@M)s
+14(tutorial)h
+13(24)h
+177 1935(@M)s
+14(85)h
+177 1985(@O)s
+15(20)h
+177 2035(@O)s
+15(22)h
+177 2085(@slash)s
+14(37)h
+177 2135(@Z)s
+15(tutorial)h
+13(24)h
+177 2185(@Z)s
+15(85)h
+177 2235(absen)s
+-1(t)h
+15(comm)h
+-1(and)h
+12(93)h
+177 2285(abstract)s
+15(data)h
+13(t)h
+-1(yp)h
+1(e)h
+15(55)h
+177 2335(abstraction)s
+14(co)h
+1(de)h
+15(56)h
+177 2385(abstraction)s
+14(data)h
+14(26)h
+177 2435(abstraction)s
+14(set)h
+15(59)h
+177 2485(abuse)s
+15(comm)h
+-1(en)h
+-1(ts)h
+13(57)h
+177 2535(access)s
+16(random)h
+12(50)h
+177 2585(ac)s
+-1(kno)h
+-1(wledgemen)h
+-1(ts)h
+13(11)h
+177 2635(action)s
+14(execution)h
+14(order)h
+15(71)h
+177 2685(Action)s
+14(options)h
+14(70)h
+177 2735(actual)s
+14(parameters)h
+14(29)h
+177 2785(Ada)s
+14(11)h
+177 2835(Ada)s
+14(44)h
+1136 487(Ada)s
+13(49)h
+1136 537(Ada)s
+13(51)h
+1136 587(Ada)s
+13(55)h
+1136 637(additiv)s
+-1(e)h
+13(macros)h
+13(26)h
+1136 687(additiv)s
+-1(e)h
+13(macro)h
+12(26)h
+1136 737(additiv)s
+-1(ely)h
+12(de\014ned)h
+15(85)h
+1136 787(Adelaide)s
+13(Univ)h
+-1(ersit)h
+-1(y)h
+14(59)h
+1136 837(admin)s
+11(directory)h
+15(102)h
+1136 886(admini)s
+-1(stration)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(109)h
+1136 936(ADT)s
+13(55)h
+1136 986(alias)s
+12(49)h
+1136 1036(Analyser)s
+14(115)h
+1136 1086(analyser)s
+14(65)h
+1136 1136(analyser)s
+14(88)h
+1136 1186(analysis)s
+13(static)h
+14(88)h
+1136 1236(Andrew)s
+14(T)h
+-3(rev)h
+-1(orro)h
+-1(w)h
+14(13)h
+1136 1286(anima)s
+-1(l)h
+12(p)h
+1(o)h
+1(em)h
+13(30)h
+1136 1336(ann)s
+-1(ual)h
+13(rep)h
+1(ort)h
+14(58)h
+1136 1386(anon)s
+-1(ymo)h
+-1(us)h
+13(ftp)h
+13(101)h
+1136 1436(ANSI)s
+14(109)h
+1136 1486(ANSI)s
+14(117)h
+1136 1536(answ)s
+-1(ers)h
+15(correct)h
+15(102)h
+1136 1586(answ)s
+-1(ers)h
+15(directory)h
+14(102)h
+1136 1636(ANZE)s
+14(117)h
+1136 1686(ANZE)s
+14(19)h
+1136 1736(applications)s
+12(F)h
+-3(unnelW)h
+-3(eb)h
+14(53)h
+1136 1786(arbitrary)s
+13(c)h
+-1(haracters)h
+16(inserting)h
+14(in)h
+-1(to)h
+13(text)h
+15(74)h
+1136 1836(arc)s
+-1(hitecture)h
+15(seman)h
+-1(tic)h
+13(64)h
+1136 1886(arc)s
+-1(hiv)h
+-1(e)h
+14(ftp)h
+13(114)h
+1136 1935(arc)s
+-1(hiv)h
+-1(e)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(114)h
+1136 1985(argumen)s
+-1(t)h
+12(command)h
+12(line)h
+13(67)h
+1136 2035(argumen)s
+-1(ts)h
+13(67)h
+1136 2085(Argumen)s
+-1(t)h
+13(115)h
+1136 2135(assertion)s
+14(sev)h
+-1(erit)h
+-1(y)h
+15(65)h
+1136 2185(assertion)s
+14(status)h
+15(90)h
+1136 2235(A)s
+-1(trax)h
+14(robustus)h
+14(19)h
+1136 2285(attributes)s
+14(macro)h
+13(85)h
+1136 2335(author)s
+14(con)h
+-1(tacting)h
+13(114)h
+1136 2385(B)s
+14(option)h
+13(68)h
+1136 2435(Barry)s
+14(Dwy)h
+-1(er)h
+14(11)h
+1136 2485(Barry)s
+14(Dwy)h
+-1(er)h
+14(59)h
+1136 2535(Barry)s
+14(Humphries)h
+13(19)h
+1136 2585(BASIC)s
+14(57)h
+1136 2635(Begg)s
+14(Jerem)h
+-1(y)h
+14(11)h
+1136 2685(binding)s
+13(problems)h
+12(57)h
+1136 2735(bindings)s
+13(macro)h
+13(22)h
+1136 2785(blank)s
+13(inden)h
+-1(tation)h
+13(78)h
+1136 2835(blank)s
+13(inden)h
+-1(tation)h
+13(78)h
+1032 2940(118)s
+119 @eop
+120 @bop0
+120 @bop1
+cmr10.300 sf
+177 42(blanks)s
+14(trailing)h
+12(42)h
+177 91(b)s
+1(oring)h
+14(organization)h
+12(50)h
+177 141(Brissenden)s
+16(Roger)h
+14(11)h
+177 191(BSI82)s
+14(117)h
+177 241(BSI82)s
+14(15)h
+177 291(BSI82)s
+14(18)h
+177 341(C)s
+14(header)h
+15(57)h
+177 391(C)s
+14(option)h
+13(68)h
+177 441(C)s
+14(prepro)h
+1(cess)h
+1(or)h
+15(20)h
+177 490(C)s
+14(prepro)h
+1(cess)h
+1(or)h
+15(57)h
+177 540(calls)s
+14(macro)h
+12(86)h
+177 590(calls)s
+14(n)h
+-1(um)h
+-1(b)h
+1(er)h
+13(23)h
+177 640(camera)s
+13(p)h
+1(o)h
+1(em)h
+13(30)h
+177 690(case)s
+15(dep)h
+1(endence)h
+17(67)h
+177 740(c)s
+-1(hanging)h
+13(sp)h
+1(ecial)h
+14(c)h
+-1(haracter)h
+16(31)h
+177 790(c)s
+-1(haracters)h
+16(con)h
+-1(trol)h
+13(42)h
+177 840(c)s
+-1(haracters)h
+16(non-prin)h
+-1(table)h
+13(96)h
+177 889(c)s
+-1(haracters)h
+16(unprin)h
+-1(table)h
+13(71)h
+177 939(c)s
+-1(hec)h
+-1(ks)h
+15(macro)h
+13(88)h
+177 989(c)s
+-1(heer)h
+16(hac)h
+-1(k)h
+-1(er's)h
+14(35)h
+177 1039(c)s
+-1(heer)h
+16(programm)h
+-1(er's)h
+12(35)h
+177 1089(co)s
+1(de)h
+15(abstraction)h
+14(56)h
+177 1139(co)s
+1(de)h
+15(explaining)h
+12(17)h
+177 1189(co)s
+1(de)h
+15(gardening)h
+13(53)h
+177 1239(co)s
+1(de)h
+15(vs)h
+14(do)h
+1(cumen)h
+-1(tation)h
+13(32)h
+177 1288(co)s
+1(dify)h
+14(comm)h
+-1(and)h
+12(93)h
+177 1338(comma)s
+-1(nd)h
+12(absen)h
+-1(t)h
+15(93)h
+177 1388(comma)s
+-1(nd)h
+12(co)h
+1(dify)h
+14(93)h
+177 1438(comma)s
+-1(nd)h
+12(compare)h
+13(93)h
+177 1488(comma)s
+-1(nd)h
+12(de\014ne)h
+15(91)h
+177 1538(comma)s
+-1(nd)h
+12(de\014ne)h
+15(94)h
+177 1588(comma)s
+-1(nd)h
+12(di\013summa)h
+-1(ry)h
+12(95)h
+177 1638(comma)s
+-1(nd)h
+12(di\013zero)h
+15(95)h
+177 1687(comma)s
+-1(nd)h
+12(di\013)h
+14(94)h
+177 1737(comma)s
+-1(nd)h
+12(eneo)h
+15(95)h
+177 1787(comma)s
+-1(nd)h
+12(execute)h
+16(96)h
+177 1837(comma)s
+-1(nd)h
+12(exists)h
+15(96)h
+177 1887(comma)s
+-1(nd)h
+12(\014xeols)h
+14(96)h
+177 1937(comma)s
+-1(nd)h
+12(fw)h
+14(97)h
+177 1987(comma)s
+-1(nd)h
+12(help)h
+14(97)h
+177 2037(comma)s
+-1(nd)h
+12(here)h
+15(98)h
+177 2086(comma)s
+-1(nd)h
+12(in)h
+-1(terpreter)h
+16(47)h
+177 2136(comma)s
+-1(nd)h
+12(length)h
+14(91)h
+177 2186(comma)s
+-1(nd)h
+12(line)h
+14(argumen)h
+-1(t)h
+12(67)h
+177 2236(comma)s
+-1(nd)h
+12(line)h
+14(in)h
+-1(terface)h
+14(66)h
+177 2286(comma)s
+-1(nd)h
+12(line)h
+14(options)h
+13(syn)h
+-1(tax)h
+14(67)h
+177 2336(comma)s
+-1(nd)h
+12(line)h
+14(parsing)h
+13(66)h
+177 2386(comma)s
+-1(nd)h
+12(line)h
+14(pro)h
+1(cessing)h
+15(66)h
+177 2436(comma)s
+-1(nd)h
+12(line)h
+14(pro)h
+1(cessing)h
+15(92)h
+177 2486(comma)s
+-1(nd)h
+12(line)h
+14(syn)h
+-1(tax)h
+14(67)h
+177 2535(comma)s
+-1(nd)h
+12(options)h
+14(92)h
+177 2585(comma)s
+-1(nd)h
+12(quit)h
+14(98)h
+177 2635(comma)s
+-1(nd)h
+12(set)h
+15(48)h
+177 2685(comma)s
+-1(nd)h
+12(set)h
+15(98)h
+177 2735(comma)s
+-1(nd)h
+12(shell)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(90)h
+177 2785(comma)s
+-1(nd)h
+12(sho)h
+-1(w)h
+14(48)h
+177 2835(comma)s
+-1(nd)h
+12(sho)h
+-1(w)h
+14(98)h
+1136 42(comm)s
+-1(and)h
+12(skipto)h
+13(98)h
+1136 91(comm)s
+-1(and)h
+12(status)h
+14(99)h
+1136 141(comm)s
+-1(and)h
+12(tolerate)h
+14(100)h
+1136 191(comm)s
+-1(and)h
+12(trace)h
+15(on)h
+13(48)h
+1136 241(comm)s
+-1(and)h
+12(trace)h
+15(100)h
+1136 291(comm)s
+-1(and)h
+12(v)h
+-1(erb)h
+14(fw)h
+14(66)h
+1136 341(comm)s
+-1(and)h
+12(writeu)h
+14(100)h
+1136 391(comm)s
+-1(and)h
+12(write)h
+14(100)h
+1136 441(comm)s
+-1(ands)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(90)h
+1136 490(comm)s
+-1(ands)h
+12(shell)h
+14(93)h
+1136 540(comm)s
+-1(ands)h
+12(useful)h
+14(47)h
+1136 590(comm)s
+-1(en)h
+-1(ts)h
+13(abuse)h
+14(57)h
+1136 640(comm)s
+-1(en)h
+-1(ts)h
+13(elimi)h
+-1(nating)h
+12(57)h
+1136 690(comm)s
+-1(en)h
+-1(ts)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(75)h
+1136 740(comm)s
+-1(en)h
+-1(ts)h
+13(37)h
+1136 790(comm)s
+-1(itm)h
+-2(en)h
+-1(t)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(109)h
+1136 840(compare)s
+13(comm)h
+-1(and)h
+12(93)h
+1136 889(compilers)s
+12(F)h
+-3(ortran)h
+14(42)h
+1136 939(compili)s
+-1(ng)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(105)h
+1136 989(complete)s
+13(example)h
+12(38)h
+1136 1039(conditionals)s
+12(fudging)h
+13(44)h
+1136 1089(console)s
+14(output)h
+14(suppress)h
+16(69)h
+1136 1139(constructs)s
+16(section)h
+14(83)h
+1136 1189(con)s
+-1(tacting)h
+13(author)h
+14(114)h
+1136 1239(con)s
+-1(ten)h
+-1(ts)h
+15(table)h
+13(of)h
+14(81)h
+1136 1288(con)s
+-1(text)h
+14(in\014nite)h
+14(68)h
+1136 1338(con)s
+-1(text)h
+14(listing)h
+13(\014le)h
+14(68)h
+1136 1388(con)s
+-1(text)h
+14(69)h
+1136 1438(con)s
+-1(trol)h
+13(c)h
+-1(haracters)h
+16(inserting)h
+14(in)h
+-1(to)h
+13(text)h
+15(74)h
+1136 1488(con)s
+-1(trol)h
+13(c)h
+-1(haracters)h
+16(42)h
+1136 1538(con)s
+-1(trollabili)h
+-1(t)h
+-1(y)h
+12(18)h
+1136 1588(cop)s
+-1(yrigh)h
+-1(t)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(112)h
+1136 1638(cop)s
+-1(yrigh)h
+-1(t)h
+13(notice)h
+14(1)h
+1136 1687(correct)s
+15(answ)h
+-1(ers)h
+15(102)h
+1136 1737(cross)s
+15(reference)h
+16(n)h
+-1(um)h
+-1(b)h
+1(ering)h
+13(89)h
+1136 1787(cross)s
+15(referencing)h
+15(17)h
+1136 1837(cross)s
+15(referencing)h
+15(89)h
+1136 1887(cryptic)s
+14(text)h
+15(\014les)h
+14(55)h
+1136 1937(D)s
+13(option)h
+13(49)h
+1136 1987(D)s
+13(option)h
+13(68)h
+1136 2037(dangers)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(50)h
+1136 2086(data)s
+13(abstraction)h
+14(26)h
+1136 2136(Da)s
+-1(vid)h
+12(Hulse)h
+15(11)h
+1136 2186(debugger)s
+14(53)h
+1136 2236(debugging)s
+13(wholistic)h
+13(53)h
+1136 2286(default)s
+13(options)h
+14(49)h
+1136 2336(default)s
+13(options)h
+14(92)h
+1136 2386(default)s
+13(sp)h
+1(ecial)h
+14(c)h
+-1(haracter)h
+16(72)h
+1136 2436(de\014ne)s
+15(comm)h
+-1(and)h
+12(91)h
+1136 2486(de\014ne)s
+15(comm)h
+-1(and)h
+12(94)h
+1136 2535(de\014nition)s
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(63)h
+1136 2585(de\014nition)s
+13(macro)h
+13(85)h
+1136 2635(de\014nition)s
+13(macro)h
+13(87)h
+1136 2685(delete)s
+15(output)h
+14(\014les)h
+14(49)h
+1136 2735(delete)s
+15(output)h
+14(option)h
+13(68)h
+1136 2785(delimi)s
+-1(ting)h
+12(macro)h
+12(parameter)h
+14(87)h
+1136 2835(dep)s
+1(endence)h
+16(case)h
+15(67)h
+1032 2940(119)s
+120 @eop
+121 @bop0
+121 @bop1
+cmr10.300 sf
+177 42(dep)s
+1(endencies)h
+17(\014le)h
+13(49)h
+177 91(dev)s
+-1(elopmen)h
+-1(t)h
+13(time)h
+13(17)h
+177 141(diagnostics)s
+14(lev)h
+-1(els)h
+14(of)h
+13(65)h
+177 191(diagnostics)s
+14(65)h
+177 241(dictionary)s
+13(hac)h
+-1(k)h
+-1(er's)h
+15(35)h
+177 291(di\013)s
+14(comm)h
+-1(and)h
+12(94)h
+177 341(di\013erences)s
+16(\014le)h
+14(94)h
+177 391(di\013summa)s
+-1(ry)h
+12(comma)h
+-1(nd)h
+12(95)h
+177 441(di\013zero)s
+15(comm)h
+-1(and)h
+12(95)h
+177 490(directiv)s
+-1(e)h
+15(emphasis)h
+13(85)h
+177 540(directiv)s
+-1(e)h
+15(literal)h
+13(84)h
+177 590(directiv)s
+-1(e)h
+15(newpage)h
+14(37)h
+177 640(directiv)s
+-1(e)h
+15(table)h
+13(of)h
+14(con)h
+-1(ten)h
+-1(ts)h
+15(37)h
+177 690(directiv)s
+-1(e)h
+15(title)h
+13(37)h
+177 740(directiv)s
+-1(e)h
+15(vskip)h
+13(37)h
+177 790(directiv)s
+-1(es)h
+15(t)h
+-1(yp)h
+1(esetter)h
+16(81)h
+177 840(directiv)s
+-1(es)h
+15(32)h
+177 889(directiv)s
+-1(es)h
+15(83)h
+177 939(Directiv)s
+-1(e)h
+14(115)h
+177 989(directory)s
+15(admin)h
+12(102)h
+177 1039(directory)s
+15(answ)h
+-1(ers)h
+15(102)h
+177 1089(directory)s
+15(hac)h
+-1(kman)h
+12(103)h
+177 1139(directory)s
+15(results)h
+15(103)h
+177 1189(directory)s
+15(scripts)h
+15(103)h
+177 1239(directory)s
+15(sources)h
+15(103)h
+177 1288(directory)s
+15(tests)h
+15(104)h
+177 1338(directory)s
+15(tree)h
+15(102)h
+177 1388(directory)s
+15(userman)h
+13(105)h
+177 1438(directory)s
+15(70)h
+177 1488(Distribution)s
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(113)h
+177 1538(do)s
+1(cumen)h
+-1(t)h
+14(list)h
+13(dump)h
+13(68)h
+177 1588(do)s
+1(cumen)h
+-1(t)h
+14(list)h
+13(64)h
+177 1638(do)s
+1(cumen)h
+-1(tation)h
+13(duplicate)h
+14(51)h
+177 1687(do)s
+1(cumen)h
+-1(tation)h
+13(examples)h
+13(58)h
+177 1737(Do)s
+1(cumen)h
+-1(tation)h
+12(\014le)h
+14(115)h
+177 1787(do)s
+1(cumen)h
+-1(tation)h
+13(\014le)h
+14(18)h
+177 1837(do)s
+1(cumen)h
+-1(tation)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(110)h
+177 1887(do)s
+1(cumen)h
+-1(tation)h
+13(in)h
+-1(terdep)h
+1(enden)h
+-1(t)h
+16(50)h
+177 1937(do)s
+1(cumen)h
+-1(tation)h
+13(o)h
+-1(v)h
+-1(er)h
+14(51)h
+177 1987(do)s
+1(cumen)h
+-1(tation)h
+13(pa)h
+-1(vlo)h
+-1(v)h
+12(51)h
+177 2037(do)s
+1(cumen)h
+-1(tation)h
+13(vs)h
+14(co)h
+1(de)h
+15(32)h
+177 2086(Do)s
+1(cumen)h
+-1(tation)h
+12(115)h
+177 2136(do)s
+1(cumen)h
+-1(tation)h
+13(64)h
+177 2186(DOD83)s
+13(55)h
+177 2236(Donald)s
+13(Kn)h
+-1(uth)h
+14(11)h
+177 2286(Donald)s
+13(Kn)h
+-1(uth)h
+14(50)h
+177 2336(Donald)s
+13(Kn)h
+-1(uth)h
+14(9)h
+177 2386(dump)s
+13(do)h
+1(cumen)h
+-1(t)h
+13(list)h
+14(68)h
+177 2436(dump)s
+13(global)h
+12(line)h
+13(list)h
+14(68)h
+177 2486(dump)s
+13(macro)h
+12(table)h
+14(68)h
+177 2535(dump)s
+13(mapp)h
+1(ed)h
+13(\014le)h
+14(68)h
+177 2585(dump)s
+13(option)h
+13(68)h
+177 2635(dump)s
+13(times)h
+13(68)h
+177 2685(dump)s
+13(tok)h
+-1(en)h
+14(list)h
+13(68)h
+177 2735(duplicate)s
+14(do)h
+1(cumen)h
+-1(tation)h
+13(51)h
+177 2785(Dwy)s
+-1(er)h
+14(Barry)h
+15(11)h
+177 2835(Dwy)s
+-1(er)h
+14(Barry)h
+15(59)h
+1136 42(EBNF)s
+14(syn)h
+-1(tax)h
+14(63)h
+1136 91(editors)s
+14(text)h
+15(42)h
+1136 141(Edna)s
+14(Ev)h
+-1(erage)h
+14(19)h
+1136 191(e\016ciency)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(47)h
+1136 241(e\016ciency)s
+14(notes)h
+15(47)h
+1136 291(elimi)s
+-1(nating)h
+11(commen)h
+-1(ts)h
+13(57)h
+1136 341(emphasis)s
+13(construct)h
+15(37)h
+1136 391(emphasis)s
+13(directiv)h
+-1(e)h
+14(85)h
+1136 441(empt)s
+-1(y)h
+12(name)h
+13(42)h
+1136 490(end-of-line)s
+13(\014ddling)h
+13(with)h
+13(43)h
+1136 540(eneo)s
+14(comma)h
+-1(nd)h
+12(95)h
+1136 590(EOL)s
+14(\014ddling)h
+13(with)h
+13(43)h
+1136 640(EOL)s
+14(mark)h
+-1(ers)h
+13(inserting)h
+14(76)h
+1136 690(EOL)s
+14(mark)h
+-1(ers)h
+13(suppressing)h
+15(77)h
+1136 740(EOL)s
+14(suppression)h
+15(23)h
+1136 790(error)s
+14(sev)h
+-1(erit)h
+-1(y)h
+15(65)h
+1136 840(error)s
+14(status)h
+15(90)h
+1136 889(errors)s
+15(shell)h
+14(90)h
+1136 939(Ev)s
+-1(erage)h
+14(Edna)h
+14(19)h
+1136 989(example)s
+12(applications)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(53)h
+1136 1039(example)s
+12(complete)h
+13(38)h
+1136 1089(example)s
+12(\014lename)h
+13(inheritance)h
+15(70)h
+1136 1139(Example)s
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(38)h
+1136 1189(examples)s
+13(do)h
+1(cumen)h
+-1(tation)h
+12(58)h
+1136 1239(executable)s
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(106)h
+1136 1288(execute)s
+15(command)h
+11(96)h
+1136 1338(execute)s
+15(script)h
+15(option)h
+13(69)h
+1136 1388(execution)s
+14(phases)h
+15(64)h
+1136 1438(exists)s
+14(comma)h
+-1(nd)h
+12(96)h
+1136 1488(expansion)s
+13(macro)h
+13(30)h
+1136 1538(expansion)s
+13(macro)h
+13(47)h
+1136 1588(expansion)s
+13(macro)h
+13(87)h
+1136 1638(explaining)s
+12(co)h
+1(de)h
+15(17)h
+1136 1687(expressions)s
+15(macro)h
+13(86)h
+1136 1737(expression)s
+15(85)h
+1136 1787(extension)s
+14(70)h
+1136 1837(F)s
+14(option)h
+13(68)h
+1136 1887(fatal)s
+12(sev)h
+-1(erit)h
+-1(y)h
+15(65)h
+1136 1937(fatal)s
+12(status)h
+15(90)h
+1136 1987(\014ddling)s
+13(with)h
+13(end-of-line)h
+13(43)h
+1136 2037(\014ddling)s
+13(with)h
+13(EOL)h
+14(43)h
+1136 2086(\014elds)s
+14(\014lename)h
+13(70)h
+1136 2136(\014le)s
+14(dep)h
+1(endencies)h
+16(49)h
+1136 2186(\014le)s
+14(di\013erences)h
+16(94)h
+1136 2236(\014le)s
+14(include)h
+13(69)h
+1136 2286(\014le)s
+14(journal)h
+12(69)h
+1136 2336(\014le)s
+14(listing)h
+12(69)h
+1136 2386(\014le)s
+14(suppression)h
+15(49)h
+1136 2436(\014le)s
+14(termination)h
+12(71)h
+1136 2486(\014le)s
+14(t)h
+-1(yp)h
+1(eset)h
+15(69)h
+1136 2535(\014lename)s
+12(\014elds)h
+15(70)h
+1136 2585(\014lename)s
+12(inheritance)h
+15(example)h
+13(70)h
+1136 2635(\014lename)s
+12(inheritance)h
+15(70)h
+1136 2685(\014les)s
+14(header)h
+15(57)h
+1136 2735(\014les)s
+14(include)h
+14(30)h
+1136 2785(\014les)s
+14(include)h
+14(77)h
+1136 2835(\014les)s
+14(input)h
+14(47)h
+1032 2940(120)s
+121 @eop
+122 @bop0
+122 @bop1
+cmr10.300 sf
+177 42(\014xeols)s
+14(comm)h
+-1(and)h
+12(96)h
+177 91(fon)s
+-1(t)h
+13(size)h
+15(46)h
+177 141(formal)s
+12(parameter)h
+13(lists)h
+14(86)h
+177 191(formal)s
+12(parameters)h
+14(28)h
+177 241(formal)s
+12(parameters)h
+14(28)h
+177 291(formal)s
+12(parameters)h
+14(87)h
+177 341(F)s
+-3(ortran)h
+14(compilers)h
+13(42)h
+177 391(F)s
+-3(ree)h
+15(text)h
+14(115)h
+177 441(free)s
+15(text)h
+14(32)h
+177 490(F)s
+-3(ree)h
+15(text)h
+14(83)h
+177 540(free)s
+15(text)h
+14(83)h
+177 590(freestanding)s
+15(t)h
+-1(yp)h
+1(esetter)h
+16(directiv)h
+-1(es)h
+15(83)h
+177 640(freestanding)s
+15(81)h
+177 690(ftp)s
+14(anon)h
+-1(ymous)h
+12(101)h
+177 740(ftp)s
+14(arc)h
+-1(hiv)h
+-1(e)h
+14(114)h
+177 790(fudging)s
+13(conditionals)h
+13(44)h
+177 840(fudging)s
+13(generics)h
+15(59)h
+177 889(functions)s
+14(small)h
+12(56)h
+177 939(F)s
+-3(unnel-w)h
+-1(eb)h
+14(spider)h
+15(19)h
+177 989(F)s
+-3(unnelW)h
+-3(eb)h
+14(admi)h
+-1(nistration)h
+12(109)h
+177 1039(F)s
+-3(unnelW)h
+-3(eb)h
+14(applications)h
+12(53)h
+177 1089(F)s
+-3(unnelW)h
+-3(eb)h
+14(arc)h
+-1(hiv)h
+-1(e)h
+13(114)h
+177 1139(F)s
+-3(unnelW)h
+-3(eb)h
+14(comm)h
+-1(and)h
+12(shell)h
+13(90)h
+177 1189(F)s
+-3(unnelW)h
+-3(eb)h
+14(comm)h
+-1(and)h
+12(shell)h
+13(90)h
+177 1239(F)s
+-3(unnelW)h
+-3(eb)h
+14(comm)h
+-1(ands)h
+12(90)h
+177 1288(F)s
+-3(unnelW)h
+-3(eb)h
+14(comm)h
+-1(en)h
+-1(ts)h
+13(75)h
+177 1338(F)s
+-3(unnelW)h
+-3(eb)h
+14(comm)h
+-1(i)h
+-1(tm)h
+-1(en)h
+-1(t)h
+13(109)h
+177 1388(F)s
+-3(unnelW)h
+-3(eb)h
+14(compil)h
+-1(ing)h
+12(105)h
+177 1438(F)s
+-3(unnelW)h
+-3(eb)h
+14(cop)h
+-1(yrigh)h
+-1(t)h
+13(112)h
+177 1488(F)s
+-3(unnelW)h
+-3(eb)h
+14(dangers)h
+14(50)h
+177 1538(F)s
+-3(unnelW)h
+-3(eb)h
+14(de\014nition)h
+13(63)h
+177 1588(F)s
+-3(unnelW)h
+-3(eb)h
+14(Distribution)h
+13(113)h
+177 1638(F)s
+-3(unnelW)h
+-3(eb)h
+14(do)h
+1(cumen)h
+-1(tation)h
+12(110)h
+177 1687(F)s
+-3(unnelW)h
+-3(eb)h
+14(e\016ciency)h
+14(47)h
+177 1737(F)s
+-3(unnelW)h
+-3(eb)h
+14(example)h
+12(applications)h
+13(53)h
+177 1787(F)s
+-3(unnelW)h
+-3(eb)h
+14(Example)h
+12(38)h
+177 1837(F)s
+-3(unnelW)h
+-3(eb)h
+14(executable)h
+15(106)h
+177 1887(F)s
+-3(unnelW)h
+-3(eb)h
+14(\014le)h
+13(115)h
+177 1937(F)s
+-3(unnelW)h
+-3(eb)h
+14(\014le)h
+13(64)h
+177 1987(F)s
+-3(unnelW)h
+-3(eb)h
+14(hin)h
+-1(ts)h
+13(41)h
+177 2037(F)s
+-3(unnelW)h
+-3(eb)h
+14(initiali)h
+-1(zation)h
+12(70)h
+177 2086(F)s
+-3(unnelW)h
+-3(eb)h
+14(installation)h
+12(101)h
+177 2136(F)s
+-3(unnelW)h
+-3(eb)h
+14(installing)h
+12(106)h
+177 2186(F)s
+-3(unnelW)h
+-3(eb)h
+14(in)h
+-1(v)h
+-1(oking)h
+12(66)h
+177 2236(F)s
+-3(unnelW)h
+-3(eb)h
+14(language)h
+12(115)h
+177 2286(F)s
+-3(unnelW)h
+-3(eb)h
+14(license)h
+14(112)h
+177 2336(F)s
+-3(unnelW)h
+-3(eb)h
+14(martinet)h
+12(42)h
+177 2386(F)s
+-3(unnelW)h
+-3(eb)h
+14(name)h
+12(19)h
+177 2436(F)s
+-3(unnelW)h
+-3(eb)h
+14(obtaining)h
+12(101)h
+177 2486(F)s
+-3(unnelW)h
+-3(eb)h
+14(o)h
+-1(v)h
+-1(erview)h
+13(18)h
+177 2535(F)s
+-3(unnelW)h
+-3(eb)h
+14(o)h
+-1(v)h
+-1(erview)h
+13(64)h
+177 2585(F)s
+-3(unnelW)h
+-3(eb)h
+14(pitfalls)h
+12(50)h
+177 2635(F)s
+-3(unnelW)h
+-3(eb)h
+14(program)h
+12(65)h
+177 2685(F)s
+-3(unnelW)h
+-3(eb)h
+14(prop)h
+1(er)h
+14(115)h
+177 2735(F)s
+-3(unnelW)h
+-3(eb)h
+14(prop)h
+1(er)h
+14(48)h
+177 2785(F)s
+-3(unnelW)h
+-3(eb)h
+14(prop)h
+1(er)h
+14(65)h
+177 2835(F)s
+-3(unnelW)h
+-3(eb)h
+14(registration)h
+13(110)h
+1136 42(F)s
+-3(unnelW)h
+-3(eb)h
+13(rules)h
+15(42)h
+1136 91(F)s
+-3(unnelW)h
+-3(eb)h
+13(running)h
+14(66)h
+1136 141(F)s
+-3(unnelW)h
+-3(eb)h
+13(shell)h
+14(90)h
+1136 191(F)s
+-3(unnelW)h
+-3(eb)h
+13(startup)h
+15(70)h
+1136 241(F)s
+-3(unnelW)h
+-3(eb)h
+13(supp)h
+1(ort)h
+15(110)h
+1136 291(F)s
+-3(unnelW)h
+-3(eb)h
+13(testing)h
+14(105)h
+1136 341(F)s
+-3(unnelW)h
+-3(eb)h
+13(t)h
+-1(w)h
+-1(o)h
+13(main)h
+12(asp)h
+1(ects)h
+16(21)h
+1136 391(F)s
+-3(unnelW)h
+-3(eb)h
+13(v)h
+-1(ersions)h
+14(114)h
+1136 441(F)s
+-3(unnelW)h
+-3(eb)h
+13(115)h
+1136 490(fw)s
+13(comma)h
+-1(nd)h
+12(v)h
+-1(erb)h
+15(66)h
+1136 540(fw)s
+13(comma)h
+-1(nd)h
+12(97)h
+1136 590(fwinit.fws)s
+12(49)h
+1136 640(fwinit.fws)s
+12(71)h
+1136 690(FW)s
+13(115)h
+1136 740(gardening)s
+13(co)h
+1(de)h
+15(53)h
+1136 790(generics)s
+15(fudging)h
+13(59)h
+1136 840(generics)s
+15(t)h
+-1(yp)h
+1(esafe)h
+14(61)h
+1136 889(global)s
+12(line)h
+13(list)h
+14(dump)h
+12(68)h
+1136 939(glossary)s
+13(115)h
+1136 989(GNU)s
+13(license)h
+15(112)h
+1136 1039(GNU)s
+13(license)h
+15(18)h
+1136 1089(GNU)s
+13(license)h
+15(9)h
+1136 1139(go)s
+1(o)h
+1(d)h
+13(old)h
+13(da)h
+-1(ys)h
+14(57)h
+1136 1189(Gries81)s
+13(117)h
+1136 1239(Gries81)s
+13(51)h
+1136 1288(H)s
+14(option)h
+13(68)h
+1136 1338(hac)s
+-1(k)h
+-1(er's)h
+14(c)h
+-1(heer)h
+15(35)h
+1136 1388(hac)s
+-1(k)h
+-1(er's)h
+14(dictionary)h
+13(35)h
+1136 1438(Hac)s
+-1(k)h
+-1(ett)h
+14(Simon)h
+12(11)h
+1136 1488(hac)s
+-1(kman)h
+12(directory)h
+15(103)h
+1136 1538(header)s
+15(C)h
+13(57)h
+1136 1588(header)s
+15(\014le)h
+13(p)h
+1(ostscript)h
+16(54)h
+1136 1638(header)s
+15(\014les)h
+14(57)h
+1136 1687(header)s
+15(page)h
+13(37)h
+1136 1737(headings)s
+14(section)h
+14(34)h
+1136 1787(headings)s
+14(strength)h
+15(46)h
+1136 1837(Hello)s
+13(Northern)h
+15(Hemisphere)h
+14(Program)h
+12(21)h
+1136 1887(hello)s
+13(w)h
+-1(orld)h
+13(do)h
+1(cumen)h
+-1(t)h
+13(20)h
+1136 1937(help)s
+14(comm)h
+-1(and)h
+12(97)h
+1136 1987(help)s
+14(option)h
+13(68)h
+1136 2037(here)s
+15(comm)h
+-1(and)h
+12(98)h
+1136 2086(hierarc)s
+-1(hical)h
+13(structure)h
+16(34)h
+1136 2136(high)s
+13(lev)h
+-1(el)h
+13(syn)h
+-1(tax)h
+14(82)h
+1136 2186(hin)s
+-1(ts)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(41)h
+1136 2236(Hulse)s
+14(Da)h
+-1(vid)h
+13(11)h
+1136 2286(Humphries)s
+13(Barry)h
+14(19)h
+1136 2336(Humphries91)s
+13(117)h
+1136 2386(Humphries91)s
+13(19)h
+1136 2436(h)s
+-1(yp)h
+1(ertext)h
+15(15)h
+1136 2486(I)s
+13(option)h
+14(69)h
+1136 2535(iden)s
+-1(ti\014ers)h
+14(macro)h
+13(41)h
+1136 2585(include)s
+14(\014le)h
+13(option)h
+14(69)h
+1136 2635(include)s
+14(\014les)h
+14(recursiv)h
+-1(e)h
+15(31)h
+1136 2685(include)s
+14(\014les)h
+14(30)h
+1136 2735(include)s
+14(\014les)h
+14(77)h
+1136 2785(include)s
+14(\014les)h
+14(77)h
+1136 2835(Include)s
+14(\014le)h
+14(115)h
+1032 2940(121)s
+122 @eop
+123 @bop0
+123 @bop1
+cmr10.300 sf
+177 42(include)s
+14(\014le)h
+14(69)h
+177 91(inden)s
+-1(tation)h
+13(blank)h
+14(78)h
+177 141(inden)s
+-1(tation)h
+13(macro)h
+13(calls)h
+14(25)h
+177 191(inden)s
+-1(tation)h
+13(macro)h
+13(expansion)h
+14(78)h
+177 241(inden)s
+-1(tation)h
+13(none)h
+15(78)h
+177 291(indep)s
+1(endence)h
+16(language)h
+13(18)h
+177 341(indep)s
+1(endence)h
+16(t)h
+-1(yp)h
+1(esetter)h
+17(18)h
+177 391(indep)s
+1(endence)h
+16(t)h
+-1(yp)h
+1(esetter)h
+17(34)h
+177 441(indep)s
+1(endence)h
+16(t)h
+-1(yp)h
+1(esetter)h
+17(65)h
+177 490(indep)s
+1(endence)h
+16(t)h
+-1(yp)h
+1(esetter)h
+17(80)h
+177 540(in\014nite)s
+14(con)h
+-1(text)h
+14(68)h
+177 590(inheritance)s
+15(\014lename)h
+12(70)h
+177 640(inheritance)s
+15(section)h
+14(name)h
+13(35)h
+177 690(initializatio)s
+-1(n)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+14(70)h
+177 740(initializatio)s
+-1(n)h
+12(script)h
+15(49)h
+177 790(initializatio)s
+-1(n)h
+12(script)h
+15(71)h
+177 840(inline)s
+13(t)h
+-1(yp)h
+1(esetter)h
+16(directiv)h
+-1(es)h
+15(83)h
+177 889(inline)s
+13(81)h
+177 939(input)s
+14(\014le)h
+14(option)h
+13(68)h
+177 989(input)s
+14(\014les)h
+14(47)h
+177 1039(Input)s
+14(\014le)h
+14(115)h
+177 1089(input)s
+14(\014le)h
+14(18)h
+177 1139(input)s
+14(\014le)h
+14(64)h
+177 1189(input)s
+14(\014le)h
+14(77)h
+177 1239(input)s
+14(line)h
+13(length)h
+14(maxim)h
+-3(um)h
+11(79)h
+177 1288(input)s
+14(line)h
+13(length)h
+14(pragma)h
+12(79)h
+177 1338(input)s
+14(line)h
+13(length)h
+14(42)h
+177 1388(input)s
+14(line)h
+13(length)h
+14(79)h
+177 1438(inserting)s
+14(EOL)h
+14(mark)h
+-1(ers)h
+14(76)h
+177 1488(inserting)s
+14(in)h
+-1(to)h
+13(text)h
+15(arbitrary)h
+14(c)h
+-1(haracters)h
+15(74)h
+177 1538(inserting)s
+14(in)h
+-1(to)h
+13(text)h
+15(con)h
+-1(trol)h
+13(c)h
+-1(haracters)h
+16(74)h
+177 1588(inserting)s
+14(in)h
+-1(to)h
+13(text)h
+15(sp)h
+1(ecial)h
+14(c)h
+-1(haracter)h
+15(74)h
+177 1638(installation)s
+12(F)h
+-3(unnelW)h
+-3(eb)h
+14(101)h
+177 1687(installation)s
+12(problems)h
+13(107)h
+177 1737(installing)s
+12(F)h
+-3(unnelW)h
+-3(eb)h
+14(106)h
+177 1787(in)s
+-1(teractiv)h
+-1(e)h
+14(mo)h
+1(de)h
+13(47)h
+177 1837(in)s
+-1(teractiv)h
+-1(e)h
+14(option)h
+14(69)h
+177 1887(in)s
+-1(terdep)h
+1(enden)h
+-1(t)h
+16(do)h
+1(cumen)h
+-1(tation)h
+13(50)h
+177 1937(in)s
+-1(terface)h
+15(comm)h
+-1(and)h
+12(line)h
+13(66)h
+177 1987(in)s
+-1(terpreter)h
+16(comm)h
+-1(and)h
+12(47)h
+177 2037(in)s
+-1(tro)h
+1(duction)h
+14(tutorial)h
+13(19)h
+177 2086(in)s
+-1(visible)h
+13(pragmas)h
+12(78)h
+177 2136(in)s
+-1(v)h
+-1(o)h
+1(cation)h
+13(n)h
+-1(um)h
+-1(b)h
+1(er)h
+13(23)h
+177 2186(in)s
+-1(v)h
+-1(o)h
+1(cations)h
+13(n)h
+-1(um)h
+-1(b)h
+1(er)h
+13(42)h
+177 2236(in)s
+-1(v)h
+-1(oking)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+14(20)h
+177 2286(in)s
+-1(v)h
+-1(oking)h
+12(F)h
+-3(unnelW)h
+-3(eb)h
+14(66)h
+177 2336(J)s
+14(option)h
+13(69)h
+177 2386(Jerem)s
+-1(y)h
+14(Begg)h
+14(11)h
+177 2436(journal)s
+13(\014le)h
+14(option)h
+13(69)h
+177 2486(Journal)s
+14(\014le)h
+14(115)h
+177 2535(journal)s
+13(\014le)h
+14(64)h
+177 2585(journal)s
+13(\014le)h
+14(69)h
+177 2635(K)s
+14(option)h
+13(69)h
+177 2685(Kernighan88)s
+14(117)h
+177 2735(Kernighan88)s
+14(65)h
+177 2785(k)s
+-1(eyb)h
+1(oard)h
+14(mo)h
+1(de)h
+13(47)h
+177 2835(k)s
+-1(eyb)h
+1(oard)h
+14(option)h
+13(69)h
+1136 42(Kn)s
+-1(uth)h
+14(Donald)h
+13(11)h
+1136 91(Kn)s
+-1(uth)h
+14(Donald)h
+13(50)h
+1136 141(Kn)s
+-1(uth)h
+14(Donald)h
+13(9)h
+1136 191(Kn)s
+-1(uth83)h
+13(117)h
+1136 241(Kn)s
+-1(uth83)h
+13(17)h
+1136 291(Kn)s
+-1(uth83)h
+13(25)h
+1136 341(Kn)s
+-1(uth83)h
+13(25)h
+1136 391(Kn)s
+-1(uth83)h
+13(9)h
+1136 441(Kn)s
+-1(uth84)h
+13(117)h
+1136 490(Kn)s
+-1(uth84)h
+13(117)h
+1136 540(Kn)s
+-1(uth84)h
+13(13)h
+1136 590(Kn)s
+-1(uth84)h
+13(17)h
+1136 640(Kn)s
+-1(uth84)h
+13(18)h
+1136 690(L)s
+13(option)h
+14(69)h
+1136 740(Lamp)s
+1(ort86)h
+12(117)h
+1136 790(Lamp)s
+1(ort86)h
+12(13)h
+1136 840(language)s
+13(indep)h
+1(endence)h
+16(18)h
+1136 889(languages)s
+13(m)h
+-1(ultipl)h
+-1(e)h
+13(55)h
+1136 939(laser)s
+14(prin)h
+-1(ter)h
+14(55)h
+1136 989(LaT)s
+-3(eX)h
+13(13)h
+1136 1039(LaT)s
+-3(eX)h
+13(84)h
+1136 1089(la)s
+-1(y)h
+-1(out)h
+12(program)h
+13(22)h
+1136 1139(la)s
+-1(y)h
+-1(out)h
+12(program)h
+13(28)h
+1136 1189(length)s
+13(command)h
+12(91)h
+1136 1239(length)s
+13(input)h
+14(line)h
+14(42)h
+1136 1288(length)s
+13(line)h
+14(71)h
+1136 1338(length)s
+13(output)h
+15(line)h
+13(42)h
+1136 1388(letter)s
+14(67)h
+1136 1438(lev)s
+-1(els)h
+14(of)h
+13(diagnostics)h
+13(65)h
+1136 1488(libraries)s
+13(macro)h
+13(31)h
+1136 1538(license)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(112)h
+1136 1588(license)s
+14(GNU)h
+14(112)h
+1136 1638(license)s
+14(GNU)h
+14(18)h
+1136 1688(license)s
+14(GNU)h
+14(9)h
+1136 1737(line)s
+13(length)h
+14(input)h
+14(79)h
+1136 1787(line)s
+13(length)h
+14(71)h
+1136 1837(line)s
+13(termination)h
+12(71)h
+1136 1887(list)s
+13(do)h
+1(cumen)h
+-1(t)h
+13(64)h
+1136 1937(list)s
+13(options)h
+14(68)h
+1136 1987(list)s
+13(shell)h
+14(comm)h
+-1(ands)h
+12(93)h
+1136 2037(listing)s
+12(\014le)h
+14(con)h
+-1(text)h
+15(68)h
+1136 2087(listing)s
+12(\014le)h
+14(option)h
+13(69)h
+1136 2136(Listing)s
+13(\014le)h
+14(115)h
+1136 2186(listing)s
+12(\014le)h
+14(64)h
+1136 2236(listing)s
+12(\014le)h
+14(69)h
+1136 2286(literal)s
+13(construct)h
+15(37)h
+1136 2336(literal)s
+13(directiv)h
+-1(e)h
+14(84)h
+1136 2386(literate)s
+14(programm)h
+-1(i)h
+-1(ng)h
+12(to)h
+1(ols)h
+13(15)h
+1136 2436(literate)s
+14(programm)h
+-1(i)h
+-1(ng,)h
+11(facilities)h
+13(15)h
+1136 2486(literate)s
+15(programm)h
+-1(ing)h
+-1(,)h
+13(most)h
+14(signi\014can)h
+-1(t)h
+15(b)h
+1(ene-)h
+1302 2535(\014t)s
+14(17)h
+1136 2585(literate)s
+14(programm)h
+-1(i)h
+-1(ng)h
+12(15)h
+1136 2635(literate)s
+14(programm)h
+-1(i)h
+-1(ng)h
+12(15)h
+1136 2685(literate)s
+14(programm)h
+-1(i)h
+-1(ng)h
+12(50)h
+1136 2735(MacDra)s
+-1(w)h
+13(54)h
+1136 2785(Macin)s
+-1(tosh)h
+14(13)h
+1136 2835(Macin)s
+-1(tosh)h
+14(54)h
+1032 2940(122)s
+123 @eop
+124 @bop0
+124 @bop1
+cmr10.300 sf
+177 42(macro)s
+13(attributes)h
+15(85)h
+177 91(macro)s
+13(bindings)h
+13(22)h
+177 141(macro)s
+13(b)h
+1(o)h
+1(dy)h
+14(85)h
+177 191(macro)s
+13(calls)h
+13(inden)h
+-1(tation)h
+14(25)h
+177 241(macro)s
+13(calls)h
+13(86)h
+177 291(macro)s
+13(c)h
+-1(hec)h
+-1(ks)h
+15(88)h
+177 341(macro)s
+13(de\014nitions)h
+14(32)h
+177 391(Macro)s
+14(de\014nition)h
+14(116)h
+177 441(macro)s
+13(de\014nition)h
+13(85)h
+177 490(macro)s
+13(de\014nition)h
+13(87)h
+177 540(macro)s
+13(expansion)h
+14(inden)h
+-1(tation)h
+13(78)h
+177 590(macro)s
+13(expansion)h
+14(30)h
+177 640(macro)s
+13(expansion)h
+14(47)h
+177 690(macro)s
+13(expansion)h
+14(87)h
+177 740(macro)s
+13(expressions)h
+15(86)h
+177 790(macro)s
+13(facilities)h
+13(tutorial)h
+13(22)h
+177 840(macro)s
+13(iden)h
+-1(ti\014ers)h
+14(41)h
+177 889(macro)s
+13(libraries)h
+13(31)h
+177 939(macro)s
+13(names)h
+13(41)h
+177 989(macro)s
+13(names)h
+13(86)h
+177 1039(macro)s
+13(name)h
+13(85)h
+177 1089(macro)s
+13(parameter)h
+13(delimiting)h
+11(87)h
+177 1139(macro)s
+13(recursion)h
+15(43)h
+177 1189(macro)s
+13(recursion)h
+15(88)h
+177 1239(macro)s
+13(table)h
+14(dump)h
+12(68)h
+177 1288(macro)s
+13(table)h
+14(64)h
+177 1338(macros)s
+13(additiv)h
+-1(e)h
+13(26)h
+177 1388(macros)s
+13(parameterized)h
+14(28)h
+177 1438(macros)s
+13(simple)h
+13(tutorial)h
+13(22)h
+177 1488(macros)s
+13(static)h
+14(87)h
+177 1538(Macro)s
+14(115)h
+177 1588(magic)s
+12(tric)h
+-1(k)h
+14(15)h
+177 1638(main)s
+-1(tenance)h
+13(programm)h
+-1(er)h
+13(50)h
+177 1687(mak)s
+-1(e)h
+13(utilit)h
+-1(y)h
+12(49)h
+177 1737(man)s
+-1(uals)h
+12(prin)h
+-1(ting)h
+13(107)h
+177 1787(mapp)s
+1(ed)h
+13(\014le)h
+14(dump)h
+13(68)h
+177 1837(Mapp)s
+1(er)h
+15(116)h
+177 1887(mapp)s
+1(er)h
+13(71)h
+177 1937(martinet)s
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(42)h
+177 1987(maxim)s
+-3(um)h
+11(input)h
+14(line)h
+13(length)h
+14(79)h
+177 2037(maxim)s
+-3(um)h
+11(output)h
+14(\014le)h
+14(line)h
+13(length)h
+14(pragma)h
+12(79)h
+177 2086(maxim)s
+-3(um)h
+11(output)h
+14(\014le)h
+14(line)h
+13(length)h
+14(79)h
+177 2136(maxim)s
+-3(um)h
+11(pro)h
+1(duct)h
+15(\014le)h
+14(line)h
+13(length)h
+14(pragma)h
+12(79)h
+177 2186(maxim)s
+-3(um)h
+11(pro)h
+1(duct)h
+15(\014le)h
+14(line)h
+13(length)h
+14(79)h
+177 2236(medicine)s
+13(wholistic)h
+13(53)h
+177 2286(memory)s
+12(use)h
+14(of)h
+14(30)h
+177 2336(memory)s
+12(47)h
+177 2386(MIL-STD-2167A)s
+13(51)h
+177 2436(monster)s
+14(\014le)h
+14(p)h
+1(ostscript)h
+15(54)h
+177 2486(m)s
+-1(ultipl)h
+-1(e)h
+13(languages)h
+13(55)h
+177 2535(name)s
+13(empt)h
+-1(y)h
+13(42)h
+177 2585(name)s
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(19)h
+177 2635(name)s
+13(section)h
+14(34)h
+177 2685(name)s
+13(section)h
+14(84)h
+177 2735(names)s
+13(macro)h
+13(41)h
+177 2785(names)s
+13(macro)h
+13(86)h
+177 2835(names)s
+13(quic)h
+-1(k)h
+14(42)h
+1136 42(names)s
+13(quic)h
+-1(k)h
+13(76)h
+1136 91(names)s
+13(section)h
+14(86)h
+1136 141(names)s
+13(86)h
+1136 191(name)s
+12(70)h
+1136 241(new)s
+14(page)h
+14(pragma)h
+12(81)h
+1136 291(new)s
+14(page)h
+14(81)h
+1136 341(newpage)s
+14(directiv)h
+-1(e)h
+14(37)h
+1136 391(no)s
+13(inden)h
+-1(tation)h
+14(78)h
+1136 441(non-determinism)s
+11(68)h
+1136 490(non-prin)s
+-1(table)h
+13(c)h
+-1(haracters)h
+16(96)h
+1136 540(none)s
+14(inden)h
+-1(tation)h
+13(78)h
+1136 590(notation)s
+13(63)h
+1136 640(notes)s
+14(e\016ciency)h
+15(47)h
+1136 690(notice)s
+14(cop)h
+-1(yrigh)h
+-1(t)h
+13(1)h
+1136 740(no)s
+-1(v)h
+-1(els)h
+13(50)h
+1136 790(n)s
+-1(um)h
+-1(b)h
+1(er)h
+13(calls)h
+13(23)h
+1136 840(n)s
+-1(um)h
+-1(b)h
+1(er)h
+13(in)h
+-1(v)h
+-1(o)h
+1(cations)h
+13(42)h
+1136 889(n)s
+-1(um)h
+-1(b)h
+1(er)h
+13(in)h
+-1(v)h
+-1(o)h
+1(cation)h
+12(23)h
+1136 939(n)s
+-1(um)h
+-1(b)h
+1(er)h
+13(of)h
+13(times)h
+13(called)h
+14(23)h
+1136 989(n)s
+-1(um)h
+-1(b)h
+1(ering)h
+12(cross)h
+15(reference)h
+17(89)h
+1136 1039(n)s
+-1(um)h
+-1(b)h
+1(ering)h
+12(section)h
+15(89)h
+1136 1089(ob)s
+2(ject)h
+14(co)h
+1(de)h
+15(26)h
+1136 1139(obtaining)s
+12(F)h
+-3(unnelW)h
+-3(eb)h
+13(101)h
+1136 1189(op)s
+1(en)h
+14(systems)h
+14(55)h
+1136 1239(option)s
+13(B)h
+14(68)h
+1136 1288(option)s
+13(C)h
+14(68)h
+1136 1338(option)s
+13(delete)h
+15(output)h
+14(68)h
+1136 1388(option)s
+13(dump)h
+12(68)h
+1136 1438(option)s
+13(D)h
+13(49)h
+1136 1488(option)s
+13(D)h
+13(68)h
+1136 1538(option)s
+13(execute)h
+16(script)h
+14(69)h
+1136 1588(option)s
+13(F)h
+14(68)h
+1136 1638(option)s
+13(help)h
+14(68)h
+1136 1687(option)s
+13(H)h
+14(68)h
+1136 1737(option)s
+13(include)h
+14(\014le)h
+14(69)h
+1136 1787(option)s
+13(input)h
+13(\014le)h
+14(68)h
+1136 1837(option)s
+13(in)h
+-1(teractiv)h
+-1(e)h
+14(69)h
+1136 1887(option)s
+13(I)h
+14(69)h
+1136 1937(option)s
+13(journal)h
+13(\014le)h
+14(69)h
+1136 1987(option)s
+13(J)h
+14(69)h
+1136 2037(option)s
+13(k)h
+-1(eyb)h
+1(oard)h
+14(69)h
+1136 2086(option)s
+13(K)h
+14(69)h
+1136 2136(option)s
+13(listing)h
+13(\014le)h
+13(69)h
+1136 2186(option)s
+13(L)h
+14(69)h
+1136 2236(option)s
+13(quiet)h
+14(69)h
+1136 2286(option)s
+13(Q)h
+14(69)h
+1136 2336(option)s
+13(screen)h
+16(69)h
+1136 2386(option)s
+13(S)h
+14(69)h
+1136 2436(option)s
+13(t)h
+-1(yp)h
+1(eset)h
+15(69)h
+1136 2486(option)s
+13(T)h
+14(69)h
+1136 2535(option)s
+13(width)h
+13(69)h
+1136 2585(option)s
+13(W)h
+13(69)h
+1136 2635(option)s
+13(X)h
+14(69)h
+1136 2685(options)s
+13(comma)h
+-1(nd)h
+12(92)h
+1136 2735(options)s
+13(default)h
+14(49)h
+1136 2785(options)s
+13(default)h
+14(92)h
+1136 2835(options)s
+13(list)h
+14(68)h
+1032 2940(123)s
+124 @eop
+125 @bop0
+125 @bop1
+cmr10.300 sf
+177 42(options)s
+14(setting)h
+14(defaults)h
+14(49)h
+177 91(options)s
+14(syn)h
+-1(tax)h
+14(67)h
+177 141(options)s
+14(tracedump)h
+13(68)h
+177 191(options)s
+14(67)h
+177 241(options)s
+14(68)h
+177 291(Option)s
+14(116)h
+177 341(order)s
+15(action)h
+13(execution)h
+15(71)h
+177 391(order)s
+15(program)h
+12(22)h
+177 441(ordering)s
+14(program)h
+12(15)h
+177 490(Ordinary)s
+14(options)h
+14(70)h
+177 540(organization)s
+13(b)h
+1(oring)h
+13(50)h
+177 590(organization)s
+13(spaghetti)h
+14(50)h
+177 640(output)s
+14(\014le)h
+14(line)h
+14(length)h
+13(maxim)h
+-2(um)h
+10(79)h
+177 690(output)s
+14(\014les)h
+14(delete)h
+15(49)h
+177 740(output)s
+14(\014les)h
+14(18)h
+177 790(output)s
+14(\014les)h
+14(64)h
+177 840(Output)s
+15(\014le)h
+14(116)h
+177 889(output)s
+14(line)h
+14(length)h
+13(42)h
+177 939(output)s
+14(WEB)h
+14(25)h
+177 989(o)s
+-1(v)h
+-1(er)h
+14(do)h
+1(cumen)h
+-1(tation)h
+13(51)h
+177 1039(o)s
+-1(v)h
+-1(erhead)h
+14(pro)h
+1(cedure)h
+16(call)h
+13(57)h
+177 1089(o)s
+-1(v)h
+-1(erview)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(18)h
+177 1139(o)s
+-1(v)h
+-1(erview)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(64)h
+177 1189(o)s
+-1(v)h
+-1(erview)h
+14(t)h
+-1(yp)h
+1(esetting)h
+15(32)h
+177 1239(OzT)s
+-3(eX)h
+15(13)h
+177 1288(pac)s
+-1(k)h
+-2(age)h
+14(55)h
+177 1338(parameter)s
+14(list,)h
+13(absen)h
+-1(t)h
+14(29)h
+177 1388(parameter)s
+14(lists)h
+14(formal)h
+11(86)h
+177 1438(parameterized)s
+14(macros)h
+13(28)h
+177 1488(parameters)s
+14(actual)h
+14(29)h
+177 1538(parameters)s
+14(formal)h
+12(28)h
+177 1588(parameters)s
+14(formal)h
+12(28)h
+177 1638(parameters)s
+14(formal)h
+12(87)h
+177 1687(P)s
+-1(arser)h
+15(116)h
+177 1737(parser)s
+15(64)h
+177 1787(parser)s
+15(82)h
+177 1837(parsing)s
+14(comm)h
+-1(and)h
+12(line)h
+13(66)h
+177 1887(P)s
+-1(ascal)h
+14(15)h
+177 1937(P)s
+-1(ascal)h
+14(25)h
+177 1987(P)s
+-1(ascal)h
+14(26)h
+177 2037(P)s
+-1(ascal)h
+14(57)h
+177 2086(P)s
+-1(ascal)h
+14(59)h
+177 2136(P)s
+-1(at)h
+14(Scannel)h
+14(29)h
+177 2186(pa)s
+-1(vlo)h
+-1(v)h
+13(do)h
+1(cumen)h
+-1(tation)h
+12(51)h
+177 2236(phases)s
+15(execution)h
+15(64)h
+177 2286(phases)s
+15(64)h
+177 2336(PhD)s
+14(thesis)h
+15(54)h
+177 2386(pitfalls)s
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(50)h
+177 2436(p)s
+1(o)h
+1(em)h
+13(animal)h
+11(30)h
+177 2486(p)s
+1(o)h
+1(em)h
+13(camera)h
+13(30)h
+177 2535(p)s
+1(ortabilit)h
+-1(y)h
+13(18)h
+177 2585(p)s
+1(ostscript)h
+15(header)h
+15(\014le)h
+14(54)h
+177 2635(p)s
+1(ostscript)h
+15(monster)h
+14(\014le)h
+14(54)h
+177 2685(P)s
+-1(ostScript)h
+15(54)h
+177 2735(p)s
+1(ostscript)h
+15(57)h
+177 2785(pragma)s
+12(input)h
+14(line)h
+13(length)h
+14(79)h
+177 2835(pragma)s
+12(maxim)h
+-3(um)h
+11(output)h
+14(\014le)h
+14(line)h
+13(length)h
+14(79)h
+1136 42(pragma)s
+12(maxi)h
+-1(m)h
+-2(um)h
+10(pro)h
+1(duct)h
+15(\014le)h
+14(line)h
+13(length)h
+14(79)h
+1136 91(pragma)s
+12(new)h
+14(page)h
+14(81)h
+1136 141(pragma)s
+12(table)h
+13(of)h
+14(con)h
+-1(ten)h
+-1(ts)h
+15(81)h
+1136 191(pragma)s
+12(title)h
+13(82)h
+1136 241(pragma)s
+12(t)h
+-1(yp)h
+1(esetter)h
+16(80)h
+1136 291(pragma)s
+12(vskip)h
+13(81)h
+1136 341(pragmas)s
+12(in)h
+-1(visible)h
+13(78)h
+1136 391(pragmas)s
+12(visible)h
+13(78)h
+1136 441(pragmas)s
+12(78)h
+1136 490(Pragma)s
+12(116)h
+1136 540(pragma)s
+12(25)h
+1136 590(pragma)s
+12(78)h
+1136 640(preface)s
+15(9)h
+1136 690(prepro)s
+1(cessor)h
+16(C)h
+14(20)h
+1136 740(prepro)s
+1(cessor)h
+16(C)h
+14(57)h
+1136 790(presen)s
+-1(tation)h
+14(notes)h
+15(13)h
+1136 840(Prin)s
+-1(ted)h
+14(do)h
+1(cumen)h
+-1(tation)h
+13(116)h
+1136 889(prin)s
+-1(ter)h
+14(laser)h
+14(55)h
+1136 939(prin)s
+-1(ting)h
+13(man)h
+-1(ual)h
+-1(s)h
+13(107)h
+1136 989(prin)s
+-1(ting)h
+13(system)h
+13(55)h
+1136 1039(problems)s
+13(binding)h
+12(57)h
+1136 1089(problems)s
+13(installation)h
+12(107)h
+1136 1139(pro)s
+1(cedure)h
+15(call)h
+14(o)h
+-1(v)h
+-1(erhead)h
+14(57)h
+1136 1189(pro)s
+1(cessing)h
+15(comm)h
+-1(and)h
+12(line)h
+13(66)h
+1136 1239(pro)s
+1(cessing)h
+15(comm)h
+-1(and)h
+12(line)h
+13(92)h
+1136 1288(pro)s
+1(duct)h
+14(\014le)h
+14(line)h
+14(length)h
+14(maxi)h
+-1(m)h
+-2(um)h
+10(79)h
+1136 1338(pro)s
+1(duct)h
+14(\014le)h
+14(width)h
+14(69)h
+1136 1388(pro)s
+1(duct)h
+14(\014les)h
+15(18)h
+1136 1438(pro)s
+1(duct)h
+14(\014les)h
+15(64)h
+1136 1488(Pro)s
+1(duct)h
+15(\014le)h
+13(116)h
+1136 1538(pro)s
+1(duction)h
+14(to)h
+1(ol)h
+13(19)h
+1136 1588(program)s
+12(la)h
+-1(y)h
+-1(out)h
+13(22)h
+1136 1638(program)s
+12(la)h
+-1(y)h
+-1(out)h
+13(28)h
+1136 1687(program)s
+12(ordering)h
+14(15)h
+1136 1737(program)s
+12(order)h
+15(22)h
+1136 1787(programm)s
+-1(er)h
+12(main)h
+-1(tenance)h
+13(50)h
+1136 1837(programm)s
+-1(er's)h
+12(c)h
+-1(heer)h
+15(35)h
+1136 1887(programm)s
+-1(i)h
+-1(ng)h
+12(literate)h
+14(50)h
+1136 1937(Q)s
+14(option)h
+13(69)h
+1136 1987(quic)s
+-1(k)h
+13(names)h
+13(42)h
+1136 2037(quic)s
+-1(k)h
+13(names)h
+13(76)h
+1136 2086(quic)s
+-1(k)h
+13(name)h
+13(42)h
+1136 2136(quic)s
+-1(k)h
+13(name)h
+13(76)h
+1136 2186(quiet)s
+14(option)h
+13(69)h
+1136 2236(quit)s
+13(comma)h
+-1(nd)h
+12(98)h
+1136 2286(random)s
+12(access)h
+16(50)h
+1136 2336(rec.h)s
+-1(umor.funn)h
+-1(y)h
+12(29)h
+1136 2386(recursion)s
+15(macro)h
+12(43)h
+1136 2436(recursion)s
+15(macro)h
+12(88)h
+1136 2486(recursiv)s
+-1(e)h
+15(include)h
+14(\014les)h
+14(31)h
+1136 2535(references)s
+16(117)h
+1136 2585(referencing)s
+15(cross)h
+15(89)h
+1136 2635(registration)s
+13(F)h
+-3(unnelW)h
+-3(eb)h
+14(110)h
+1136 2685(regression)s
+15(testing)h
+14(103)h
+1136 2735(regression)s
+15(testing)h
+14(47)h
+1136 2785(reliabilit)s
+-1(y)h
+12(18)h
+1136 2835(REM)s
+13(statemen)h
+-1(t)h
+14(57)h
+1032 2940(124)s
+125 @eop
+126 @bop0
+126 @bop1
+cmr10.300 sf
+177 42(rep)s
+1(ort)h
+15(ann)h
+-1(ual)h
+13(58)h
+177 91(results)s
+15(directory)h
+15(103)h
+177 141(return)s
+15(status)h
+15(65)h
+177 191(Roger)s
+14(Brissenden)h
+16(11)h
+177 241(Roso)s
+-1(vsky90)h
+13(117)h
+177 291(Roso)s
+-1(vsky90)h
+13(17)h
+177 341(Ross)s
+14(William)h
+-2(s)h
+12(1)h
+177 391(rule)s
+14(simple)h
+13(20)h
+177 441(rules)s
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(42)h
+177 490(running)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(66)h
+177 540(S)s
+14(option)h
+13(69)h
+177 590(Scannel)s
+14(P)h
+-1(at)h
+14(29)h
+177 640(Scanner)s
+15(116)h
+177 690(scanner)s
+15(64)h
+177 740(scanner)s
+15(71)h
+177 790(screen)s
+16(option)h
+13(69)h
+177 840(script)s
+15(initiali)h
+-1(zation)h
+12(49)h
+177 889(script)s
+15(initiali)h
+-1(zation)h
+12(71)h
+177 939(script)s
+15(startup)h
+14(49)h
+177 989(scripts)s
+15(directory)h
+15(103)h
+177 1039(Script)s
+15(116)h
+177 1089(section)s
+15(constructs)h
+16(83)h
+177 1139(section)s
+15(headings)h
+14(34)h
+177 1189(section)s
+15(name)h
+12(inheritance)h
+15(35)h
+177 1239(section)s
+15(names)h
+13(86)h
+177 1288(section)s
+15(name)h
+12(34)h
+177 1338(section)s
+15(name)h
+12(84)h
+177 1388(section)s
+15(n)h
+-1(um)h
+-1(b)h
+1(ering)h
+12(89)h
+177 1438(section)s
+15(strength)h
+15(46)h
+177 1488(seman)s
+-1(tic)h
+13(arc)h
+-1(hitecture)h
+16(64)h
+177 1538(sequences)s
+17(sp)h
+1(ecial)h
+14(72)h
+177 1588(set)s
+15(abstraction)h
+14(59)h
+177 1638(set)s
+15(comm)h
+-1(and)h
+12(48)h
+177 1687(set)s
+15(comm)h
+-1(and)h
+12(98)h
+177 1737(setting)s
+14(defaults)h
+14(options)h
+14(49)h
+177 1787(setting)s
+14(sp)h
+1(ecial)h
+15(c)h
+-1(haracter)h
+15(74)h
+177 1837(sev)s
+-1(ere)h
+16(sev)h
+-1(erit)h
+-1(y)h
+14(65)h
+177 1887(sev)s
+-1(ere)h
+16(status)h
+14(90)h
+177 1937(sev)s
+-1(erit)h
+-1(y)h
+15(assertion)h
+14(65)h
+177 1987(sev)s
+-1(erit)h
+-1(y)h
+15(error)h
+15(65)h
+177 2037(sev)s
+-1(erit)h
+-1(y)h
+15(fatal)h
+12(65)h
+177 2086(sev)s
+-1(erit)h
+-1(y)h
+15(sev)h
+-1(ere)h
+15(65)h
+177 2136(sev)s
+-1(erit)h
+-1(y)h
+15(w)h
+-1(arning)h
+13(65)h
+177 2186(sev)s
+-1(erit)h
+-1(y)h
+15(65)h
+177 2236(sharing)s
+14(informa)h
+-1(tion)h
+12(56)h
+177 2286(sharing)s
+14(text)h
+14(58)h
+177 2336(shark)s
+14(white)h
+14(p)h
+1(oin)h
+-1(ter)h
+14(19)h
+177 2386(shell)s
+14(comm)h
+-1(ands)h
+12(list)h
+14(93)h
+177 2436(shell)s
+14(comm)h
+-1(ands)h
+12(93)h
+177 2486(shell)s
+14(errors)h
+15(90)h
+177 2535(shell)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(90)h
+177 2585(shell)s
+14(uses)h
+15(90)h
+177 2635(Shell)s
+14(116)h
+177 2685(sho)s
+1(oting)h
+14(31)h
+177 2735(sho)s
+-1(w)h
+14(comm)h
+-1(and)h
+12(48)h
+177 2785(sho)s
+-1(w)h
+14(comm)h
+-1(and)h
+12(98)h
+177 2835(sign)s
+14(67)h
+1136 42(Simon)s
+11(Hac)h
+-1(k)h
+-1(ett)h
+15(11)h
+1136 91(simple)s
+12(macros)h
+13(tutorial)h
+13(22)h
+1136 141(simple)s
+12(rule)h
+14(20)h
+1136 191(simple)s
+12(sequence)h
+16(72)h
+1136 241(simpli)s
+-1(cit)h
+-1(y)h
+12(18)h
+1136 291(size)s
+14(fon)h
+-1(t)h
+14(46)h
+1136 341(skip)s
+13(v)h
+-1(ertical)h
+14(81)h
+1136 391(skipto)s
+13(comma)h
+-1(nd)h
+12(98)h
+1136 441(small)s
+11(functions)h
+14(56)h
+1136 490(Smith91)s
+11(117)h
+1136 540(Smith91)s
+11(17)h
+1136 590(snak)s
+-1(e)h
+14(tiger)h
+14(19)h
+1136 640(song)s
+13(29)h
+1136 690(sources)s
+15(directory)h
+15(103)h
+1136 740(spacing)s
+13(43)h
+1136 790(spaghetti)s
+14(organization)h
+12(50)h
+1136 840(sp)s
+1(ecial)h
+14(c)h
+-1(haracter)h
+15(c)h
+-1(hanging)h
+13(31)h
+1136 889(sp)s
+1(ecial)h
+14(c)h
+-1(haracter)h
+15(default)h
+14(72)h
+1136 939(sp)s
+1(ecial)h
+14(c)h
+-1(haracter)h
+15(inserting)h
+14(in)h
+-1(to)h
+13(text)h
+15(74)h
+1136 989(sp)s
+1(ecial)h
+14(c)h
+-1(haracter)h
+15(setting)h
+14(74)h
+1136 1039(Sp)s
+1(ecial)h
+13(c)h
+-1(haracter)h
+16(116)h
+1136 1089(sp)s
+1(ecial)h
+14(c)h
+-1(haracter)h
+15(20)h
+1136 1139(sp)s
+1(ecial)h
+14(c)h
+-1(haracter)h
+15(72)h
+1136 1189(sp)s
+1(ecial)h
+14(sequences)h
+16(72)h
+1136 1239(Sp)s
+1(ecial)h
+13(sequence)h
+17(116)h
+1136 1288(sp)s
+1(ecial)h
+14(sequence)h
+16(20)h
+1136 1338(sp)s
+1(ecial)h
+14(sequence)h
+16(72)h
+1136 1388(sp)s
+1(ecial)h
+14(tok)h
+-1(ens)h
+14(82)h
+1136 1438(sp)s
+1(eed)h
+15(47)h
+1136 1488(spider)s
+14(F)h
+-3(unnel-w)h
+-1(eb)h
+14(19)h
+1136 1538(startup)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(70)h
+1136 1588(startup)s
+14(script)h
+15(49)h
+1136 1638(statemen)s
+-1(t)h
+13(REM)h
+14(57)h
+1136 1687(static)s
+14(analysis)h
+13(88)h
+1136 1737(static)s
+14(macros)h
+13(87)h
+1136 1787(status)s
+14(assertion)h
+15(90)h
+1136 1837(status)s
+14(comma)h
+-1(nd)h
+12(99)h
+1136 1887(status)s
+14(error)h
+15(90)h
+1136 1937(status)s
+14(fatal)h
+13(90)h
+1136 1987(status)s
+14(return)h
+15(65)h
+1136 2037(status)s
+14(sev)h
+-1(ere)h
+16(90)h
+1136 2086(status)s
+14(success)h
+17(90)h
+1136 2136(status)s
+14(w)h
+-1(arning)h
+13(90)h
+1136 2186(stream)s
+13(of)h
+13(consciousness)h
+16(50)h
+1136 2236(strength)s
+15(headings)h
+14(46)h
+1136 2286(strength)s
+15(section)h
+14(46)h
+1136 2336(strength)s
+15(t)h
+-1(yp)h
+1(esetting)h
+15(46)h
+1136 2386(string)s
+14(substitution)h
+14(91)h
+1136 2436(string)s
+14(substitution)h
+14(94)h
+1136 2486(string)s
+14(67)h
+1136 2535(structure)s
+16(hierarc)h
+-1(hical)h
+13(34)h
+1136 2585(structure)s
+16(tree)h
+15(83)h
+1136 2635(Strunk79)s
+13(117)h
+1136 2685(Strunk79)s
+13(51)h
+1136 2735(substitution)s
+14(string)h
+14(91)h
+1136 2785(substitution)s
+14(string)h
+14(94)h
+1136 2835(success)s
+16(status)h
+15(90)h
+1032 2940(125)s
+126 @eop
+127 @bop0
+127 @bop1
+cmr10.300 sf
+177 42(supp)s
+1(ort)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+13(110)h
+177 91(suppress)s
+16(console)h
+14(output)h
+14(69)h
+177 141(suppressing)s
+15(EOL)h
+15(mark)h
+-1(ers)h
+13(77)h
+177 191(suppression)s
+15(EOL)h
+15(23)h
+177 241(suppression)s
+15(\014le)h
+14(49)h
+177 291(Sydney)s
+14(19)h
+177 341(syn)s
+-1(tax)h
+14(comm)h
+-1(and)h
+12(line)h
+14(options)h
+13(67)h
+177 391(syn)s
+-1(tax)h
+14(comm)h
+-1(and)h
+12(line)h
+14(67)h
+177 441(syn)s
+-1(tax)h
+14(EBNF)h
+15(63)h
+177 490(syn)s
+-1(tax)h
+14(high)h
+13(lev)h
+-1(el)h
+14(82)h
+177 540(syn)s
+-1(tax)h
+14(options)h
+14(67)h
+177 590(system)s
+14(prin)h
+-1(ting)h
+13(55)h
+177 640(T)s
+14(option)h
+13(69)h
+177 690(table)s
+14(macro)h
+13(64)h
+177 740(table)s
+14(of)h
+13(con)h
+-1(ten)h
+-1(ts)h
+15(directiv)h
+-1(e)h
+15(37)h
+177 790(table)s
+14(of)h
+13(con)h
+-1(ten)h
+-1(ts)h
+15(pragma)h
+12(81)h
+177 840(table)s
+14(of)h
+13(con)h
+-1(ten)h
+-1(ts)h
+15(81)h
+177 889(tabs)s
+14(42)h
+177 939(T)s
+-3(angle)h
+13(116)h
+177 989(tangle)s
+14(65)h
+177 1039(tangle)s
+14(88)h
+177 1089(T)s
+-3(angling)h
+12(21)h
+177 1139(target)s
+15(t)h
+-1(yp)h
+1(esetter)h
+16(89)h
+177 1189(termination)s
+12(\014le)h
+14(71)h
+177 1239(termination)s
+12(line)h
+14(71)h
+177 1288(terminology)s
+12(63)h
+177 1338(testing)s
+14(F)h
+-3(unnelW)h
+-3(eb)h
+14(105)h
+177 1388(testing)s
+14(regression)h
+16(103)h
+177 1438(testing)s
+14(regression)h
+16(47)h
+177 1488(tests)s
+15(directory)h
+15(104)h
+177 1538(text)s
+15(editors)h
+14(42)h
+177 1588(text)s
+15(\014les)h
+14(cryptic)h
+15(55)h
+177 1638(text)s
+15(free)h
+14(83)h
+177 1687(text)s
+15(sharing)h
+13(58)h
+177 1737(text)s
+15(tok)h
+-1(ens)h
+14(82)h
+177 1787(T)s
+-3(eX)h
+14(13)h
+177 1837(T)s
+-3(eX)h
+14(18)h
+177 1887(T)s
+-3(eX)h
+14(22)h
+177 1937(T)s
+-3(eX)h
+14(54)h
+177 1987(thesis)s
+15(PhD)h
+14(54)h
+177 2037(tiger)s
+14(snak)h
+-1(e)h
+14(19)h
+177 2086(time)s
+13(dev)h
+-1(elopmen)h
+-1(t)h
+13(17)h
+177 2136(times)s
+13(dump)h
+13(68)h
+177 2186(title)s
+14(directiv)h
+-1(e)h
+14(37)h
+177 2236(title)s
+14(pragma)h
+12(82)h
+177 2286(title)s
+14(82)h
+177 2336(tok)s
+-1(en)h
+14(list)h
+14(dump)h
+12(68)h
+177 2386(tolerate)s
+14(command)h
+12(100)h
+177 2436(to)s
+1(ols)h
+14(literate)h
+14(programm)h
+-1(i)h
+-1(ng)h
+12(15)h
+177 2486(trace)s
+15(comm)h
+-1(and)h
+12(100)h
+177 2535(trace)s
+15(on)h
+14(comm)h
+-1(and)h
+12(48)h
+177 2585(tracedump)s
+14(options)h
+13(68)h
+177 2635(trailing)s
+13(blanks)h
+13(42)h
+177 2685(tree)s
+15(directory)h
+15(102)h
+177 2735(tree)s
+15(structure)h
+16(83)h
+177 2785(T)s
+-3(rev)h
+-1(orro)h
+-1(w)h
+14(Andrew)h
+15(13)h
+177 2835(tutorial)s
+13(+=)h
+15(26)h
+1136 42(tutorial)s
+13(==)h
+14(26)h
+1136 91(tutorial)s
+13(@M)h
+14(24)h
+1136 141(tutorial)s
+13(@Z)h
+14(24)h
+1136 191(tutorial)s
+13(in)h
+-1(tro)h
+1(duction)h
+13(19)h
+1136 241(tutorial)s
+13(macro)h
+12(facilities)h
+13(22)h
+1136 291(tutorial)s
+13(macros)h
+13(simple)h
+12(22)h
+1136 341(tutorial)s
+13(simple)h
+12(macros)h
+13(22)h
+1136 391(tutorial)s
+13(t)h
+-1(yp)h
+1(esetting)h
+15(32)h
+1136 441(tutorial)s
+13(15)h
+1136 490(tutorial)s
+13(19)h
+1136 540(t)s
+-1(w)h
+-1(elv)h
+-1(e)h
+13(bugs)h
+15(of)h
+13(c)h
+-1(hristmas)h
+13(29)h
+1136 590(t)s
+-1(w)h
+-1(o)h
+13(main)h
+12(asp)h
+1(ects)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+14(21)h
+1136 640(t)s
+-1(yp)h
+1(esafe)h
+14(generics)h
+15(61)h
+1136 690(t)s
+-1(yp)h
+1(eset)h
+15(\014le)h
+14(69)h
+1136 740(t)s
+-1(yp)h
+1(eset)h
+15(option)h
+13(69)h
+1136 790(t)s
+-1(yp)h
+1(esetter)h
+16(directiv)h
+-1(e)h
+14(tok)h
+-1(ens)h
+15(82)h
+1136 840(t)s
+-1(yp)h
+1(esetter)h
+16(directiv)h
+-1(es)h
+15(66)h
+1136 889(t)s
+-1(yp)h
+1(esetter)h
+16(directiv)h
+-1(es)h
+15(81)h
+1136 939(t)s
+-1(yp)h
+1(esetter)h
+16(indep)h
+1(endence)h
+16(18)h
+1136 989(t)s
+-1(yp)h
+1(esetter)h
+16(indep)h
+1(endence)h
+16(34)h
+1136 1039(t)s
+-1(yp)h
+1(esetter)h
+16(indep)h
+1(endence)h
+16(65)h
+1136 1089(t)s
+-1(yp)h
+1(esetter)h
+16(indep)h
+1(endence)h
+16(80)h
+1136 1139(t)s
+-1(yp)h
+1(esetter)h
+16(indep)h
+1(enden)h
+-1(t)h
+15(34)h
+1136 1189(t)s
+-1(yp)h
+1(esetter)h
+16(pragma)h
+12(80)h
+1136 1239(t)s
+-1(yp)h
+1(esetter)h
+16(target)h
+14(89)h
+1136 1288(T)s
+-1(yp)h
+1(esetting)h
+14(directiv)h
+-1(e)h
+15(116)h
+1136 1338(t)s
+-1(yp)h
+1(esetting)h
+14(o)h
+-1(v)h
+-1(erview)h
+14(32)h
+1136 1388(t)s
+-1(yp)h
+1(esetting)h
+14(strength)h
+16(46)h
+1136 1438(t)s
+-1(yp)h
+1(esetting)h
+14(tutorial)h
+14(32)h
+1136 1488(t)s
+-1(yp)h
+1(esetting)h
+14(13)h
+1136 1538(t)s
+-1(yp)h
+1(esetting)h
+14(89)h
+1136 1588(univ)s
+-1(ersities)h
+14(17)h
+1136 1638(Univ)s
+-1(ersit)h
+-1(y)h
+13(Adelaide)h
+14(59)h
+1136 1687(Unix)s
+13(newline)h
+14(75)h
+1136 1737(Unix)s
+13(67)h
+1136 1787(unprin)s
+-1(table)h
+13(c)h
+-1(haracters)h
+16(71)h
+1136 1837(USDOD83)s
+13(117)h
+1136 1887(use)s
+14(of)h
+14(mem)h
+-1(ory)h
+12(30)h
+1136 1937(useful)s
+14(comm)h
+-1(ands)h
+12(47)h
+1136 1987(userman)s
+13(directory)h
+15(105)h
+1136 2037(uses)s
+15(shell)h
+14(90)h
+1136 2086(v)s
+-1(ersions)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(114)h
+1136 2136(v)s
+-1(ertical)h
+13(skip)h
+14(81)h
+1136 2186(visible)s
+13(pragmas)h
+12(78)h
+1136 2236(vskip)s
+13(directiv)h
+-1(e)h
+15(37)h
+1136 2286(vskip)s
+13(pragma)h
+12(81)h
+1136 2336(W)s
+13(option)h
+13(69)h
+1136 2386(w)s
+-1(arning)h
+13(sev)h
+-1(erit)h
+-1(y)h
+14(65)h
+1136 2436(w)s
+-1(arning)h
+13(status)h
+14(90)h
+1136 2486(w)s
+-1(arran)h
+-1(t)h
+-1(y)h
+13(112)h
+1136 2535(W)s
+-3(ea)h
+-1(v)h
+-1(e)h
+13(116)h
+1136 2585(w)s
+-1(ea)h
+-1(v)h
+-1(e)h
+14(65)h
+1136 2635(w)s
+-1(ea)h
+-1(v)h
+-1(e)h
+14(89)h
+1136 2685(W)s
+-3(ea)h
+-1(ving)h
+12(21)h
+1136 2735(WEB)s
+14(output)h
+14(25)h
+1136 2785(WEB)s
+14(21)h
+1136 2835(WEB)s
+14(25)h
+1032 2940(126)s
+127 @eop
+128 @bop0
+128 @bop1
+cmr10.300 sf
+177 42(W)s
+-3(eb)h
+14(9)h
+177 91(white)s
+14(p)h
+1(oin)h
+-1(ter)h
+14(shark)h
+14(19)h
+177 141(wholistic)s
+13(debugging)h
+14(53)h
+177 191(wholistic)s
+13(debugging)h
+14(53)h
+177 241(wholistic)s
+13(medicine)h
+13(53)h
+177 291(width)s
+14(option)h
+13(69)h
+177 340(width)s
+14(pro)h
+1(duct)h
+15(\014le)h
+13(69)h
+177 390(William)s
+-2(s)h
+13(Ross)h
+13(1)h
+177 440(w)s
+-1(orkstations)h
+14(48)h
+177 490(w)s
+-1(orkstation)h
+14(90)h
+177 540(write)s
+14(command)h
+11(100)h
+177 589(writeu)s
+14(command)h
+12(100)h
+177 639(X)s
+14(option)h
+13(69)h
+1032 2940(127)s
+128 @eop
+@end
diff --git a/web/funnelweb/0stoppress/fw_mlist.mes b/web/funnelweb/0stoppress/fw_mlist.mes
new file mode 100644
index 0000000000..e832d7ba04
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_mlist.mes
@@ -0,0 +1,45 @@
+--<Guru>--
+D=10-Jul-1992
+A=Ross Williams
+S=The FunnelWeb mailing list as at 10-Jul-1992
+K=funnelweb mailing list users
+--<Guru>--
+FUNNELWEB MAILING LIST
+======================
+Here is the FunnelWeb mailing list as at 10-Jul-1992:
+
+adrian@internode.com.au
+alien@essex.ac.uk
+atrevorr@spam.adelaide.edu.au
+bart@cs.tamu.edu
+cmh@air16.larc.nasa.gov
+dave@cs.adelaide.edu.au
+davidh@kau1.kodak.com
+ddw@sunbim.be
+dlb@hudson.wash.inmet.com
+dwagon@nella9.cc.monash.edu.au
+dwyer@cs.adelaide.edu.au
+frackit!dave@uunet.uu.net
+g.michaelson@cc.uq.oz.au
+gordoni@cs.adelaide.edu.au
+gvokalek@eleceng.adelaide.edu.au
+hrubin@pop.stat.purdue.edu
+jcallen@world.std.com
+john@cs.utexas.edu
+jpq@casbah.acns.nwu.edu
+jutta@cs.tu-berlin.de
+kent@imd.sterling.com
+kipd@hpclad2.cup.hp.com
+m.harding@gdt.bath.ac.uk
+maxtal@extro.ucc.su.oz.au
+mbcnpjq@hpa.ph.man.ac.uk
+rjb@koala.harvard.edu
+ross@spam.adelaide.edu.au
+simon@internode.com.au
+svb@cs.purdue.edu
+tonyb@cs.adelaide.edu.au
+vanrey@hippo.fido.de
+w8sdz@vela.acs.oakland.edu
+wvenable@stats.adelaide.edu.au
+
+--<End of Document>--
diff --git a/web/funnelweb/0stoppress/fw_mlist_rules.mes b/web/funnelweb/0stoppress/fw_mlist_rules.mes
new file mode 100644
index 0000000000..bb96e57375
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_mlist_rules.mes
@@ -0,0 +1,47 @@
+--<Guru>--
+D=15-Oct-1992
+A=Ross Williams
+S=Notes on the management of the FunnelWeb mailing list.
+K=funnelweb mailing list posting management fw-users users fw
+--<Guru>--
+NOTES ON THE MANAGEMENT OF THE FUNNELWEB MAILING LIST
+=====================================================
+A mailing list has been created to disseminate information about
+FunnelWeb, and to allow its users to communicate with each other. It's
+email addresses are all of the form "NAME@internode.com.au" (e.g.
+fw-users@internode.com.au). Here they are:
+
+ fw-users - To mail to list.
+ fw-users-request - To request an alteration to the list.
+ owner-fw-users - Internet required address.
+ owner-fw-users-list - Internet required address.
+
+WARNING: ALL MESSAGES POSTED TO THE FUNNELWEB MAILING LIST WILL BE
+CONSIDERED TO BE PUBLIC POSTINGS. POSTING TO THE FUNNELWEB MAILING
+LIST IS TO BE CONSIDERED LEGALLY EQUIVALENT TO POSTING TO AN ORDINARY
+INTERNET NEWSGROUP. (This notice has been included so that messages
+posted to the mailing list can be manipulated freely (e.g. archived,
+reposted, disseminated) without permission having to be granted by the
+author of each message).
+
+Thus, to send a message to everyone on the mailing list, mail it to
+"fw-users@internode.com.au"
+
+To subscribe or unsubscribe from the list, send a message requesting
+this to "fw-users-request@internode.com.au".
+
+In order to be compatible with various different internet standards
+for organizing mailing lists, two other addresses
+owner-fw-users@internode.com.au and
+owner-fw-users-list@internode.com.au also exist, which are currently
+just aliases for fw-users-request@internode.com.au.
+
+HINTS: If you receive a message from the mailing list and you are
+using the ELM mailer, you can reply to the author of the message
+using the "r" (reply) command. To send your reply to everyone on the list,
+use the "g" (group reply) command.
+
+Thanks got to Adrian Corston (adrian@internode.com.au) of Internode
+Systems for creating and managing this mailing list.
+
+-<End of Document>--
diff --git a/web/funnelweb/0stoppress/fw_p_apollo.mes b/web/funnelweb/0stoppress/fw_p_apollo.mes
new file mode 100644
index 0000000000..3af396d9ef
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_p_apollo.mes
@@ -0,0 +1,12 @@
+--<Guru>--
+D=16-Oct-1992
+A=Ross Williams
+S=Notes on getting FunnelWeb to work on an Apollo.
+K=funnelweb funnel web apollo workstation port implementation hints
+--<Guru>--
+NOTES ON PORTING FUNNELWEB TO AN APOLLO WORKSTATION
+===================================================
+David Barton (dlb@hudson.wash.inmet.com) reports that he has managed
+to compile FunnelWeb on an Apollo running Domain/OS SR10.2.
+
+--<End of Document>--
diff --git a/web/funnelweb/0stoppress/fw_p_hp.mes b/web/funnelweb/0stoppress/fw_p_hp.mes
new file mode 100644
index 0000000000..cea24cbb6f
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_p_hp.mes
@@ -0,0 +1,25 @@
+--<Guru>--
+D=15-Oct-1992
+A=Ross Williams
+S=Notes on porting FunnelWeb to HP computers.
+K=funnelweb port implement move hewlett packard hp computers
+--<Guru>--
+PORTING FUNNELWEB TO HP COMPUTERS
+=================================
+* On an HP 9000/s300 running HP-UX 8.0, some users got FunnelWeb to
+compile, but found that they were running up against buffer size
+limitations. The problem is the definition of FILENAME_MAX in
+machin.h. When I wrote FunnelWeb, I assumed that FILENAME_MAX was the
+maximum length of an entire file specification including the path.
+However, on many machines, it is defined the be the maximum length of
+a filename without the path. The problem can be fixed by forcing the
+definition
+
+ #define FILENAME_MAX 300
+
+in machin.h
+
+This is the only known problem encountered by those who have performed
+HP ports.
+
+--<End of Document>--
diff --git a/web/funnelweb/0stoppress/fw_p_mpw.mes b/web/funnelweb/0stoppress/fw_p_mpw.mes
new file mode 100644
index 0000000000..464ac197b1
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_p_mpw.mes
@@ -0,0 +1,21 @@
+--<Guru>--
+D=09-Aug-1992
+A=Ross Williams
+S=Notes on porting FunnelWeb to Macintosh MPW C
+K=funnelweb funnel web port mpw implementation macintosh
+--<Guru>--
+NOTES ON PORTING FUNNELWEB TO MACINTOSH MPW C
+=============================================
+Tor Olaussen (olaussen@cc.uib.no) of the Nansen Remote Sensing Center,
+University of Bergen, Norway reports that he has managed to get
+FunnelWeb to compile and run under the Macintosh MPW environment. He
+writes:
+
+"If you are interested in my changes, I should be able to generate
+diff files, and send them to you together with a makefile. Otherwise
+you can use me a reference if you receive questions about FunnelWeb
+and MPW."
+
+Thanks Tor!
+
+--<End of Document>--
diff --git a/web/funnelweb/0stoppress/fw_p_next.mes b/web/funnelweb/0stoppress/fw_p_next.mes
new file mode 100644
index 0000000000..302db02101
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_p_next.mes
@@ -0,0 +1,23 @@
+--<Guru>--
+D=16-Oct-1992
+A=Ross Williams
+S=Hints for porting FunnelWeb to a NeXT machine.
+K=port funnelweb funnel web next machine
+--<Guru>--
+HINTS FOR PORTING FUNNELWEB TO A NEXT MACHINE
+=============================================
+John Dawson (avsoft!john@cs.utexas.edu) has installed FunnelWeb
+on a NeXT machine and has got it to pass the regression tests.
+He writes:
+
+ "I had to play with the machin.{h,m} and environ.h files to get
+ FunnelWeb to compile correctly. The problem area was in machin.h
+ where you put all those prototypes for the Sun. They didn't jive
+ well with my system. However, every other default for the Sun was
+ ok. (A NeXT only needs to be aligned on 2^1-byte boundaries, and
+ I think 2^0-byte boundaries might even work, but aligning things on
+ 2^2-byte boundaries doesn't hurt much.)."
+
+The modified header files have been placed in "fw_p_next_patch.mes".
+
+--<End of Document>--
diff --git a/web/funnelweb/0stoppress/fw_p_next_patch.mes b/web/funnelweb/0stoppress/fw_p_next_patch.mes
new file mode 100644
index 0000000000..4c9d895fb9
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_p_next_patch.mes
@@ -0,0 +1,923 @@
+ ___ ___
+
+|\/| /\ / |__| | |\ | |__|
+
+| | /--\ \___ | | _|_ | \| . | |
+
+
+
+/*##############################################################################
+
+FUNNNELWEB COPYRIGHT
+====================
+FunnelWeb is a literate-programming macro preprocessor.
+
+Copyright (C) 1992 Ross N. Williams.
+
+ Ross N. Williams
+ ross@spam.adelaide.edu.au
+ 16 Lerwick Avenue, Hazelwood Park 5066, Australia.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of Version 2 of the GNU General Public License as
+published by the Free Software Foundation.
+
+This program is distributed WITHOUT ANY WARRANTY; without even the implied
+warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+See Version 2 of the GNU General Public License for more details.
+
+You should have received a copy of Version 2 of the GNU General Public
+License along with this program. If not, you can FTP the license from
+prep.ai.mit.edu/pub/gnu/COPYING-2 or write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Section 2a of the license requires that all changes to this file be
+recorded prominently in this file. Please record all changes here.
+
+Programmers:
+ RNW Ross N. Williams ross@spam.adelaide.edu.au
+
+Changes:
+ 07-May-1992 RNW Program prepared for release under GNU GPL V2.
+
+##############################################################################*/
+
+
+/******************************************************************************/
+/* MACHIN.H */
+/******************************************************************************/
+/* */
+/* WARNING: DO NOT ADD ANY PROGRAM DEPENDENT DEFINITIONS. */
+/* */
+/* This module (machin.h and machin.c) contains definitions and objects */
+/* whose values depends directly on the compilation and execution */
+/* environment, but are otherwise independent from any particular computer */
+/* program. */
+/* */
+/* The only difference between the purpose of this module and the "environ" */
+/* module is that the "environ" module contains the "essentials" whereas this */
+/* module contains extra machine specific definitions and objects that will */
+/* not be required by most user modules. */
+/* */
+/******************************************************************************/
+
+/* Ensure that the body of this header file is included at most once. */
+#ifndef DONE_FWMACHIN
+#define DONE_FWMACHIN
+
+/******************************************************************************/
+
+#include <time.h>
+#include "style.h"
+
+/******************************************************************************/
+
+/* Machine Alignment Constraints */
+/* ----------------------------- */
+/* Some machines require that objects of particular lengths be aligned in */
+/* memory. For example, the 68000 will trap any attempt to access a word */
+/* (16 bits or an int in THINK C) at an odd address. It is important that C */
+/* programs that deal with memory at a low level be aware of such */
+/* constraints. As the constraints are always at a power of two, we defined */
+/* ALIGN_POWER to be the minimum power of two at which it is both safe and */
+/* efficient to operate. */
+
+/* The Macintosh requires words and longs to be aligned on word boundaries. */
+/* The PC is not fussy about alignment, but operates more efficiently at word */
+/* boundaries. */
+#if MAC | PC | NEXT
+#define ALIGN_POWER (1L)
+#endif
+
+/* The Sun requires objects to be aligned on longword boundaries (=2^2). */
+/* The VMS VAX doesn't care about alignment, but operates more efficiently on */
+/* longword boundaries. */
+#if SUN | VMS
+#define ALIGN_POWER (2L)
+#endif
+
+/******************************************************************************/
+
+/* Filenames */
+/* --------- */
+/* The length and structure of filenames varies from machine to machine. The */
+/* differences addressed here are: */
+/* 1) The character used to separate directory specs from filenames. */
+/* 2) The maximum length of a filename. */
+
+/* FN_DELIM must contain the character that separates directory specs from */
+/* filenames. Notice that in the VMS case, it is "]", not "." */
+
+#if MAC
+#define FN_DELIM ':'
+#endif
+
+#if SUN | NEXT
+#define FN_DELIM '/'
+#endif
+
+#if VAX
+#define FN_DELIM ']'
+#endif
+
+#if PC
+#define FN_DELIM '\\'
+#endif
+
+/* The rest of this section shouldn't have to be changed, unless you */
+/* encounter a funny with your system's definition of FILENAME_MAX. */
+
+/* FILENAME_MAX tells the maximum number of characters allowed in a filename */
+/* on the target machine. This symbol is supposed to be defined in stdio.h */
+/* (ANSI S7.9.1) so we don't want to override that. However, if it isn't, we */
+/* need to define a safe default length. */
+#ifndef FILENAME_MAX
+#define FILENAME_MAX 300
+#endif
+
+/* Some VAX compilers define FILENAME_MAX to be 39, which is the maximum */
+/* length of the NAME part of a VMS filename. This is not appropriate, so we */
+/* override it. */
+#if VMS
+#undef FILENAME_MAX
+#define FILENAME_MAX 255 /* Should really be NAM$C_MAXRSS */
+#endif
+
+/* Now we can use the constant to define a filename type. */
+/* Note: For a while I defined "typedef fn_t *p_fn_t". However, this is a */
+/* pointer to an array rather than (char *) and it caused no end of problems. */
+typedef char fn_t[FILENAME_MAX+1];
+typedef char *p_fn_t;
+
+/******************************************************************************/
+
+/* Command Lines */
+/* ------------- */
+/* The maximum length of command line varies from machine to machine and we */
+/* define symbols to reflect this. The reason why we don't just set this to a */
+/* high value and forget about it is that FunnelWeb sometimes places */
+/* command line variables on the stack, and some machines (e.g. MAC under */
+/* THINK-C don't provide much stack space. So we have to minimize this */
+/* variable on those machines. */
+
+/* We choose a small maximum command line on the Macintosh so as to avoid */
+/* chewing up stack space when command lines have to be pushed. */
+#if MAC
+#define COMLINE_MAX 300
+#endif
+
+/* On the Sun, 1024 is a normal command line and 2048 is safe. */
+#if SUN
+#define COMLINE_MAX 2048
+#endif
+
+/* On the NeXT, 1024 seems like a decent guess. */
+#if NEXT
+#define COMLINE_MAX 1024
+#endif
+
+/* On the VMS, 1024 is usually adequate. */
+#if VMS
+#define COMLINE_MAX 1024
+#endif
+
+/* On a PC, we assume this is enough. */
+#if PC
+#define COMLINE_MAX 300
+#endif
+
+/* Make sure that the value is not too low. */
+/* The value 300 is guaranteed by the command interpreter. */
+#if COMLINE_MAX < 300
+ #error COMLINE_MAX must be at least 300.
+#endif
+
+/* Now define a type for command lines. */
+/* Note: For a while I defined "typedef cl_t *p_cl_t". However, this is a */
+/* pointer to an array rather than (char *) and it caused no end of problems. */
+typedef char cl_t[COMLINE_MAX+1];
+typedef char *p_cl_t;
+
+/******************************************************************************/
+
+/* Line Termination */
+/* ---------------- */
+
+/* FunnelWeb has special-case code to make reading input files faster on */
+/* machines where the format of text files corresponds to the internal C */
+/* text stream model. The UNIX_EOL #define should be activated if and only */
+/* the host environment has text files consisting of a stream of bytes with */
+/* a single LF (ASCII,decimal-10,hex-0A) character being used to terminate */
+/* each line, and no special character to indicate end of file. */
+/* This is the same format as is used in the Unix operating system. */
+/* If you are in doubt about this, play it safe and define your environment */
+/* to be non-Unix, as non-Unix will work on ALL systems (including Unix). */
+
+#if MAC | VMS | PC
+/* These systems do NOT use Unix EOLs. */
+#define UNIX_EOL 0
+#endif
+
+#if SUN | NEXT
+/* This should really be 1 on a SUN, but I haven't got around to debugging */
+/* FunnelWeb with UNIX_EOL==1. */
+#define UNIX_EOL 0
+#endif
+
+/******************************************************************************/
+
+/* MIssing Prototypes */
+/* ---------------- */
+/* Compilers that are fussy about prototypes sometimes complain about calls */
+/* to the standard libraries. These declarations solve this problem. */
+
+#if SUN
+int fclose P_((FILE *stream));
+int fputs P_((const char *s, FILE *stream));
+int fputc P_((int c, FILE *stream));
+int fflush P_((FILE *stream));
+int remove P_((const char *filename));
+int rename P_((const char *oldname, const char *newname));
+int toupper P_((int));
+int sscanf P_(());
+int fprintf P_(());
+int _filbuf P_(());
+void *memcpy P_((void *s1, void *s2, size_t n));
+void *memset P_((void *s, int c, size_t n));
+int memcmp P_((void *s1, void *s2, size_t n));
+size_t fread P_((void *ptr, size_t size, size_t nobj, FILE *stream));
+size_t fwrite P_((const void *ptr, size_t size, size_t nobj, FILE *stream));
+clock_t clock P_((void));
+time_t time P_((time_t *tp));
+int printf P_(());
+#endif
+
+/******************************************************************************/
+
+EXPORT void fn_ins P_((p_fn_t,char *));
+/* - The name stands for FileName INSert. */
+/* - The first argument must be a pointer to an object of type fn_t */
+/* (containing an ordinary C character string). */
+/* - The second argument must be a pointer to an ordinary C character string. */
+/* - Both arguments must contain a full, partial, or empty filename spec. */
+/* - We will refer to the arguments as f1 and f2. */
+/* - If there is a syntax error in either spec, fn_ins does nothing. */
+/* - Otherwise, it: */
+/* 1. Analyses the two filename specifications into filename field . */
+/* 2. Replaces each field in f1 by the corresponding field in f2, but */
+/* only if the corresponding field in f2 is non-empty. */
+/* 3. Optionally [concession to VMS] it may then replace blank fields */
+/* in the resulting file spec in f1 by fields from the current */
+/* global "default" directory spec. */
+/* The structure and fields of filenames will vary from machine to machine */
+/* and so this is not important. However, every implementation must structure */
+/* the filename so that it will at least RECOGNISE a file extension */
+/* (e.g. ".lis") field. */
+
+/******************************************************************************/
+
+EXPORT void getcline P_((int,char **,char *));
+/* Operating system environments vary a lot in the way in which their command */
+/* language interfaces are set up. The approach taken in FunnelWeb is to */
+/* define a "standard" Unix-like command line syntax and then insist that */
+/* other environments deliver such a command line as a single string. */
+/* This function getcline must extract such a standard command line from its */
+/* environment and copy it as a single string of not more than COMLINE_MAX */
+/* characters into its third argument. A description of the "standard" */
+/* command line can be found in the options package. */
+/* The first argument is given to getcline and is argc from main(). */
+/* The second argument is given to getcline and is argv from main(). */
+/* These two arguments are given in case getcline needs them to assemble the */
+/* command line (as opposed to calling e.g. VMS CLI routines). */
+/* The third argument is the string into which the result should be placed. */
+
+/******************************************************************************/
+
+EXPORT float tim_real P_((void));
+/* Returns the number of seconds between the present and an unspecified, but */
+/* statically fixed time in the past. */
+/* Returns 0.0 if this information is unavailable */
+
+EXPORT float tim_cpu P_((void));
+/* Returns the number of CPU seconds consumed between the present and an */
+/* unspecified, but statically fixed time in the past. */
+/* Returns 0.0 if this information is unavailable */
+
+/******************************************************************************/
+
+/* For #ifndef preventing multiple inclusion of the body of this header file. */
+#endif
+
+/******************************************************************************/
+/* End of MACHIN.H */
+/******************************************************************************/
+
+
+
+
+
+
+
+ ___ ___ ___
+
+|\/| /\ / |__| | |\ | /
+
+| | /--\ \___ | | _|_ | \| . \___
+
+
+
+
+/*##############################################################################
+
+FUNNNELWEB COPYRIGHT
+====================
+FunnelWeb is a literate-programming macro preprocessor.
+
+Copyright (C) 1992 Ross N. Williams.
+
+ Ross N. Williams
+ ross@spam.adelaide.edu.au
+ 16 Lerwick Avenue, Hazelwood Park 5066, Australia.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of Version 2 of the GNU General Public License as
+published by the Free Software Foundation.
+
+This program is distributed WITHOUT ANY WARRANTY; without even the implied
+warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+See Version 2 of the GNU General Public License for more details.
+
+You should have received a copy of Version 2 of the GNU General Public
+License along with this program. If not, you can FTP the license from
+prep.ai.mit.edu/pub/gnu/COPYING-2 or write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Section 2a of the license requires that all changes to this file be
+recorded prominently in this file. Please record all changes here.
+
+Programmers:
+ RNW Ross N. Williams ross@spam.adelaide.edu.au
+
+Changes:
+ 07-May-1992 RNW Program prepared for release under GNU GPL V2.
+
+##############################################################################*/
+
+
+/******************************************************************************/
+/* MACHIN.C */
+/******************************************************************************/
+/* */
+/* WARNING: DO NOT ADD ANY PROGRAM DEPENDENT DEFINITIONS. */
+/* */
+/* This file contains machine-dependent, program-independent stuff that */
+/* implements the functionality promised in MACHIN.H. */
+/* */
+/* Note: As usual, the full definitions of functions in the .H file are not */
+/* repeated here. */
+/* */
+/******************************************************************************/
+
+#include <time.h>
+#include "style.h"
+
+#include "as.h"
+#include "machin.h"
+
+/* The Macintosh's doesn't have a command language, and so we have to prompt */
+/* for a command line. This requires a special package. */
+#if MAC
+#include <console.h>
+#endif
+
+/* Under VMS, we need RMS to get at stuff to do with filenames. */
+#if VMS
+#include RMS
+#endif
+
+/******************************************************************************/
+/* LOCAL FUNCTIONS */
+/******************************************************************************/
+
+LOCAL void mconcat P_((int,char **,char *));
+LOCAL void mconcat(argc,argv,result)
+/* Given argc and argv, as passed to main(), this function appends all the */
+/* arguments together (separated by spaces) into the string "result". */
+/* This function assists in reconstructing the command line. */
+/* This function is actually portable, so you shouldn't have to change it. */
+/* Note: "mconcat" stands for Multiple CONCATenation. */
+int argc;
+char **argv;
+char *result;
+{
+ uword i;
+ strcpy(&result[0],argv[0]);
+ for (i=1;i<argc;i++)
+ {
+ strcat(&result[0]," " );
+ strcat(&result[0],argv[i]);
+ }
+}
+
+/******************************************************************************/
+
+#if MAC | SUN | PC | NEXT
+LOCAL void fn_split P_((p_fn_t,p_fn_t,p_fn_t,p_fn_t));
+LOCAL void fn_split(p_fn,p_path,p_name,p_ext)
+/* Accepts a filename in p_fn and writes the path, name, and extension */
+/* components of the filename to the strings p_path, p_name, and p_ext. */
+p_fn_t p_fn;
+p_fn_t p_path;
+p_fn_t p_name;
+p_fn_t p_ext;
+{
+ char *p,*q;
+
+ /* Make sure that the input filename is a sensible length. */
+ as_cold(strlen(p_fn)<=FILENAME_MAX,"fn_split: Filename is too long.");
+
+ /* Extract the path from the input string by searching for the last */
+ /* occurrance of the special character used for directories. */
+
+ /* Find the last directory/filename separator. */
+ p=strrchr(p_fn,FN_DELIM);
+ if (p==NULL)
+ {strcpy(p_path,""); p=p_fn;}
+ else
+ {
+ memcpy(p_path,p_fn,(size_t) (p-p_fn+1));
+ p_path[(size_t) (p-p_fn+1)]=EOS;
+ p++;
+ }
+
+ /* Assert: p now points to the first character of the name field. */
+
+ /* Now locate the file extension. */
+ q=strrchr(p_fn,'.');
+ if (q==NULL)
+ {strcpy(p_ext,""); q = &p_fn[strlen(p_fn)];}
+ else
+ {strcpy(p_ext,q);}
+
+ /* Assert: q now points to the '.' preceding the extension field. */
+
+ /* Now anything between p and q must be the filename proper. */
+ for (;p<q;p++)
+ *p_name++ = *p;
+ *p_name=EOS;
+}
+#endif
+
+/******************************************************************************/
+
+#if MAC | SUN | PC | NEXT
+LOCAL void fn_join P_((p_fn_t,p_fn_t,p_fn_t,p_fn_t));
+LOCAL void fn_join(p_fn,p_path,p_name,p_ext)
+/* This function sets p_fn to the empty string and then successively appends */
+/* p_path, p_name, and p_ext. Before doing this, it checks to make sure that */
+/* there will be enough room and bombs the program if there isn't. */
+p_fn_t p_fn;
+p_fn_t p_path;
+p_fn_t p_name;
+p_fn_t p_ext;
+{
+ as_cold(strlen(p_path)+strlen(p_name)+strlen(p_ext) <= FILENAME_MAX,
+ "fn_join: Constructed filename is too long.");
+ strcpy(p_fn,p_path);
+ strcat(p_fn,p_name);
+ strcat(p_fn,p_ext);
+}
+#endif
+
+/******************************************************************************/
+/* EXPORTED FUNCTIONS */
+/******************************************************************************/
+
+#if MAC | SUN | PC | NEXT
+EXPORT void fn_ins(p_cur,p_add)
+p_fn_t p_cur;
+p_fn_t p_add;
+{
+ fn_t cur_path, add_path;
+ fn_t cur_name, add_name;
+ fn_t cur_extn, add_extn;
+
+ /* Split the argument file names into their component parts. */
+ fn_split(p_cur,cur_path,cur_name,cur_extn);
+ fn_split(p_add,add_path,add_name,add_extn);
+
+ /* Perform the inheriting on a field by field basis. */
+ if (strlen(add_path) > 0) strcpy(cur_path,add_path);
+ if (strlen(add_name) > 0) strcpy(cur_name,add_name);
+ if (strlen(add_extn) > 0) strcpy(cur_extn,add_extn);
+
+ /* Put the fields back together again to yield the final result. */
+ fn_join(p_cur,cur_path,cur_name,cur_extn);
+}
+#endif
+
+#if VMS
+EXPORT void fn_ins(p_cur,p_add)
+/* This VMS version of fn_ins was written with the assistance of: */
+/* Jeremy Begg (jeremy@vsm.com.au) of VSM Software Services. Thanks! */
+/* The VMS version is messy because VMS has highly structured filenames and */
+/* highly ingrained rituals for manipulating them. */
+p_fn_t p_cur;
+p_fn_t p_add;
+{
+ struct FAB cur_fab; /* FAB for SYS$PARSE */
+ struct NAM cur_nam; /* NAM for SYS$PARSE */
+ fn_t expanded; /* Result of SYS$PARSE */
+ long rms_status; /* Status of SYS$PARSE */
+
+ /*
+ printf("\nTRACE: Call of fn_ins(...).\n");
+ printf(" Current spec = \"%s\".\n",p_cur);
+ printf(" Add spec = \"%s\".\n",p_add);
+ */
+
+ /* Initialize the FAB and NAM block to something sensible. */
+ cur_fab = cc$rms_fab;
+ cur_nam = cc$rms_nam;
+
+ /* (fna,fns) is address and size of input file spec in FAB block. */
+ cur_fab.fab$l_fna = p_add;
+ cur_fab.fab$b_fns = strlen(p_add);
+
+ /* (dna,dns) is address and size of default file spec in FAB block. */
+ cur_fab.fab$l_dna = p_cur;
+ cur_fab.fab$b_dns = strlen(p_cur);
+
+ /* Connect the NAM block to the FAB block. */
+ cur_fab.fab$l_nam = &cur_nam;
+
+ /* Point the NAM block's target name fields to the target namechar array. */
+ cur_nam.nam$l_esa = &expanded;
+ cur_nam.nam$b_ess = FILENAME_MAX; /* Reserve last char for NULL terminator */
+
+ /* PWD => put the password from a DECnet Access Control String in the filespec
+ * SYNCHK => check syntax only, don't search for the file on disk
+ */
+ cur_nam.nam$b_nop = NAM$M_PWD + NAM$M_SYNCHK;
+
+ /* Perform the parse. */
+ rms_status = sys$parse(&cur_fab);
+ if (rms_status & 1)
+ {
+ expanded[cur_nam.nam$b_esl]=EOS; /* Terminate VMS string. */
+ strcpy(p_cur,expanded);
+ }
+ else
+ {
+ printf("Note: RMS parse failed. Could be a syntax error, could be a bug!\n");
+ }
+
+ /* TRACE printf(" Result spec = \"%s\".",p_cur); */
+}
+#endif
+
+/******************************************************************************/
+
+EXPORT void getcline(argc,argv,p_comline)
+/* Given, argc and argv, writes a command line string in p_comline. */
+/* See machin.h for a thorough definition of this function. */
+int argc;
+char **argv;
+char *p_comline;
+{
+ int argc2;
+ char **argv2;
+
+#if MAC
+ /* On the Macintosh there is no command language and therefore no command */
+ /* line. Therefore we cannot trust the argc and argv handed to us by main() */
+ /* and have to obtain a command line from other sources. */
+ /* The "ccommand" function comes from <console.h> of the THINK C libraries. */
+ argc2=ccommand(&argv2);
+#endif
+
+/* The other systems work like Unix. */
+#if SUN | VMS | PC | NEXT
+argc2=argc;
+argv2=argv;
+#endif
+
+ /* The command line is currently in pieces. Reassemble it. That's all! */
+ mconcat(argc2,argv2,p_comline);
+}
+
+/******************************************************************************/
+
+EXPORT float tim_real()
+{
+ STAVAR bool init=FALSE;
+ STAVAR time_t base;
+
+ /* The first time this routine is called, we establish a base real time */
+ /* from which real time differences are calculated. There are two reasons */
+ /* for doing this. The first is that difftime seems to be the only way to */
+ /* get ANSI C to hand over a calibrated arithmetic type holding the real */
+ /* time. The second is that we don't want to have to deal with large */
+ /* absolute times anyway. */
+ if (!init)
+ {
+ /* Returns -1 if the time is not available (ANSI 7.12.2.4). */
+ base=time(NULL);
+ init=TRUE;
+ }
+
+ /* Return the elapsed time since the base time. */
+
+/* Macintosh, VMS, and PC have difftime. */
+#if MAC | VMS | PC
+ if (base == -1)
+ return 0.0;
+ else
+ return (float) difftime(time(NULL),base);
+#endif
+
+/* Sun and NeXT do not have difftime. */
+#if SUN | NEXT
+ return 0.0;
+#endif
+
+/* The timing functions are only used to generate performance statistics and */
+/* are not critical to FunnelWeb. There is not much harm in returning 0.0. */
+}
+
+/******************************************************************************/
+
+EXPORT float tim_cpu()
+{
+ clock_t t=clock();
+
+/* Make sure that we have a definition for CLOCKS_PER_SEC. */
+#ifndef CLOCKS_PER_SEC
+#ifdef CLK_TCK
+#define CLOCKS_PER_SEC CLK_TCK
+#else
+/* Assume one million ticks per second. */
+#define CLOCKS_PER_SEC (1000000L)
+#endif
+#endif
+
+ /* The clock() function returns -1 if the CPU time is not available. */
+ /* Otherwise it returns the number of "clocks" since power-up. */
+ if (t == -1)
+ return 0.0;
+ else
+ return ((float) t) / ((float) CLOCKS_PER_SEC);
+}
+
+/******************************************************************************/
+/* End of MACHIN.C */
+/******************************************************************************/
+
+
+
+
+
+
+
+ ___ ___ __ _
+
+|__ |\ | \ / | |_) / \ |\ | |__|
+
+|___ | \| \/ _|_ | \ \_/ | \| . | |
+
+
+
+
+/*##############################################################################
+
+FUNNNELWEB COPYRIGHT
+====================
+FunnelWeb is a literate-programming macro preprocessor.
+
+Copyright (C) 1992 Ross N. Williams.
+
+ Ross N. Williams
+ ross@spam.adelaide.edu.au
+ 16 Lerwick Avenue, Hazelwood Park 5066, Australia.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of Version 2 of the GNU General Public License as
+published by the Free Software Foundation.
+
+This program is distributed WITHOUT ANY WARRANTY; without even the implied
+warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+See Version 2 of the GNU General Public License for more details.
+
+You should have received a copy of Version 2 of the GNU General Public
+License along with this program. If not, you can FTP the license from
+prep.ai.mit.edu/pub/gnu/COPYING-2 or write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Section 2a of the license requires that all changes to this file be
+recorded prominently in this file. Please record all changes here.
+
+Programmers:
+ RNW Ross N. Williams ross@spam.adelaide.edu.au
+
+Changes:
+ 07-May-1992 RNW Program prepared for release under GNU GPL V2.
+
+##############################################################################*/
+
+
+/******************************************************************************/
+/* ENVIRON.H */
+/******************************************************************************/
+/* */
+/* WARNING: DO NOT ADD ANY PROGRAM-DEPENDENT DEFINITIONS. */
+/* */
+/* This header file environ.h contains definitions and objects whose values */
+/* depends directly on the compilation and execution environment, but are */
+/* otherwise independent of any particular computer program. */
+/* */
+/* This is one of two machine-dependent, program-independent modules. The */
+/* other module is machin (machin.h,machin.c). This "environ" module contains */
+/* definitions and objects that are considered essential. The "machin" module */
+/* contains less essential definitions. Motivation for the division came from */
+/* the fact that style.h (used by almost every module) includes environ.h */
+/* (this file), and from the need for the stuff in style.h by some */
+/* environment-dependent definitions. */
+/* */
+/* There seems to be two ways to organize a module such as this one. The */
+/* first is to have a different version of this module for each target */
+/* environment. The second is to have a single file that uses #defines and */
+/* #ifs to select between code for each target environment. I have chosen the */
+/* latter method as this allows many different environments to share the same */
+/* definitions. */
+/* */
+/******************************************************************************/
+
+/* Ensure that the body of this header file is included at most once. */
+#ifndef DONE_ENVIRON
+#define DONE_ENVIRON
+
+/******************************************************************************/
+
+/* Select An Environment */
+/* --------------------- */
+/* Choose the environment in which the program will be compiled and executed. */
+/* This may be the only change you need to make to get FunnelWeb to compile. */
+/* */
+/* If your exact environment is not listed, try one that is close. */
+/* If problems arise, an attempt should be made to solve them */
+/* without creating a new environment definition. However, if this is not */
+/* possible, define a new environment below and "implement" it by going */
+/* through environ.h and machin.h and machin.c and adding appropriate */
+/* definitions. */
+/* */
+/* The following table lists real/defined environment pairs under which */
+/* FunnelWeb is known to compile cleanly. */
+/* */
+/* Symbol = Processor Machine OS Compiler */
+/* ------ --------- ------- -- -------- */
+/* MAC = 68000 Macintosh-SE Mac THINK-C V4.0.5 */
+/* SUN = SPARC SUN ELC Unix(SunOS) GNUC */
+/* VMS = VAX VAXStation VMS VAXC */
+/* PC = 386 IBM PC Clone MSDOS5.0 Borland C++ */
+/* NEXT = 68000 NeXTstation Unix(BSD4.3) GNUC */
+/* */
+/* Set exactly one of the following environments to 1, the others to 0. */
+
+#define MAC 0
+#define SUN 0
+#define VMS 0
+#define PC 0
+#define NEXT 1
+
+/* Ensure that exactly one environment has been selected. */
+#if MAC+SUN+VMS+PC+NEXT != 1
+ #error Error: You must choose exactly one machine in ENVIRON.H.
+#endif
+
+/******************************************************************************/
+
+/* Establish Presence or Absence of __STDC__ */
+/* ----------------------------------------- */
+/* The __STDC__ symbol is very useful for determining if the compiler is */
+/* ANSI. However, some "nearly ANSI" compilers don't set this symbol, and */
+/* experience shows that things turn out better if it is set. */
+/* This section decides if __STDC__ should be defined. */
+
+/* The Macintosh THINK C compiler seems to be ANSI standard but, strangely */
+/* does not define the standard preprocessor symbol __STDC__ that indicates */
+/* this. Instead it defines THINK_C. Here, we execute the link manually. */
+/* For more information see the THINK C User's Manual, Chapter 57: "Language */
+/* Reference", Section 12.10, p.442. */
+#ifdef THINK_C
+#define __STDC__ 1
+#endif
+
+/* The problem seems to exist with VAX C too. */
+#if VMS
+#define __STDC__ 1
+#endif
+
+/******************************************************************************/
+
+/* Switch From Definedness to Boolean Symbols */
+/* ------------------------------------------ */
+/* Use of the definedness of a preprocessor symbol to detect a condition is */
+/* convenient if it is desired that only one condition be tested at a time. */
+/* However, if we want to OR conditions, it is more convenient to use defined */
+/* symbols that are either 0 or 1. This section contains ifdefs that do this. */
+
+#ifdef __STDC__
+#define STDC 1
+#else
+#define STDC 0
+#endif
+
+/* Note: If THINK_C is predefined, it is predefined to be 1. */
+#ifndef THINK_C
+#define THINK_C 0
+#endif
+
+/******************************************************************************/
+
+/* Void */
+/* ---- */
+/* Define void if necessary and define pointer to void. */
+/* This idea from the book "Portable C", p.41. */
+/* If necessary, add a boolean condition to cover your environment. */
+/* Note: The "| SUN" is a last minute desperate hack. */
+#if STDC | SUN
+typedef void *p_void;
+#else
+typedef int void;
+typedef char *p_void;
+#endif
+
+/* The following function is here solely to act as a first tripping point for */
+/* environments with no "void" so that the users trying to port this code */
+/* will look here first instead of starting to delete voids in the program. */
+extern void test_void();
+
+/******************************************************************************/
+
+/* Const */
+/* ----- */
+/* It's useful to be able to specify that certain objects are constants. */
+/* Unfortunately, the "const" construct is only available in ANSI C and so we */
+/* have to have a macro so as to cope with non-ANSI compilers. */
+/* Note: THINK-C is nearly ANSI, but does not support "const". */
+#if STDC & !THINK_C
+#define CONST const
+#else
+#define CONST
+#endif
+
+/******************************************************************************/
+
+/* Prototypes */
+/* ---------- */
+/* Define a macro to wrap around prototype parameter lists so as to support */
+/* compilers with and without prototypes. */
+/* This idea came from the book "Portable C", S3.1, p.32. */
+#if STDC
+#define P_(A) A
+#else
+#define P_(A) ()
+#endif
+
+/******************************************************************************/
+
+/* Structure Assignments */
+/* --------------------- */
+/* Structure assignments are not supported on some of the older compilers and */
+/* so we use a macro to perform such operations. */
+/* This idea came from the book "Portable C", S8.2.2, p.184. */
+#if STDC
+#define ASSIGN(a,b) ((a)=(b))
+#else
+#define ASSIGN(a,b) (memcpy((char *)&(a),(char *)&(b),sizeof(a)))
+#endif
+
+/******************************************************************************/
+
+/* VMS EXIT STATUS */
+/* --------------- */
+/* The VAX C compiler I used doesn't seem to be ANSI. This means that the */
+/* exit symbols aren't set up properly. Furthermore, the sensible defaults */
+/* in the style.h file don't work for VMS. The upshot is that we have to do */
+/* a special case. Note: The top bit set in a VMS exit status means suppress */
+/* diagnostic message. Even status means failure. Odd means success. */
+#if VMS
+#undef EXIT_SUCCESS
+#undef EXIT_FAILURE
+#define EXIT_SUCCESS 1
+#define EXIT_FAILURE (0x10000002)
+#endif
+
+/******************************************************************************/
+
+/* For #ifndef preventing multiple inclusion of the body of this header file. */
+#endif
+
+/******************************************************************************/
+/* End of ENVIRON.H */
+/******************************************************************************/
diff --git a/web/funnelweb/0stoppress/fw_p_pc.mes b/web/funnelweb/0stoppress/fw_p_pc.mes
new file mode 100644
index 0000000000..9a9abcef99
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_p_pc.mes
@@ -0,0 +1,52 @@
+--<Guru>--
+D=09-Oct-1992
+A=Ross Williams
+S=Tips on compiling FunnelWeb on MSDOS
+K=funnelweb porting compiling msdos ms-dos ms dos tips hints
+--<Guru>--
+TIPS ON COMPILING FUNNELWEB UNDER MSDOS
+=======================================
+In the lead up to the release of FunnelWeb 3.0, the PC that had been
+available for me to use to test the port of FW to the PC became
+unavailable. Because of this, I took the shortcut of not compiling and
+testing the final released version of the code (V3.0) on a PC!!! Worse
+still, I did not provide any notes on what compiler flags should be
+used.
+
+As a result, those who have attempted to compile FunnelWeb on PCs ran
+into a few difficulties. As a temporary remedy, I have included in
+this archive an executable version of FunnelWeb for the PC (obtained
+from one of the people who got it going on one). The file is
+"fw_p_pc.exe".
+
+If you still want to compile FunnelWeb on the PC, don't give up hope!
+Some of those people overcame the difficulties and got FW running on
+their PCs after which it passed the regression testing completely. So
+if you are trying to get FunnelWeb to work on a PC, don't give up!
+Success is just around the corner. Here are the notes I have collected
+to date:
+
+* Most people who compile FunnelWeb on a PC seem to be using Borland
+C++. If you are using this compiler, you need to do the following:
+
+ - Insert "#define STDC 1" in environ.h.
+ - Compile with the HUGE memory model.
+ - Turn on the ANSI option.
+ - Turn on the BorlandC++ option.
+ - Increase the run time stack size from 4K (default) to 32K
+ by inserting the line:
+
+ extern unsigned _stklen = 32768;
+
+ just above the minimain() declaration. Refer to page 608
+ of the borland library reference manual (V3.00).
+
+* You may run into troubles with MSDOS with the regression
+test input file "sc13a" which is a zero length file. It is
+just a zero length file so if you run into difficulties,
+create it any way you like.
+
+Ross Williams
+ross@spam.adelaide.edu.au
+
+--<End of Document>--
diff --git a/web/funnelweb/0stoppress/fw_refs.mes b/web/funnelweb/0stoppress/fw_refs.mes
new file mode 100644
index 0000000000..3f76571516
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_refs.mes
@@ -0,0 +1,31 @@
+--<Guru>--
+D=15-Oct-1992
+A=Ross Williams
+S=References to other Literate Programming Work
+K=literate programming funnelweb references other work bibliography
+--<Guru>--
+REFERENCES TO LITERATE PROGRAMMING
+==================================
+
+09-Jun-1992: Professor Bart Childs (bart@cs.tamu.edu) reports that he and
+his associates are involved with literate programming. He reports:
+
+ "My main interests in Literate Programming are using it in
+ Scientific Computing, Software Engineering, and expanding its
+ ``tool base''. My most recent Ph.D. student's thesis was
+ on an integrated used of symbolic computing with literate
+ programming to do a restricted form of `automatic programming.'"
+
+ I have just finished another semester and taught a ``special
+ topics'' course in Literate Programming. We did a few more
+ tools and as soon as I can get them in a coherently
+ documented whole, I will be putting them out for public
+ consumption too.
+
+ We try to keep the current versions of our work on
+ csseq.cs.tamu.edu (128.194.2.20) for anonymous
+ ftp. Most of our usage lately has been under John Krommes'
+ FWEB which supports C, C++, Fortran, Fortran 90, Ratfor,
+ and TeX (outputs a .sty file of TeX macros)."
+
+--<End of document>--
diff --git a/web/funnelweb/0stoppress/fw_sugg.mes b/web/funnelweb/0stoppress/fw_sugg.mes
new file mode 100644
index 0000000000..0af94a375d
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_sugg.mes
@@ -0,0 +1,171 @@
+--<Guru>--
+D=16-Oct-1992
+A=Ross Williams
+S=Suggestions for improving FunnelWeb
+K=funnelweb funnel web suggestions improvement
+--<Guru>--
+SUGGESTIONS FOR IMPROVING FUNNELWEB
+===================================
+This file records suggestions that users of FunnelWeb have
+made for improving FunnelWeb.
+
+Because I received so many suggestions, it would take too long to
+request permission from each person to quote their email here. As a
+result, I have quoted anonymously or summarized instead.
+
+The following list of suggestions does not constitute any sort
+of promise of features to come. It is merely an indication of what
+various users would like.
+
+The number in square brackets after each suggestion indicates the
+number of users who have suggested the feature. Also:
+
+ S: Stands for suggestion.
+ R: Stands for my reply (if any).
+
+A look at this list indicates that future work on FunnelWeb should
+mainly be directed towards improving its typesetting facilities.
+
+Ross Williams
+ross@spam.adelaide.edu.au
+
+PS: Part of the reason for FunnelWeb being weak on typesetting is that
+when I was writing FunnelWeb I knew that once it was released, I would
+be committed to whatever input syntax I defined, and so I concentrated
+on getting that right. Back-end typesetter drivers and other such
+stuff can always be added later.
+
+
+General
+-------
+S: Integrate FW into the Borland C++ development environment. [1]
+S: Add a feature for updating FW source files after the product
+ files have been modified. [1]
+
+Documentation
+-------------
+S: Improve the typesetting of the index. [1]
+S: Add more entries to the index. [1]
+S: Add a quick reference guide. [1]
+
+Scanner
+-------
+S: Fix the bug that makes FunnelWeb bomb on excceptionally long input
+ lines. [1]
+S: If a closing @} occurs at the start of a line, eliminate the
+ preceeding end of line. [1]
+S: Allow TABS [1].
+S: The syntax is ugly. Redesign it. [2]
+ R: The syntax IS ugly, but this is a consequence of its simplicity
+ which I feel is more important. In FunnelWeb, the special
+ character reigns supreme and this makes everything simple.
+
+Parser
+------
+S: Add named parameters for macros. [1]
+S: Add conditionals. [1]
+S: Add a feature that enables the user to specify that all the
+ macros called within a particular macros be defined in the order
+ in which they are called. [1]
+
+Tangle
+------
+S: Allow line-oriented substitution and so on rather than stream
+ oriented. [1]
+
+Weave
+-----
+S: Don't typeset non-leaf macros. This will avoid clutter. [1]
+S: Teach FW C++ so it can typeset it nicely. [1]
+S: Allow both FW text and TeX in the same document (two modes). [1]
+S: Include greater support for typesetting a program as a book. [1]
+ "What we need is a facility for TANGLING small WEB files
+ into small source files, but WEAVING those same small
+ WEB files into a single large documentation file, without
+ the seams becoming apparent."
+S: Add a new format: Microsoft Rich Text Format (RTF). [2]
+S: Write a program to convert an RTF file into FunnelWeb source.
+ Then people can edit programs in MSWord and run them through
+ FunnelWeb. [1]
+S: Detailed notes on indexing from one user: [1]
+S: Add the ability to include typeset comments within program text. [2]
+ R: The @[..@] syntax has been reserved for this.
+S: Add a new format: LaTeX. [1]
+S: Add a new format: Plain ASCII text. [1]
+S: Add a GENERIC language typesetting facility: [1]
+
+ "Have you seen the program 'vgrind' (for TeX) or 'psgrind' (for
+ PostScript)? It contains a termcap-like database of programming
+ language features, e.g. format of a label, format of a
+ producedure/function, keyword listings, character string quoting
+ rules, etc. Perhaps this would be useful for FW?"
+
+S: Automatically generate an index. [1]
+S: Allow @" and @" in documentation to typeset double quotes properly. [1]
+
+MORE DETAILED COMMENTS
+======================
+
+Weave
+-----
+ "The ability to generate a cross reference of identifiers
+ (variables and functions) is essential.
+
+ Constants are generally defined only in 1 place
+ and so a cross reference to the definition
+ macro is useful.
+
+ Variables are generally declared in 1 place but
+ refered to and defined in multiple places.
+ A cross reference to the declaration site
+ is generally not useful.
+
+ A cross reference to the site of use is
+ confusing, since there may be many, equally
+ important sites where the variable is assigned
+ a value.
+
+ functions are generally unique and so a cross reference
+ to the site of definition (or declaration in
+ the absense of a definition) is useful.
+
+ In FWEB (which I have used extensively recently) each instance
+ of use of an identifier contains a subscript which points
+ to the site of definition of the identifier (I think this
+ is what you refer to in the documents as a feature of the
+ original WEB.) The fact that locating identifiers requires
+ knowledge of the programming language is true."
+
+Documentation
+-------------
+ Page 34, section 1.7.2, paragraph 2, last sentence:
+ "free text be default" should be "free text by default".
+
+ Page 34, section 1.7.3, paragraph 1, 1st sentence:
+ "divide and conquor" should be "divide and conquer"
+
+ Page 35, section 1.73, paragraph 2 on page 35:
+ "section heading at level n cannot....at level (n-1) or less."
+ I think this should be:
+ "section heading at level n cannot.. at less than level (n-1)"
+ Otherwise you are saying that level C cannot occur at B or less.
+
+ Page 50, section 2.11, last paragraph, line 10 of para:
+ "excessibly" should be "excessively"
+
+ In the example on p. 21, "... the string ``Hello World''" looks like a TeX
+ dependent hangover.
+
+ The caption under Fig. 4, p.111 came out badly spaced on our system.
+
+ Isn't it `holistic' rather than `wholistic?'
+
+ There is often a need to have version dependent documentation as well
+ as version dependent code. It would be nice if there was a special
+ kind of macro that could run the output to a file through the
+ typesetter, i.e., generate TeX files. Meanwhile, you can get some
+ interesting effects by letting FunnelWeb generate .fw files! You
+ might like to mention this exciting possibility in V2 of the user
+ manual.
+
+--<End of Document>--
diff --git a/web/funnelweb/0stoppress/fw_tabs.mes b/web/funnelweb/0stoppress/fw_tabs.mes
new file mode 100644
index 0000000000..a14fea60d9
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_tabs.mes
@@ -0,0 +1,44 @@
+--<Guru>--
+D=09-Jul-92
+A=Ross Williams
+S=FunnelWeb and TAB characters (ASCII 9)
+K=funnelweb tab characters spacing layout
+--<Guru>--
+FUNNELWEB AND TAB CHARACTERS (ASCII 9)
+======================================
+One feature of FunnelWeb that has annoyed a lot of users is its
+"attitude" towards TAB characters which it flags as errors. Perhaps in
+the future something can be done about this "problem" with FunnelWeb.
+Meanwhile, the following program to remove tabs has been kindly
+donated by John Skaller.
+
+/* UNTAB Program */
+/* ============= */
+/* Author : John Skaller (maxtal@extro.ucc.su.oz.au) */
+/* Organization : MAXTAL P/L 6 Mackay St ASHFIELD 2131. */
+/* Usage : untab 2 <infile >outfile */
+/* Status : Public domain. */
+
+#include <stdio.h>
+
+int main(int argv, char **argc)
+{
+ int n=2;
+ if(argv==2)sscanf(argc[1],"%d",&n);
+ int ch=getchar();
+ int column=0;
+ while(ch!=-1){
+ if(ch=='\n'){putchar('\n'); column=0;}
+ else if(ch==9){
+ putchar(' '); column++;
+ while(column%8){putchar(' '); column++;}
+ }
+ else { putchar(ch); column++;}
+ ch=getchar();
+ }
+}
+
+PS: I would like to see a lot more error checking in this
+program. Does anyone feel like adding this?
+
+--<End of Document>--
diff --git a/web/funnelweb/0stoppress/fw_testim.mes b/web/funnelweb/0stoppress/fw_testim.mes
new file mode 100644
index 0000000000..8dafe56add
--- /dev/null
+++ b/web/funnelweb/0stoppress/fw_testim.mes
@@ -0,0 +1,79 @@
+--<Guru>--
+D=15-Oct-1992
+A=Ross Williams
+S=Customer testimonials for FunnelWeb.
+--<Guru>--
+FUNNELWEB CUSTOMER TESTIMONIALS
+===============================
+This file records some of the praise that FunnelWeb has received.
+
+
+"I've been fooling around with FunnelWeb for about three days now, and
+I'm convinced that this is one of the most powerful tools I have
+encountered in almost two decades of programming. I'm in the process
+of converting several thousand lines of very repetitive code to
+FunnelWeb macros; I can't believe how EASY it is, and how GOOD the
+resulting source code and documentation are. Thank you for this tool!"
+
+ -- Jerry Callen (jcallen@world.std.com)
+ Runtime Engineer,
+ Thinking Machines Corporation,
+ Boston, USA.
+ 22-Jun-1992 (Authorized to be quoted 16-Oct-1992).
+
+
+"I really like the 'quality' of the FW distribution. Well done Ross!
+I cannot call it 'professional quality' because much of the
+'professional' software I have seen has been VERY POOR. Your package
+is better than 'professional', but I don't know of an appropriate
+adjective."
+
+ -- George Vokalek (gvokalek@augean.eleceng.adelaide.edu.au).
+ Hardware Engineer,
+ University of Adelaide,
+ South Australia, Australia.
+ 14-Jun-1992 (Authorized to be quoted 18-Oct-1992).
+
+
+"I have used FunnelWeb on two ASSEMBLER modules. Written for a
+microcontroller with NO DEBUGGING POSSIBLE, so correctness and
+emphasis on getting it right was important.
+
+I found it forced me to reorganise the code a bit, to get my concepts
+straight. By the time I did this, and documented what I was doing,
+[including a C version of an algorithm in one module] It looked good,
+and worked in a few passes.
+
+I am VERY happy with the results. ...
+
+And, I got a very nice listing to present the customer!!"
+
+ -- John Skaller (maxtal@extro.ucc.su.oz.au)
+ Maxtal Pty Ltd,
+ Sydney, Australia.
+ 09-Jul-1992 (Authorized to be quoted 17-Oct-1992).
+
+
+"...the manual is about 10 times better than any other user manual
+I've ever read."
+
+ -- Barry Dwyer (dwyer@cs.adelaide.edu.au)
+ Senior Lecturer, Department of Computer Science,
+ The University of Adelaide.
+ Australia.
+ 17-Jun-1992 (Authorized to be quoted 21-Oct-1992).
+
+
+"I've done the regression testing, and it worked without a hitch.
+You've done a nice job making the sucker portable. My system is a mono
+NeXTstation running NeXTSTEP 2.1 with 16 MB of RAM."
+
+ --John Dawson (john@arissoft.com)
+ Software Developer,
+ Arissoft Development Corporation,
+ Texas, USA.
+ 11-Jun-1992. (Authorized to be quoted 17-Oct-1992).
+
+--<End of Document>--
+
+
diff --git a/web/funnelweb/0veracty.vrf b/web/funnelweb/0veracty.vrf
new file mode 100644
index 0000000000..931a3ac3ef
--- /dev/null
+++ b/web/funnelweb/0veracty.vrf
@@ -0,0 +1,184 @@
++--------------------------------------------------------------------------+
+|V E R A C I T Y R E P O R T |
+| V E R A C I T Y R E P O R T |
+| V E R A C I T Y R E P O R T |
+| V E R A C I T Y R E P O R T |
+| V E R A C I T Y R E P O R T |
+| V E R A C I T Y R E P O R T |
+| V E R A C I T Y R E P O R T |
+| V E R A C I T Y R E P O R T |
+| V E R A C I T Y R E P O R T |
+| V E R A C I T Y R E P O R T |
+| V E R A C I T Y R E P O R T |
+| V E R A C I T Y R E P O R T |
++--------------------------------------------------------------------------+
+| |
+| This report file was generated by the VERACITY data integrity product. |
+| It consists of one or more individual reports, concatenated together. |
+| Each report describes a single execution of the Veracity SNAPSHOT or |
+| CHECK command. For more information type VERACITY HELP or contact: |
+| |
+| Company : Rocksoft Pty Ltd |
+| Phone : +61 8 379-9217 |
+| Fax : +61 8 379-4766 |
+| OZ Free : 1-800-816-217 |
+| US Free : 1-800-898-9975 |
+| Email : rocksoft@rocksoft.com |
+| FTP : ftp://ftp.rocksoft.com/pub/rocksoft/ |
+| WWW : http://www.rocksoft.com/~ross |
+| Postal : PO Box 69, Burnside 5066, Australia. |
+| Address : 16 Lerwick Avenue, Hazelwood Park 5066, Australia. |
+| ACN : 008-280-153 (Australian Company Number). |
+| Date : This information is current as at January 1995. |
+| VERACITY and ROCKSOFT are trademarks of Rocksoft Pty Ltd. |
+| |
+| Note: The most recent report appears at the END of this report file. |
+| |
++--------------------------------------------------------------------------+
+
+
+
+
+
+
+
+
+
+
+
+=========================<Start of SNAPSHOT Report>=========================
+
+Started 30-Jan-1996 13:07.44.
+
+Veracity V1.1 (05-Feb-1995)
+---------------------------
+Copyright (C) Trustus Pty Ltd 1992-1995. All rights reserved.
+Licensee name = General.
+Licensee address = Planet Rocksoft.
+Licensee ID = None.
+
+SNAPSHOT Command Arguments
+--------------------------
+Target (tree) = "/archive/pub/funnelweb/".
+Clipfile = "_default".
+Snapfile = "/archive/pub/funnelweb/0veracty.vsf".
+Backfile = "/archive/pub/funnelweb/0veracty.vbf".
+Report file = "/archive/pub/funnelweb/0veracty.vrf".
+Tempfile = "/archive/pub/funnelweb/0veracty.v0f".
+Password = No.
+Verbosity = 1 (trace directories).
+Errors to screen = Yes (limit of 100).
+Signature format = Base 64.
+
+
+
+Clipfile is "_default" (a predefined clipfile).
+---+----------------------------------------------------------------------------
+001| =====(BeginClipFile)=====
+002|
+003| [Predefined Clipfile DEFAULT ]
+004| [--------------------------- ]
+005| [This is the default clipfile, which is the one used if you do not ]
+006| [explicitly specify a clipfile using the +C command line argument. ]
+007| [This clipfile instructs Veracity to watch over the entire target ]
+008| [directory tree using the US National Institute of Standards Secure ]
+009| [Hash Algorithm Issue One (NIST SHA-1). This provides excellent ]
+010| [detection of accidental and malicious corruptions. The SHA-1 digests ]
+011| [are calculated from the B (binary) stream of both binary and text ]
+012| [files, providing both simplicity and security for most applications. ]
+013| [However, this clipfile is not suitable for some file transfers: ]
+014| [WARNING: DO NOT USE THIS CLIPFILE TO VERIFY TRANSFERS TO A DIFFERENT ]
+015| [OPERATING SYSTEM UNLESS YOU ARE SURE THAT ALL THE FILES ARE BINARY. ]
+016| [(Use the predefined clipfile TRANSFER (or an A.* clipfile) instead). ]
+017| [THIS DEFAULT CLIPFILE IS RECOMMENDED FOR MOST VERACITY APPLICATIONS. ]
+018|
+019| "#*" -*-> +create +delete
+020| "#*" -f-> +B.sha1
+021|
+022| [Ignore all Veracity files in the root of the target tree.]
+023| "/&0veracty.v%f*" -f-> -all
+024|
+025| =====(EndClipFile)=====
+ | <EOF>
+---+----------------------------------------------------------------------------
+
+
+Snapshot successfully taken.
+
+SUCCESS: No diagnostics.
+
+Completed 30-Jan-1996 13:08.27.
+
+==========================<End of SNAPSHOT Report>==========================
+
+
+
+
+
+
+
+
+
+
+==========================<Start of CHECK Report>===========================
+
+Started 30-Jan-1996 16:45.02.
+
+Veracity V1.1 (05-Feb-1995)
+---------------------------
+Copyright (C) Trustus Pty Ltd 1992-1995. All rights reserved.
+Licensee name = Internode Systems Pty Ltd.
+Licensee address = 31 York Street, Adelaide SA 5000, Australia.
+Licensee ID = None.
+
+CHECK Command Arguments
+-----------------------
+Old tree (snapfile) = "/web/ftp/clients/rocksoft/funnelweb/0veracty.vsf".
+New tree (realtree) = "/web/ftp/clients/rocksoft/funnelweb/".
+Clipfile = "_old".
+Report file = "/web/ftp/clients/rocksoft/funnelweb/0veracty.vrf".
+Old tree password = No.
+New tree password = No.
+Verbosity = 0 (no tracing).
+Fuzzy matching = Off.
+Errors to screen = Yes (limit of 100).
+
+
+
+Clipfile is "_old" (clipfile from the OLD snapshot file).
+---+----------------------------------------------------------------------------
+001| =====(BeginClipFile)=====
+002|
+003| [Predefined Clipfile DEFAULT ]
+004| [--------------------------- ]
+005| [This is the default clipfile, which is the one used if you do not ]
+006| [explicitly specify a clipfile using the +C command line argument. ]
+007| [This clipfile instructs Veracity to watch over the entire target ]
+008| [directory tree using the US National Institute of Standards Secure ]
+009| [Hash Algorithm Issue One (NIST SHA-1). This provides excellent ]
+010| [detection of accidental and malicious corruptions. The SHA-1 digests ]
+011| [are calculated from the B (binary) stream of both binary and text ]
+012| [files, providing both simplicity and security for most applications. ]
+013| [However, this clipfile is not suitable for some file transfers: ]
+014| [WARNING: DO NOT USE THIS CLIPFILE TO VERIFY TRANSFERS TO A DIFFERENT ]
+015| [OPERATING SYSTEM UNLESS YOU ARE SURE THAT ALL THE FILES ARE BINARY. ]
+016| [(Use the predefined clipfile TRANSFER (or an A.* clipfile) instead). ]
+017| [THIS DEFAULT CLIPFILE IS RECOMMENDED FOR MOST VERACITY APPLICATIONS. ]
+018|
+019| "#*" -*-> +create +delete
+020| "#*" -f-> +B.sha1
+021|
+022| [Ignore all Veracity files in the root of the target tree.]
+023| "/&0veracty.v%f*" -f-> -all
+024|
+025| =====(EndClipFile)=====
+ | <EOF>
+---+----------------------------------------------------------------------------
+
+SUCCESS: No changes detected.
+
+SUCCESS: No diagnostics.
+
+Completed 30-Jan-1996 16:45.54.
+
+===========================<End of CHECK Report>============================
diff --git a/web/funnelweb/0veracty.vsf b/web/funnelweb/0veracty.vsf
new file mode 100644
index 0000000000..2aa25bfce7
--- /dev/null
+++ b/web/funnelweb/0veracty.vsf
@@ -0,0 +1,1269 @@
++--------------------------------------------------------------------------+
+IV E R A C I T Y S N A P S H O T I
+I V E R A C I T Y S N A P S H O T I
+I V E R A C I T Y S N A P S H O T I
+I V E R A C I T Y S N A P S H O T I
+I V E R A C I T Y S N A P S H O T I
+I V E R A C I T Y S N A P S H O T I
+I V E R A C I T Y S N A P S H O T I
+I V E R A C I T Y S N A P S H O T I
+I V E R A C I T Y S N A P S H O T I
+I V E R A C I T Y S N A P S H O T I
+I V E R A C I T Y S N A P S H O T I
+I V E R A C I T Y S N A P S H O T I
++--------------------------------------------------------------------------+
+I I
+I This snapshot file was generated by the VERACITY data integrity product I
+I and contains information about a directory tree, such as the structure I
+I of the tree and the checksums of its files. To use Veracity to check a I
+I directory tree against this snapshot file, give the command: I
+I I
+I veracity check directory-spec this-file-spec I
+I I
+I For more information type VERACITY HELP or contact: I
+I I
+I Company : Rocksoft Pty Ltd I
+I Phone : +61 8 379-9217 I
+I Fax : +61 8 379-4766 I
+I OZ Free : 1-800-816-217 I
+I US Free : 1-800-898-9975 I
+I Email : rocksoftATrocksoft.com (AT=ASCII 64 decimal) I
+I FTP : ftp://ftp.rocksoft.com/pub/rocksoft/ I
+I WWW : http://www.rocksoft.com/TLross (TL=ASCII 126 decimal) I
+I Postal : PO Box 69, Burnside 5066, Australia. I
+I Address : 16 Lerwick Avenue, Hazelwood Park 5066, Australia. I
+I ACN : 008-280-153 (Australian Company Number). I
+I Date : This information is current as at January 1995. I
+I VERACITY and ROCKSOFT are trademarks of Rocksoft Pty Ltd. I
+I I
+I NOTE: Veracity ignores any text before the opening =====(SNAP... marker I
+I line, and after the closing -----(SNAP... marker line at the end of the I
+I snapshot. This means that you can delete this header and add any text of I
+I your own. Similarly, electronic mail messages containing snapshots can I
+I be used directly without having to delete extraneous text first. I
+I I
++--------------------------------------------------------------------------+
+
+?S=====(SNAPSHOT)=====
+
+(
+ (Version=1)
+ (Salt='zh2NMbTrXmgjTSVtIgbrVog)
+ (DirectoryPith=Name)
+ (Clipfile='3D'3D'3D'3D'3D'28BeginClipFile'29'3D'3D'3D'3D'3D'0A'0A'5BPredefi
+ ned'.Clipfile'.DEFAULT'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'
+ .'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'5D'0A'5B---------------------------'.'.'.'.
+ '.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'
+ .'5D'0A'5BThis'.is'.the'.default'.clipfile,'.which'.is'.the'.one'.used'.if'
+ .you'.do'.not'.'.'.'.'5D'0A'5Bexplicitly'.specify'.a'.clipfile'.using'.the'
+ .+C'.command'.line'.argument.'.'.'.'.'5D'0A'5BThis'.clipfile'.instructs'.Ve
+ racity'.to'.watch'.over'.the'.entire'.target'.'.'.'.'.'5D'0A'5Bdirectory'.t
+ ree'.using'.the'.US'.National'.Institute'.of'.Standards'.Secure'.'.'.'5D'0A
+ '5BHash'.Algorithm'.Issue'.One'.'28NIST'.SHA-1'29.'.This'.provides'.excelle
+ nt'.'.'.'.'.'.'.'5D'0A'5Bdetection'.of'.accidental'.and'.malicious'.corrupt
+ ions.'.The'.SHA-1'.digests'.'5D'0A'5Bare'.calculated'.from'.the'.B'.'28bina
+ ry'29'.stream'.of'.both'.binary'.and'.text'.'.'.'.'5D'0A'5Bfiles,'.providin
+ g'.both'.simplicity'.and'.security'.for'.most'.applications.'.'5D'0A'5BHowe
+ ver,'.this'.clipfile'.is'.not'.suitable'.for'.some'.file'.transfers:'.'.'.'
+ .'.'.'5D'0A'5BWARNING:'.DO'.NOT'.USE'.THIS'.CLIPFILE'.TO'.VERIFY'.TRANSFERS
+ '.TO'.A'.DIFFERENT'.'5D'0A'5BOPERATING'.SYSTEM'.UNLESS'.YOU'.ARE'.SURE'.THA
+ T'.ALL'.THE'.FILES'.ARE'.BINARY.'.'.'5D'0A'5B'28Use'.the'.predefined'.clipf
+ ile'.TRANSFER'.'28or'.an'.A.'+'.clipfile'29'.instead'29.'.'5D'0A'5BTHIS'.DE
+ FAULT'.CLIPFILE'.IS'.RECOMMENDED'.FOR'.MOST'.VERACITY'.APPLICATIONS.'.'5D'0
+ A'0A'22'H'+'22'.-'+-'3E'.+create'.+delete'0A'22'H'+'22'.-f-'3E'.+B.sha1'0A'
+ 0A'5BIgnore'.all'.Veracity'.files'.in'.the'.root'.of'.the'.target'.tree.'5D
+ '0A'22/'260veracty.v'25f'+'22'.-f-'3E'.-all'0A'0A'3D'3D'3D'3D'3D'28EndClipF
+ ile'29'3D'3D'3D'3D'3D'0A
+ )
+)
+
+((C.sha1='zPyimKfV3kn+4u7NGT8qJFdJSlI8))
+
+
+?0=====(/)=====
+((Stub=N)(TotalFiles=15)(Dirs=10))
+
+((N=D0stoppress))
+
+((N=Dadmin))
+
+((N=Danswers))
+
+((N=Dexamples))
+
+((N=Dhackman))
+
+((N=Dresults))
+
+((N=Dscripts))
+
+((N=Dsources))
+
+((N=Dtests))
+
+((N=Duserman))
+
+((N=X0readme.txt)
+ (B.sha1='znOo0LUI1qo6NImcbH7LKH0NDf+M))
+
+((N=X0veracty.v0f))
+
+((N=X0veracty.vrf))
+
+((N=Xfunnelweb.tar.README)
+ (B.sha1='zr4GDXeVSLrd2u+NuQ8PUjcoQuro))
+
+((N=Xfunnelweb.tar.Z)
+ (B.sha1='zJ0+OOq8TZASkfNZfvW2O7RElMKM))
+
+
+((C.sha1='zsbBG6Kucf6v7u6sIRCRgDj86py8))
+
+
+
+
+?1=====(/0stoppress/)=====
+((Stub=N)(TotalFiles=19)(Dirs=0))
+
+((N=Xfw'-abandon.mes)
+ (B.sha1='z+ScRYYQ/Z5NvMr9t+DeGIOG6jkQ))
+
+((N=Xfw'-advert.mes)
+ (B.sha1='z0PldFH3G/R0XaDZBazYdQZ2GNPU))
+
+((N=Xfw'-hack'-manual.ps)
+ (B.sha1='zj34njWBDil4qeUNCd+VfPM2T7do))
+
+((N=Xfw'-make.mes)
+ (B.sha1='zUrVaEVZYwmGgQMJCvIlRZ4Yptx8))
+
+((N=Xfw'-manual.ps)
+ (B.sha1='zbLiGMp9r25mzyb17cfAmzfx6/yc))
+
+((N=Xfw'-mlist.mes)
+ (B.sha1='z+WuauxZB/BjfK8xYZgNMrAF4sU8))
+
+((N=Xfw'-mlist'-rules.mes)
+ (B.sha1='zN8jpUb40scdO+4Cec2LNXGowasU))
+
+((N=Xfw'-p'-apollo.mes)
+ (B.sha1='zJD9I6DwRP06dNDOIj91o/TDDUNM))
+
+((N=Xfw'-p'-hp.mes)
+ (B.sha1='zaff1XHDeJUWQvKbDbuvDtaz3pEM))
+
+((N=Xfw'-p'-mpw.mes)
+ (B.sha1='zacWA49fHLqKZqS2FByWT3l7XBmE))
+
+((N=Xfw'-p'-next.mes)
+ (B.sha1='z025Sp4FDxm62vAkqFRl01YnfsiQ))
+
+((N=Xfw'-p'-next'-patch.mes)
+ (B.sha1='zZp5efq2MRYlgEOSJZdRNrWCbzJQ))
+
+((N=Xfw'-p'-pc.exe)
+ (B.sha1='zoeuzLMdrNdgw/emBUPkYhAaA1Zc))
+
+((N=Xfw'-p'-pc.mes)
+ (B.sha1='z+tjE5U3cyn86g2aFTAHVjf3Qr9E))
+
+((N=Xfw'-README.mes)
+ (B.sha1='zWljsyYHClh6Ax9tN8D29UZ5zHhQ))
+
+((N=Xfw'-refs.mes)
+ (B.sha1='zxZprsFbFLASv+w9sf1wyLRxt7UY))
+
+((N=Xfw'-sugg.mes)
+ (B.sha1='zpJJ640FsfOB5LJvGSmFU8aDRzCg))
+
+((N=Xfw'-tabs.mes)
+ (B.sha1='zgn9etYn916UWPxEqyGCM8xHQU20))
+
+((N=Xfw'-testim.mes)
+ (B.sha1='zRxNHrljIAKJfXyZXslbY9MmXflg))
+
+
+((C.sha1='zf8A/VYX9xr6vPdgSfVGYRmeRf88))
+
+
+?1-----(/0stoppress/)-----
+
+
+?1=====(/admin/)=====
+((Stub=N)(TotalFiles=6)(Dirs=0))
+
+((N=X0readme.txt)
+ (B.sha1='zGP8XFFI0dyff21Dfx3EToWg0xjM))
+
+((N=Xad.txt.Z)
+ (B.sha1='zzohFRV7dgbR6j4+VX0i1Vy84P1s))
+
+((N=Xfixeols.fws.Z)
+ (B.sha1='zNWp+uxwod1xZS0HtywU63p06Q+4))
+
+((N=Xgnu2.txt.Z)
+ (B.sha1='z9VvQnCaAxt7/gRkaRBXYxwxpguw))
+
+((N=Xmakescript.Z)
+ (B.sha1='zJdoZJtO1iwu3+dB2UfTkla2Vz/A))
+
+((N=Xvms'-bld.com.Z)
+ (B.sha1='zMgkGJg00XVZSB+l9IHopHjcPN9Y))
+
+
+((C.sha1='ze//mkTeFMV2rGUufho5LfMzKP70))
+
+
+?1-----(/admin/)-----
+
+
+?1=====(/answers/)=====
+((Stub=N)(TotalFiles=129)(Dirs=0))
+
+((N=X0license.txt.Z)
+ (B.sha1='zzwq3qbm7dQ5yVl7z0TkyRWN6epg))
+
+((N=Xan01.lis.Z)
+ (B.sha1='zmdGAfu1WQUmYTsVWEMig7M0uogM))
+
+((N=Xan02.lis.Z)
+ (B.sha1='z6WFj9qVu3QmedadDyZIL7nIltBY))
+
+((N=Xan03.lis.Z)
+ (B.sha1='z7IGiTxZQrkTm19AvI0bJpUfXRXM))
+
+((N=Xan04.lis.Z)
+ (B.sha1='zlwMjbiadiVkKfLxS8PR7HX3qKkA))
+
+((N=Xex01.lis.Z)
+ (B.sha1='zxYEMg3YMs3Ktv2pMyY9gbYeLfyA))
+
+((N=Xex01.out.Z)
+ (B.sha1='zZIpqb//9qgutsjuLr5C2Fo3Razo))
+
+((N=Xex02.lis.Z)
+ (B.sha1='zajCpZQoHfI9rfy/JN3y4ze9AebY))
+
+((N=Xex02.out.Z)
+ (B.sha1='zZIpqb//9qgutsjuLr5C2Fo3Razo))
+
+((N=Xex03.lis.Z)
+ (B.sha1='z1DxlqtMEM5K/swog91JYit2CZ+M))
+
+((N=Xex04.lis.Z)
+ (B.sha1='z4nQvz7dMc9GPbUc1MoEYu2+OdQg))
+
+((N=Xex04.out.Z)
+ (B.sha1='zmyBcOeXxOz6zqM1vnQwJtFH0LuA))
+
+((N=Xex05.lis.Z)
+ (B.sha1='zaOUM+NTSdtyFea21lJ2jcJQHQz8))
+
+((N=Xex05.out.Z)
+ (B.sha1='z7SjhAZsdsxa9GIYCzs17+0qqFTo))
+
+((N=Xex06.lis.Z)
+ (B.sha1='zutjRRRtzl2KPDivyvfvBIj6JLMA))
+
+((N=Xex06.out.Z)
+ (B.sha1='zBrrtVuUVQMZxKLbaW1E8Uezeu4w))
+
+((N=Xex07.lis.Z)
+ (B.sha1='zgntApheGf5y36Hyf2xEQe2eVJY0))
+
+((N=Xex07.out.Z)
+ (B.sha1='zWb2u6ebIGIR5bYmdj2xng642V1I))
+
+((N=Xex08.lis.Z)
+ (B.sha1='zP+nV9gGIo/hCGz3EE4bZ+tZqUEA))
+
+((N=Xex08.out.Z)
+ (B.sha1='z2QC0afqyTPShjPNN/+9MCtGpkPs))
+
+((N=Xex09.lis.Z)
+ (B.sha1='z4MrXW4K54FmRZLluPhHUEIAnmqA))
+
+((N=Xex09.out.Z)
+ (B.sha1='zG7WmIzrpA37mbsc58Tzo6acrl5g))
+
+((N=Xex10.lis.Z)
+ (B.sha1='znw3VqJj2csaY55+m+dbyZGOimic))
+
+((N=Xex10.out.Z)
+ (B.sha1='zBUsCdvwfMu72632Pxtr/U11+Mc8))
+
+((N=Xex11.lis.Z)
+ (B.sha1='zmixsYIDDE4xrWzfyVMWWi2lsKAU))
+
+((N=Xex11.tex.Z)
+ (B.sha1='zXaOxlq5dED2xwY4CHFdgtydm050))
+
+((N=Xex12.lis.Z)
+ (B.sha1='zmixsYIDDE4xrWzfyVMWWi2lsKAU))
+
+((N=Xex12.tex.Z)
+ (B.sha1='z1W3loAAvCuaxZC74XHWNYO2kX3U))
+
+((N=Xex13.lis.Z)
+ (B.sha1='zmixsYIDDE4xrWzfyVMWWi2lsKAU))
+
+((N=Xex13.tex.Z)
+ (B.sha1='zUbqTJ7nG8dnE+AflRPmZQHf9Tow))
+
+((N=Xex14.lis.Z)
+ (B.sha1='zmixsYIDDE4xrWzfyVMWWi2lsKAU))
+
+((N=Xex14.tex.Z)
+ (B.sha1='zqkG34mWYUznd80ne0yyo/xxBnxY))
+
+((N=Xex15.lis.Z)
+ (B.sha1='zmixsYIDDE4xrWzfyVMWWi2lsKAU))
+
+((N=Xex15.tex.Z)
+ (B.sha1='z5Kn7Op4QIMcXM14NVJXi8G/mjkk))
+
+((N=Xex16.lis.Z)
+ (B.sha1='z6YGBQyNcEIiZOPG86E9lHDST7tY))
+
+((N=Xex16.out.Z)
+ (B.sha1='zJOZA9Q4RjFx0cuccpb1FGWgPfVA))
+
+((N=Xex16.tex.Z)
+ (B.sha1='z9+U5pbD/19IKpi5IO3dgnb99mB0))
+
+((N=Xgenerate.lis.Z)
+ (B.sha1='z+JIfOS+5cQ6o5QuEdCaEnf+gPZ4))
+
+((N=Xhi01.lis.Z)
+ (B.sha1='z4vpm/ZBtlWwulnUh+8hbk0yexlQ))
+
+((N=Xhi01.out.Z)
+ (B.sha1='zGVolaxxCkqzUdAc89Ve8ae2XF70))
+
+((N=Xhi02.lis.Z)
+ (B.sha1='zBQLk/QZBIlu9hRtjcYcT99A/EpA))
+
+((N=Xhi02.out.Z)
+ (B.sha1='zI6x9LgtK3YdD19ACP1els9HL1fA))
+
+((N=Xhi03.lis.Z)
+ (B.sha1='zQ15nq+EEmdkQjuROVL3t8HFgzZU))
+
+((N=Xhi03.out.Z)
+ (B.sha1='z7d1ihpMDY6mIHubcbVsAKK5UT/k))
+
+((N=Xhi04.lis.Z)
+ (B.sha1='z3iELS2v1DhK9DdukUKYV3lHweos))
+
+((N=Xhi04.out.Z)
+ (B.sha1='ziIQHdJIQ/ioBzNcuN8LXl/7+TVk))
+
+((N=Xhi05.lis.Z)
+ (B.sha1='zLQJBO/CrCxbicej96u8tCbDZvFI))
+
+((N=Xhi05.out.Z)
+ (B.sha1='zE+/WKpOHtoeUPANGouIOS6Hze0Y))
+
+((N=Xhi06.lis.Z)
+ (B.sha1='zZJqg7ObkZkSY1xN1Aj1+fpGP5TA))
+
+((N=Xhi06a.out.Z)
+ (B.sha1='ziLDGjG4rF9fnBWuelUuSokDJj74))
+
+((N=Xhi06b.out.Z)
+ (B.sha1='zgW2wsCDTNsO2XGqm8LmolpSipMo))
+
+((N=Xhi07.lis.Z)
+ (B.sha1='zx3wTfykWPJsqM7vIWJhf9a51Q3Q))
+
+((N=Xhi07a.out.Z)
+ (B.sha1='zl/0ErhUGclwal3APkCygwmGVnYI))
+
+((N=Xhi07b.out.Z)
+ (B.sha1='zZ+S1Ol7sUD51IDADZNYN+9mVwts))
+
+((N=Xhi08.lis.Z)
+ (B.sha1='zXWN/RJN4q5W7CDu1GApEbhaQEXY))
+
+((N=Xhi08.out.Z)
+ (B.sha1='zDPOmZg+qcT4HoH24uVGrS/hNL1E))
+
+((N=Xhi09.lis.Z)
+ (B.sha1='zyhRcr6UOkmKMQKAR9EiCzV9q/hg))
+
+((N=Xhi09.out.Z)
+ (B.sha1='zh2Ry4dTQo+vcaLyhUxH2U0xvjig))
+
+((N=Xhi10.lis.Z)
+ (B.sha1='zMH+divha76nyVTJuf76aLD605R8))
+
+((N=Xhi10.out.Z)
+ (B.sha1='zRL/JfPnWWyfoHGBGEy/aDbX+CgE))
+
+((N=Xpr01.lis.Z)
+ (B.sha1='zDuRKteQKt3+KlZYbk0gfKSAC8PQ))
+
+((N=Xpr02.lis.Z)
+ (B.sha1='zMpQNPtH5onebs/DqCL8PiWBky+c))
+
+((N=Xpr03.lis.Z)
+ (B.sha1='zgmu3fy07CNBSwjFT/clyLEGMwvg))
+
+((N=Xpr04.lis.Z)
+ (B.sha1='zFsWf4lmAuFJshd0xgYF1Cg7g7FE))
+
+((N=Xpr05.lis.Z)
+ (B.sha1='z7l5RAtG3oY5VTTO8PoeLiq3FGWA))
+
+((N=Xpr06.lis.Z)
+ (B.sha1='ztSuGPcJgtFxTciy1riSVPtkzIXQ))
+
+((N=Xpr07.lis.Z)
+ (B.sha1='z3Pb0x1cEXT0mmnADgQgXhaVsBbY))
+
+((N=Xpr08.lis.Z)
+ (B.sha1='zar3lPQHJLyLHLwSh0awcbTXIIMk))
+
+((N=Xpr09.lis.Z)
+ (B.sha1='zbjxzosgP44rJ3ZuLQzewzdnnDLM))
+
+((N=Xpr10.lis.Z)
+ (B.sha1='zhRT/Zbv/FpGkQ6hrLKCWsJxbf/4))
+
+((N=Xsc01.lis.Z)
+ (B.sha1='zQ+MSXBDdOOnhn3c39smqDntWXwU))
+
+((N=Xsc02.lis.Z)
+ (B.sha1='zBeEXk2IYZLrdewOnEZq/6rBs1UY))
+
+((N=Xsc03.lis.Z)
+ (B.sha1='zi53s6F2HPROGTX1JcBaCY/SboEI))
+
+((N=Xsc04.lis.Z)
+ (B.sha1='zaLN2wEvkWN/t+GAGecNjnQmvqZQ))
+
+((N=Xsc05.lis.Z)
+ (B.sha1='z6Zzr9PNrh96n/uPw60KyO9XvyYE))
+
+((N=Xsc06.lis.Z)
+ (B.sha1='zYfih6iE2hTNEbqdRERsXvf1+UEQ))
+
+((N=Xsc07.lis.Z)
+ (B.sha1='zuNAmSx0TNvWp6oqAW36nbBlmN9I))
+
+((N=Xsc08.lis.Z)
+ (B.sha1='zk8qt7k1RS54DiZzge2nhZht3OyI))
+
+((N=Xsc09.lis.Z)
+ (B.sha1='zriUoPEoDZe6ifJNi+m4BPRKhv68))
+
+((N=Xsc10.lis.Z)
+ (B.sha1='zmpgcboPrLANVnUa7H9nePPpcpbg))
+
+((N=Xsc11.lis.Z)
+ (B.sha1='z5zRjaSSCcFgSJCEZUA23VTQLEC4))
+
+((N=Xsc12.lis.Z)
+ (B.sha1='zOssyNcOX28lcbbktddy8NV3brGY))
+
+((N=Xsc13.lis.Z)
+ (B.sha1='z20KNITCOZDonaIrcKkqO2v8OdBA))
+
+((N=Xsc14.lis.Z)
+ (B.sha1='zqqAZ0rNZoEEEoVdmIV9h5c1R2ng))
+
+((N=Xsc15.lis.Z)
+ (B.sha1='zyj7YEEt8ZhJ6oDxk3KxiZl32pg0))
+
+((N=Xsc16.lis.Z)
+ (B.sha1='zs4+Bfdlp1WX48QCmCYgNR+kf9Xo))
+
+((N=Xsc17.lis.Z)
+ (B.sha1='zG3bdVNWt83CdWiHEQw1HcBO5/yI))
+
+((N=Xsc18.lis.Z)
+ (B.sha1='zolfryEWBAz733PHADmrqxQRT2qQ))
+
+((N=Xsc19.lis.Z)
+ (B.sha1='zEdb5MXxdAaZoF/0in3+5D09M8Lo))
+
+((N=Xsc20.lis.Z)
+ (B.sha1='z0KMZ9tQ+VbTc5xWgvWr2QqzvdOk))
+
+((N=Xsc21.lis.Z)
+ (B.sha1='z5SUDd0natTB6iXZuS6d1S2eWXpM))
+
+((N=Xsc22.lis.Z)
+ (B.sha1='z44YGCokzUvbO0DVLF3I31lpcT1o))
+
+((N=Xsc23.lis.Z)
+ (B.sha1='z57nCzqmm+hwFQLUnnyM+kycsv5M))
+
+((N=Xsc24.lis.Z)
+ (B.sha1='zHLEjg6eSLjraLeVpbMXJuRnk/y8))
+
+((N=Xsc25.lis.Z)
+ (B.sha1='zYL1tUiI6qr0oGJAPpLyJhrHPtH8))
+
+((N=Xsc26.lis.Z)
+ (B.sha1='zx2jDGRZx2oI4QGlkWzjvZK8sVqM))
+
+((N=Xsc27.lis.Z)
+ (B.sha1='zuwhYPkfyq51YMvS6nVMoXvN6Q0E))
+
+((N=Xsc28.lis.Z)
+ (B.sha1='zyqzfVrvbx2OF/TZCDpElxvrftCw))
+
+((N=Xsc29.lis.Z)
+ (B.sha1='z35KknRbZy63dASfov3+LLjDE22U))
+
+((N=Xtg01.lis.Z)
+ (B.sha1='zMVpOc4E+GOqYbHU3QgANp0Y8AjI))
+
+((N=Xtg01.out.Z)
+ (B.sha1='z+rP7T+vBpjm7RP776/Uz78ccc6A))
+
+((N=Xtg02.lis.Z)
+ (B.sha1='zSkqjnGHYpS5ylEevNr6vNw9lmzo))
+
+((N=Xtg02.out.Z)
+ (B.sha1='zAH9oO0hzadGymCuGrzA0Lgi7b0I))
+
+((N=Xtg03.lis.Z)
+ (B.sha1='zKOsxg7yhAe6AFu4RuGuYlD0u2AA))
+
+((N=Xtg03.out.Z)
+ (B.sha1='zeqgANbITldctRV8k4DtxjCKd2Gw))
+
+((N=Xtg04.lis.Z)
+ (B.sha1='zAXQpV0PmxN16hALpfm1Q0dRksdI))
+
+((N=Xtg04.out.Z)
+ (B.sha1='zfeGsfoMUTnXAd6i5d/omm+4jFaQ))
+
+((N=Xtg05.lis.Z)
+ (B.sha1='zDqg3LanrOZvAXbkcHeBgZRTVvW0))
+
+((N=Xtg05.out.Z)
+ (B.sha1='zzMQwHxvz57q7HoNV85kOWjsTK9A))
+
+((N=Xtg06.lis.Z)
+ (B.sha1='zFWXPfZM4Oat0ugmKtWE6BSoVO98))
+
+((N=Xtg06.out.Z)
+ (B.sha1='z2b5kUdfqosK8hwCEQx6i7z/geaE))
+
+((N=Xtg07.lis.Z)
+ (B.sha1='zIjFY6Plp5z5c87fbZGrlsueXdgQ))
+
+((N=Xtg07.out.Z)
+ (B.sha1='zyIV5uiNr0pHuvRI8ULsXCqMQkLA))
+
+((N=Xtg08.lis.Z)
+ (B.sha1='zQRKFLJC6vJkxwBylEuYVp7XI2bI))
+
+((N=Xtg08.out.Z)
+ (B.sha1='zaRcv9uMZUMvPzqAQpbwm+DaMhjQ))
+
+((N=Xtg09.lis.Z)
+ (B.sha1='zpcmKW24Z5tpihVi/8uN9treB/Os))
+
+((N=Xtg09.out.Z)
+ (B.sha1='zk0e8ko41rdnc21NtWWPOm+q7zks))
+
+((N=Xwv01.lis.Z)
+ (B.sha1='zmixsYIDDE4xrWzfyVMWWi2lsKAU))
+
+((N=Xwv01.tex.Z)
+ (B.sha1='z/p9eidIaqAKkNerq31BCoFBpAd8))
+
+((N=Xwv02.lis.Z)
+ (B.sha1='zmixsYIDDE4xrWzfyVMWWi2lsKAU))
+
+((N=Xwv02.tex.Z)
+ (B.sha1='z4U5Tz2Czr9+pN1EtwBc4teBAHG4))
+
+((N=Xwv03.lis.Z)
+ (B.sha1='zmixsYIDDE4xrWzfyVMWWi2lsKAU))
+
+((N=Xwv03.tex.Z)
+ (B.sha1='zIs5wuu9X5MxsL2S5dOVumhOp7uk))
+
+((N=Xwv04.lis.Z)
+ (B.sha1='zmixsYIDDE4xrWzfyVMWWi2lsKAU))
+
+((N=Xwv04.tex.Z)
+ (B.sha1='zEf4e4xYknookqHzt3YT3679fK4Q))
+
+((N=Xwv05.lis.Z)
+ (B.sha1='zmixsYIDDE4xrWzfyVMWWi2lsKAU))
+
+((N=Xwv05.tex.Z)
+ (B.sha1='zIGy5PDSB9B2z+fdx4e0l6pbhrCw))
+
+((N=Xwv06.lis.Z)
+ (B.sha1='zmixsYIDDE4xrWzfyVMWWi2lsKAU))
+
+((N=Xwv06.tex.Z)
+ (B.sha1='z7jtcVHN/YaL8SeuzcIvJhwQjPow))
+
+
+((C.sha1='zNKZBi9r+AbaANFfpechANycUAgU))
+
+
+?1-----(/answers/)-----
+
+
+?1=====(/examples/)=====
+((Stub=N)(TotalFiles=10)(Dirs=0))
+
+((N=X0readme)
+ (B.sha1='zt9zrizAycdzMulyb0Nj5qRLRgpc))
+
+((N=Xas.c)
+ (B.sha1='zQHdGzsmh4TF4equ+BisdWzs+788))
+
+((N=Xas.h)
+ (B.sha1='zjfL6n09Tb7tVR7w0P0NUTfbRoO0))
+
+((N=Xex'-test.c)
+ (B.sha1='z4m9Pi/c2//H7hRCU3NSAzaIRanc))
+
+((N=Xexcept.c)
+ (B.sha1='z1qjLj5WFxoeLZNMk/GYOyii4+AQ))
+
+((N=Xexcept.fw)
+ (B.sha1='zm/cxdzApVQ5OW5rMIR6nIj8FIg0))
+
+((N=Xexcept.h)
+ (B.sha1='zodPxnFyjdHygwW2vEeo64mBmQKg))
+
+((N=Xexcept.ps)
+ (B.sha1='zy3Lib6BLiqZHoVmajNgfPej+0dE))
+
+((N=Xexcept.tex)
+ (B.sha1='zldDo2UCOKzZlK4TthEWN0s99KlM))
+
+((N=Xstyle.h)
+ (B.sha1='zkYyV5Zwbpu9AA20vNXoBSeuUkrc))
+
+
+((C.sha1='zGfrG2vhnj+QoZ/JTVhoqI9i+hb4))
+
+
+?1-----(/examples/)-----
+
+
+?1=====(/hackman/)=====
+((Stub=N)(TotalFiles=12)(Dirs=0))
+
+((N=Xh'-ch0.tex.Z)
+ (B.sha1='zxNvKw4N1UdFDYVHSek7EIcortac))
+
+((N=Xh'-ch1.tex.Z)
+ (B.sha1='z0Hm3B8IOmJiNIZb2ovHf2eanBxk))
+
+((N=Xh'-ch2.tex.Z)
+ (B.sha1='zvVXtop9AyU7PjX70JiqDvpvQ6MQ))
+
+((N=Xh'-ch3.tex.Z)
+ (B.sha1='zKheEpiXwbOfKJ+dr6ExgjRbALM4))
+
+((N=Xh'-ch4.tex.Z)
+ (B.sha1='zY2OJrHNE9Vi+TUlPOM2Jyjnz1TQ))
+
+((N=Xh'-cha.tex.Z)
+ (B.sha1='zVBsZQkFNz0AxF+vdHnKeNuAVXDc))
+
+((N=Xh'-manual.aux.Z)
+ (B.sha1='zgTIOCTnzV7H0OU5TZkoBrkb0piM))
+
+((N=Xh'-manual.idx.Z)
+ (B.sha1='zhLhzM2oD554LThA7upvXrOvFWxU))
+
+((N=Xh'-manual.log.Z)
+ (B.sha1='zjoevcSdRqbp+XVPSPWiPcDLPI9I))
+
+((N=Xh'-manual.sin.Z)
+ (B.sha1='zyeuPq3hQTkRemMRjs/FHxMe3q5Q))
+
+((N=Xh'-manual.tex.Z)
+ (B.sha1='zT2pp882E2XN9LV0LtPPWfhcbsPA))
+
+((N=Xh'-manual.toc.Z)
+ (B.sha1='zkuVcREwPW6yGgqHKYDqtn6o6GfA))
+
+
+((C.sha1='zr2Zb2hXCQkZVY4pnX31E8cs/dRc))
+
+
+?1-----(/hackman/)-----
+
+
+?1=====(/results/)=====
+((Stub=N)(TotalFiles=0)(Dirs=0))
+
+((C.sha1='zGwuG51nBbjGDxZwFNqGVyUs9X54))
+
+
+?1-----(/results/)-----
+
+
+?1=====(/scripts/)=====
+((Stub=N)(TotalFiles=9)(Dirs=0))
+
+((N=X0license.txt.Z)
+ (B.sha1='zzwq3qbm7dQ5yVl7z0TkyRWN6epg))
+
+((N=Xmaster.fws.Z)
+ (B.sha1='ze9Ryg/bgv/gDexpjrBqvJ57KTVw))
+
+((N=Xtest'-gen.fws.Z)
+ (B.sha1='zyv0Ge4khnoTTGq84rL7JHeH37IA))
+
+((N=Xtest'-l.fws.Z)
+ (B.sha1='z3B+4imaTM9vb+7nTUKYlaSXTjP0))
+
+((N=Xtest'-ld.fws.Z)
+ (B.sha1='zp88QpwVuOaEyIHTqxzEORqC2//g))
+
+((N=Xtest'-lo.fws.Z)
+ (B.sha1='zthWaNifBZhn2BIixeljdu6wkJDs))
+
+((N=Xtest'-lo2.fws.Z)
+ (B.sha1='zSVKHQREotGP0zsiMe/drQVPEXGM))
+
+((N=Xtest'-lot.fws.Z)
+ (B.sha1='z36rUXwpENzhGXnT2oKM5Oj+Rapw))
+
+((N=Xtest'-lt.fws.Z)
+ (B.sha1='zAZ5/gAdrNgVEGX9yAkmvV7K/2WA))
+
+
+((C.sha1='zKZeTSrWIIVhISXbT92jw9dy8BNU))
+
+
+?1-----(/scripts/)-----
+
+
+?1=====(/sources/)=====
+((Stub=N)(TotalFiles=53)(Dirs=0))
+
+((N=Xanalyse.c.Z)
+ (B.sha1='zQwCe+WoUBhlEGUdpUOArrVnqzD8))
+
+((N=Xanalyse.h.Z)
+ (B.sha1='zD6oo6hvxAl1gyYEl4oG1mS7AGb4))
+
+((N=Xas.c.Z)
+ (B.sha1='z7RTtWxNoENRs/rWVLHqazavLwgg))
+
+((N=Xas.h.Z)
+ (B.sha1='zXxPzsuec+CS6VW2SC+orcNkmIAs))
+
+((N=Xclock.c.Z)
+ (B.sha1='zlgwJx0FUg4B92Dbc0iPTxq19wm0))
+
+((N=Xclock.h.Z)
+ (B.sha1='z+lz8Lv/o1UEH5JXwK1v2XmNJ/ns))
+
+((N=Xcommand.c.Z)
+ (B.sha1='zqWsaD7cpaS1hBs08E7FiM960dtI))
+
+((N=Xcommand.h.Z)
+ (B.sha1='zkiChJYwYndYtHCetRWo1l6DeTj8))
+
+((N=Xdata.c.Z)
+ (B.sha1='zNpRJ26Z6Uxz8EhVUr0zld1T+wGI))
+
+((N=Xdata.h.Z)
+ (B.sha1='zBzVKW7wQaqtGVUZk+T0YP4Q1Ep4))
+
+((N=Xdump.c.Z)
+ (B.sha1='zl3mjv+1C/6+HwfAEERUsLx2whtI))
+
+((N=Xdump.h.Z)
+ (B.sha1='zkiUUgzoDjzrWxv8HDlVTuhkkTC0))
+
+((N=Xenviron.h.Z)
+ (B.sha1='zUZ6w3Ythu1n1BfVouHVpF/DGsJc))
+
+((N=Xhelp.c.Z)
+ (B.sha1='zRRGWWyIoQHMxUc3WVmwoQplVxv4))
+
+((N=Xhelp.h.Z)
+ (B.sha1='zOnCAr5FJjehde8vxWsKcWSZLPRM))
+
+((N=Xhelp'-gnu.c.Z)
+ (B.sha1='z7yYvJcHGzje75OTswFxBnmQ/BVY))
+
+((N=Xhelp'-gnu.ctx.Z)
+ (B.sha1='zVFMaJ1upUorLMDsnN00Htvd+de8))
+
+((N=Xhelp'-gnu.h.Z)
+ (B.sha1='zn63oB/BEhlkIR9gF3Hzz7WFb9to))
+
+((N=Xhelp'-gnu.txt.Z)
+ (B.sha1='z9VvQnCaAxt7/gRkaRBXYxwxpguw))
+
+((N=Xlist.c.Z)
+ (B.sha1='z/xE5uAAuiVNg9WCSQ3HfzLWu0Mg))
+
+((N=Xlist.h.Z)
+ (B.sha1='zOb19bS98/NhZEMGuCvnGA/O2klQ))
+
+((N=Xlister.c.Z)
+ (B.sha1='zw2LplRGqahyFG/iA+el5yRIFP3Y))
+
+((N=Xlister.h.Z)
+ (B.sha1='zkvvNZNXnAaYrUUvaFEKDkH2V7h8))
+
+((N=Xmachin.c.Z)
+ (B.sha1='zABm6rrEArn2Nunj94xdM7KsF89c))
+
+((N=Xmachin.h.Z)
+ (B.sha1='z2d2aqk1kLKHwXiuWYIi1RdAHK8Y))
+
+((N=Xmain.c.Z)
+ (B.sha1='zyUdMJJEbtt0hzr+uVG2eCLlYJkE))
+
+((N=Xmapper.c.Z)
+ (B.sha1='z1YG313aBvZ0OIaOczpr43ZrNWCc))
+
+((N=Xmapper.h.Z)
+ (B.sha1='zpt8ICqEzbWk42281orwxTzIgn2E))
+
+((N=Xmemory.c.Z)
+ (B.sha1='z/ZawfyNBmbH8c2qpMZYooyDzh/c))
+
+((N=Xmemory.h.Z)
+ (B.sha1='zSArNUzlxEG4ybxA+y4pkLACAAFU))
+
+((N=Xmisc.c.Z)
+ (B.sha1='zHxZhLOyKNyi1TVz2MKQ/6JD6DuA))
+
+((N=Xmisc.h.Z)
+ (B.sha1='zQrK7nHS92JXEaHfJKaFSn6xzU9o))
+
+((N=Xoption.c.Z)
+ (B.sha1='zdVkf2JFlwF5k9y8H6hpO1wvEsZc))
+
+((N=Xoption.h.Z)
+ (B.sha1='ziGxLa4pFsfTANOszs2y681SJTmM))
+
+((N=Xparser.c.Z)
+ (B.sha1='zkbP4XCbWgwRfImJUR46GFqPe4MY))
+
+((N=Xparser.h.Z)
+ (B.sha1='zVtshW+RuM9eEa6T4BYRTcKS+QJI))
+
+((N=Xscanner.c.Z)
+ (B.sha1='zk7S7Br3Vu26m9sumqXRQ+Chh5qw))
+
+((N=Xscanner.h.Z)
+ (B.sha1='zJ6QGaXyI00qvScWWLJNLNOCU9cI))
+
+((N=Xsection.c.Z)
+ (B.sha1='zUKGdctgilVDlwrYfhKr9c1J1LJA))
+
+((N=Xsection.h.Z)
+ (B.sha1='z+lABrGQaCT6KIJgupLM4r5TLJTM))
+
+((N=Xstyle.h.Z)
+ (B.sha1='zVHpwotQ3uSiOR3q8Q/+7x3mYvNI))
+
+((N=Xtable.c.Z)
+ (B.sha1='zn6TSz5xPFRUbZ2otvUonXStBPJs))
+
+((N=Xtable.h.Z)
+ (B.sha1='zoljBevIoN22dnBkWq/GVEvlgcTs))
+
+((N=Xtangle.c.Z)
+ (B.sha1='zb2CUrK408NFHEZ40NxLmYFcOBBA))
+
+((N=Xtangle.h.Z)
+ (B.sha1='znWaTwBScdEL7Dp43IP/35JskJ40))
+
+((N=Xtexhead.c.Z)
+ (B.sha1='zckgIGxscbtZNp1bvfZpXtieIDTc))
+
+((N=Xtexhead.ctx.Z)
+ (B.sha1='zHWUyNjxVfOsVkAg5FZQQ8I14fvw))
+
+((N=Xtexhead.h.Z)
+ (B.sha1='zGGjtrKYMiWe1mZ4I+1+nV4EPy/s))
+
+((N=Xtexhead.tex.Z)
+ (B.sha1='zBHrrdH+yjgXQnRWsB6RuFHfjSME))
+
+((N=Xweave.c.Z)
+ (B.sha1='zEbg78rtypcYHIxImVtw3Lh8VgQQ))
+
+((N=Xweave.h.Z)
+ (B.sha1='zzQxu88ashT1xR3ekJshyquGpg7w))
+
+((N=Xwritfile.c.Z)
+ (B.sha1='zgzA4L3gyxXtM0IRVrVJ2GPzGgqM))
+
+((N=Xwritfile.h.Z)
+ (B.sha1='zxguTm7HD4AEi7zDgntU+q8+190Y))
+
+
+((C.sha1='z9pabs/m/hTt/VHvPfpcZ5ULrqwk))
+
+
+?1-----(/sources/)-----
+
+
+?1=====(/tests/)=====
+((Stub=N)(TotalFiles=96)(Dirs=0))
+
+((N=X0license.txt.Z)
+ (B.sha1='zzwq3qbm7dQ5yVl7z0TkyRWN6epg))
+
+((N=Xan01.fw.Z)
+ (B.sha1='z7UI22vKWlrLShM6KlhoOWPB0oM8))
+
+((N=Xan02.fw.Z)
+ (B.sha1='zVXZ4uEae/rTR71sLuCvocKptsb8))
+
+((N=Xan03.fw.Z)
+ (B.sha1='zI/3eEkQ2DZwbfx9RDPSGak5nrrA))
+
+((N=Xan04.fw.Z)
+ (B.sha1='zibzTUqi28mUZMAjzsCBe/Y1rFbc))
+
+((N=Xex01.fw.Z)
+ (B.sha1='zTdx0gN6Kj1l7zqVTRPENzV3dPhE))
+
+((N=Xex02.fw.Z)
+ (B.sha1='zOwpxdWmY8/720J4FADekETclTfk))
+
+((N=Xex03.fw.Z)
+ (B.sha1='z2uU/3hOu2iZeUta37ixhOmh63VM))
+
+((N=Xex04.fw.Z)
+ (B.sha1='ziwrFmsC6FlH5pv5wbM3Yc9+xXpc))
+
+((N=Xex05.fw.Z)
+ (B.sha1='zcocKwEyhI7bfCEFvnacvgJ04dxc))
+
+((N=Xex06.fw.Z)
+ (B.sha1='zteJ8wPOPz+gJCSlE1HHsYY3glvE))
+
+((N=Xex07.fw.Z)
+ (B.sha1='zZYCm+oQ+I7SuzMl0kDx5Lz+hep0))
+
+((N=Xex08.fw.Z)
+ (B.sha1='zC6e9nrY3NapNArrWEgvHtwsXSrs))
+
+((N=Xex09.fw.Z)
+ (B.sha1='z4N+Db9Ci8ZIL2ieAQnf4hqfYjZA))
+
+((N=Xex09a.fwi.Z)
+ (B.sha1='zJYxi8UnTI/qL5Lhu16sTAMCBAc8))
+
+((N=Xex10.fw.Z)
+ (B.sha1='zHN+NdDXVkgDjX4/9Hltcd2SUWuU))
+
+((N=Xex10a.fwi.Z)
+ (B.sha1='zyNmL6UWAgFB4hXj5EVapyyOUmuk))
+
+((N=Xex11.fw.Z)
+ (B.sha1='zb8IV5HbhZF2kepNrYSgA0hx8Pns))
+
+((N=Xex12.fw.Z)
+ (B.sha1='ze/M0t/BTo94hVAxzoSewp7tsvYU))
+
+((N=Xex13.fw.Z)
+ (B.sha1='zUoAOXaKQLmpdJSB6u+OZOaZ21bk))
+
+((N=Xex14.fw.Z)
+ (B.sha1='zTzb/B917sACj8SOW+hsCe7N5NXo))
+
+((N=Xex15.fw.Z)
+ (B.sha1='zBJSZOrXqp/+wS1ZS0hYDdjPE4gU))
+
+((N=Xex16.fw.Z)
+ (B.sha1='zzxUj1bTpoj/sSc1Oirh3UYP87xY))
+
+((N=Xgenerate.fw.Z)
+ (B.sha1='zjyODykVvv0qccO9w4RsmnFugltk))
+
+((N=Xhi01.fw.Z)
+ (B.sha1='zNHgrtg56a/wYn848r8XVGiEwDGs))
+
+((N=Xhi02.fw.Z)
+ (B.sha1='zhQZFNjA2BShaw7Idj6sxC1hBm9I))
+
+((N=Xhi03.fw.Z)
+ (B.sha1='z3BZuHLOWAFEhBMsAiGAIszYTvuc))
+
+((N=Xhi04.fw.Z)
+ (B.sha1='z5m4SW7Q00PRVKkDdetH0O4CruPc))
+
+((N=Xhi05.fw.Z)
+ (B.sha1='zdF1OkuyLUGiC/BAPcX+HJD4yGDA))
+
+((N=Xhi06.fw.Z)
+ (B.sha1='z6NsUAlTyF/1tGn8MvZaW/eTEf3I))
+
+((N=Xhi07.fw.Z)
+ (B.sha1='ztbhZb8znzklNc/utvT39E5el0og))
+
+((N=Xhi08.fw.Z)
+ (B.sha1='zOD0B5/lqXFPDLPJfSckcG6Zdxuk))
+
+((N=Xhi09.fw.Z)
+ (B.sha1='zVqJQihNyWO/7DODrvsPMmwJ7kEU))
+
+((N=Xhi10.fw.Z)
+ (B.sha1='zU3kXvxwyeJH3RiHpQ8SxAawmsyk))
+
+((N=Xpr01.fw.Z)
+ (B.sha1='zOqLDX9iCoc4ML/jmFK2YKYFiSyY))
+
+((N=Xpr02.fw.Z)
+ (B.sha1='zlam3hktYu250vV2jg4VA734M6Qs))
+
+((N=Xpr03.fw.Z)
+ (B.sha1='zsC2iGwk/6vTXp19jPEjXWUU65LU))
+
+((N=Xpr04.fw.Z)
+ (B.sha1='zi8T1fLg5IAiOt368YyZ52p3t+HY))
+
+((N=Xpr05.fw.Z)
+ (B.sha1='zzAi5mxZofqWBoL+Mkyb3BwIs8o0))
+
+((N=Xpr06.fw.Z)
+ (B.sha1='zXXCAj5dSs19/Musi0PqVwwlpNm4))
+
+((N=Xpr07.fw.Z)
+ (B.sha1='zNZ+a40y1jFsX2kvw53SJjah93aQ))
+
+((N=Xpr08.fw.Z)
+ (B.sha1='zWfh7CvaZhHVNYVOsTufhS4Fn4P8))
+
+((N=Xpr09.fw.Z)
+ (B.sha1='zXu5GjIGRdL03IqrYbAgF0JqT/Y8))
+
+((N=Xpr10.fw.Z)
+ (B.sha1='zAe/6G4ft1JfQ3DuX8eslB0pwpqA))
+
+((N=Xsc01'-note.fw.Z)
+ (B.sha1='zvxrD1Sav47dVN8ObOwU8S2cUGHo))
+
+((N=Xsc02.fw.Z)
+ (B.sha1='z2jmj7l5rSw0yVb/vlWAYkK/YBwk))
+
+((N=Xsc03.fw.Z)
+ (B.sha1='zrcg7GeeTSRscbqD9i0bNnzLlkvw))
+
+((N=Xsc04.fw.Z)
+ (B.sha1='zcYU8YZemp/Ii2w8ZeMfLIyuHxe4))
+
+((N=Xsc05.fw.Z)
+ (B.sha1='zE2O7Ylc2EcpZrI3kJ1ufvf2Fn6I))
+
+((N=Xsc06.fw.Z)
+ (B.sha1='zaaqmXipCUw2Ik9BHtVPW1jqH8vk))
+
+((N=Xsc07.fw.Z)
+ (B.sha1='zN2UK9hmIGew36Ju7Rre5EcIK80M))
+
+((N=Xsc08.fw.Z)
+ (B.sha1='zyfbEYMTXalh08B9ja9LYTgEg64g))
+
+((N=Xsc09.fw.Z)
+ (B.sha1='zXEIyPjHM9j5591cewZsc3Oeovmk))
+
+((N=Xsc10.fw.Z)
+ (B.sha1='z7I6tybdhHj3qTm5pikZzLDVMGik))
+
+((N=Xsc11.fw.Z)
+ (B.sha1='zub/ChGLXiQA17RFNcXuesGsxpu0))
+
+((N=Xsc12.fw.Z)
+ (B.sha1='zo1k1hc4mUEUhkmT8I/leZ5IB7e4))
+
+((N=Xsc13.fw.Z)
+ (B.sha1='zKp4gViknKQ7U4tz2F2BrO6N6PeA))
+
+((N=Xsc13a.fwi.Z)
+ (B.sha1='z2jmj7l5rSw0yVb/vlWAYkK/YBwk))
+
+((N=Xsc13b.fwi.Z)
+ (B.sha1='zrcg7GeeTSRscbqD9i0bNnzLlkvw))
+
+((N=Xsc13c.fwi.Z)
+ (B.sha1='zcYU8YZemp/Ii2w8ZeMfLIyuHxe4))
+
+((N=Xsc13d.fwi.Z)
+ (B.sha1='zRh31QM1LMdvzYmNvO6MrE/l4yIs))
+
+((N=Xsc13e.fwi.Z)
+ (B.sha1='zz579AqExByR6/UM3ztimtpyK/rU))
+
+((N=Xsc13f.fwi.Z)
+ (B.sha1='zCYbu6fhJCHpjhe+90z2nW8OpXBg))
+
+((N=Xsc14.fw.Z)
+ (B.sha1='zO42rA74lNNLWcQ+R3DArYOGROos))
+
+((N=Xsc15.fw.Z)
+ (B.sha1='zkGB7L7k8/Xs7NVV+rERZSWIR+Ik))
+
+((N=Xsc15a.fwi.Z)
+ (B.sha1='zX6a+7JHRNm6aCA3IhezVLbmfnZc))
+
+((N=Xsc16.fw.Z)
+ (B.sha1='zt3wwYt7AoySgwKA7zZzLfiUFx/M))
+
+((N=Xsc17.fw.Z)
+ (B.sha1='z/IZSjKvPEn4oh0bar0Lxw/r9eZI))
+
+((N=Xsc18.fw.Z)
+ (B.sha1='zDIvf/gej3nqMFkc0yEQdtDeV+3o))
+
+((N=Xsc19.fw.Z)
+ (B.sha1='zFTrB66qtxjDnx63cUWKzeCx3M1s))
+
+((N=Xsc20.fw.Z)
+ (B.sha1='zspDVNlsAlEus50FL8EbYzm6wBo4))
+
+((N=Xsc21.fw.Z)
+ (B.sha1='z49ncygmevYr/BY8tW5CUM7/JLLA))
+
+((N=Xsc22.fw.Z)
+ (B.sha1='zeik1gKPqk8rbL7/Gl3/lSHozh1U))
+
+((N=Xsc23.fw.Z)
+ (B.sha1='zN15Bi9QkKDztWAJwnRy6kYoXmDI))
+
+((N=Xsc24.fw.Z)
+ (B.sha1='z7eAa5/HXdb/2zDmBkvdYgVs8Gx4))
+
+((N=Xsc25.fw.Z)
+ (B.sha1='zigl9jo9dDWQrFgf+YoD1C27ZbFU))
+
+((N=Xsc26.fw.Z)
+ (B.sha1='z41Jcl2OhNHw+NAvXpSBOP2soEtk))
+
+((N=Xsc27.fw.Z)
+ (B.sha1='zZStE/IvtauWTmMPqBzRupRftI9o))
+
+((N=Xsc28.fw.Z)
+ (B.sha1='zxSNXdoMA2ZY2GkYaMYvRc/Vwm5s))
+
+((N=Xsc29.fw.Z)
+ (B.sha1='zfY0NGW+Fyof+jRNbdYkyQaTJryQ))
+
+((N=Xtg01.fw.Z)
+ (B.sha1='zZh8rsw7vd1G8JZkJSKGcrQ4GXIc))
+
+((N=Xtg02.fw.Z)
+ (B.sha1='zca8xHcOkO8/2rnEG9KPIb5cFTaA))
+
+((N=Xtg03.fw.Z)
+ (B.sha1='zk9CkUWupNUjl6KvuZghzUf3PPyU))
+
+((N=Xtg04.fw.Z)
+ (B.sha1='zyWEUHi4J8aTpfNPxKZmzMktmEDo))
+
+((N=Xtg05.fw.Z)
+ (B.sha1='ztiMU07PsjZEY5DvYzgR0d0aKsoo))
+
+((N=Xtg06.fw.Z)
+ (B.sha1='z+tcly9w2t+OejHSLZqevVDCcTIY))
+
+((N=Xtg07.fw.Z)
+ (B.sha1='zmI1/w7WN5Q1E9buk6wi/vsKgEAk))
+
+((N=Xtg08.fw.Z)
+ (B.sha1='zHSIuhSgwvv914lvssV+auZe6tzE))
+
+((N=Xtg08a.fwi.Z)
+ (B.sha1='zjMZ0noJHl8jO57nV3wfUBmFdWHA))
+
+((N=Xtg09.fw.Z)
+ (B.sha1='z5XVIn7vUUiEQY1KJxR3LGfKTEdM))
+
+((N=Xwv01.fw.Z)
+ (B.sha1='zxD2g3xpyqGnLGeNPcRIxuvMxy2g))
+
+((N=Xwv02.fw.Z)
+ (B.sha1='zqdBaVZfqZI9STqjXazy4QuKFkx0))
+
+((N=Xwv03.fw.Z)
+ (B.sha1='zZX8YmzxFkhqc+COjf1jVlwXTsqY))
+
+((N=Xwv04.fw.Z)
+ (B.sha1='zMo7ckJUVtr77Dl4jHwPMmr2YVkM))
+
+((N=Xwv05.fw.Z)
+ (B.sha1='zBm2U6i0rOILFJcECOxM6CXihnyQ))
+
+((N=Xwv06.fw.Z)
+ (B.sha1='zTfBbQpM0g64ADewf3HkUnS7imtg))
+
+
+((C.sha1='zam1nEUQSXA09pHlv3zr5sOWGoyc))
+
+
+?1-----(/tests/)-----
+
+
+?1=====(/userman/)=====
+((Stub=N)(TotalFiles=13)(Dirs=0))
+
+((N=Xu'-ch0.tex.Z)
+ (B.sha1='zxXgDKMLyXXfYmX005lRXXgGY2iQ))
+
+((N=Xu'-ch1.tex.Z)
+ (B.sha1='zVeDrGX5vpYSSbSGI+VRGWWXgEbY))
+
+((N=Xu'-ch2.tex.Z)
+ (B.sha1='zUh4pDeC9NMytstpO/RwG1fJU8Io))
+
+((N=Xu'-ch3.tex.Z)
+ (B.sha1='zi11z3mb7UKPv9UFJxhagx1tz7Rk))
+
+((N=Xu'-ch4.tex.Z)
+ (B.sha1='zWBKVAPHW6eHSZ7TvRcGOOYYns78))
+
+((N=Xu'-ch5.tex.Z)
+ (B.sha1='zrx8KnDKJIvPIcU7NoJIoBbccjcU))
+
+((N=Xu'-cha.tex.Z)
+ (B.sha1='z06WzRcB04sXHhcmW08TQ3pYZEl4))
+
+((N=Xu'-manual.aux.Z)
+ (B.sha1='zm//gQob103ShbprOnYvICnCJvoM))
+
+((N=Xu'-manual.idx.Z)
+ (B.sha1='zSwk6OQmRZFQOU7jZRMEp6QvOk2s))
+
+((N=Xu'-manual.log.Z)
+ (B.sha1='z6xCn9YKIyOm7c86nUt3YwYACzTI))
+
+((N=Xu'-manual.sin.Z)
+ (B.sha1='zmwr90POGTGgY694c3kORkgV4m6E))
+
+((N=Xu'-manual.tex.Z)
+ (B.sha1='zx+aSCDu3bVKqJDiQXaBhsq1YkZo))
+
+((N=Xu'-manual.toc.Z)
+ (B.sha1='zvyZ2TdEUBArbZrtoBxtB7Tg5t1o))
+
+
+((C.sha1='z6kP68zhcS3YNsIkTkfsgRSWJtb8))
+
+
+?1-----(/userman/)-----
+
+
+?0-----(/)-----
+
+((Salt='zh2NMbTrXmgjTSVtIgbrVog))
+
+?S-----(SNAPSHOT)-----
diff --git a/web/funnelweb/admin/0readme.txt b/web/funnelweb/admin/0readme.txt
new file mode 100644
index 0000000000..74b3bcc79c
--- /dev/null
+++ b/web/funnelweb/admin/0readme.txt
@@ -0,0 +1,12 @@
+
+FUNNELWEB INSTALLATION
+======================
+Chapter 4 of the FunnelWeb User's Manual contains full installation
+instructions for FunnelWeb in LaTeX format. Ideally you should print out
+the entire FunnelWeb User's Manual and then read the installation chapter
+for installation instructions. The LaTeX files for the User's Manual are in
+fwdir/userman/
+
+If you are in a hurry, print out fwdir/userman/u_ch4.tex in text form and
+follow the instructions within.
+
diff --git a/web/funnelweb/admin/ad.txt.gz b/web/funnelweb/admin/ad.txt.gz
new file mode 100644
index 0000000000..978514a058
--- /dev/null
+++ b/web/funnelweb/admin/ad.txt.gz
Binary files differ
diff --git a/web/funnelweb/admin/fixeols.fws.gz b/web/funnelweb/admin/fixeols.fws.gz
new file mode 100644
index 0000000000..faf18d9457
--- /dev/null
+++ b/web/funnelweb/admin/fixeols.fws.gz
Binary files differ
diff --git a/web/funnelweb/admin/gnu2.txt.gz b/web/funnelweb/admin/gnu2.txt.gz
new file mode 100644
index 0000000000..054a6f68e1
--- /dev/null
+++ b/web/funnelweb/admin/gnu2.txt.gz
Binary files differ
diff --git a/web/funnelweb/admin/makescript.gz b/web/funnelweb/admin/makescript.gz
new file mode 100644
index 0000000000..fd48d8590b
--- /dev/null
+++ b/web/funnelweb/admin/makescript.gz
Binary files differ
diff --git a/web/funnelweb/admin/vms_bld.com.gz b/web/funnelweb/admin/vms_bld.com.gz
new file mode 100644
index 0000000000..a7de1e2dc5
--- /dev/null
+++ b/web/funnelweb/admin/vms_bld.com.gz
Binary files differ
diff --git a/web/funnelweb/answers/0license.txt.gz b/web/funnelweb/answers/0license.txt.gz
new file mode 100644
index 0000000000..572b18e65c
--- /dev/null
+++ b/web/funnelweb/answers/0license.txt.gz
Binary files differ
diff --git a/web/funnelweb/answers/an01.lis.gz b/web/funnelweb/answers/an01.lis.gz
new file mode 100644
index 0000000000..0eabcc27a0
--- /dev/null
+++ b/web/funnelweb/answers/an01.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/an02.lis.gz b/web/funnelweb/answers/an02.lis.gz
new file mode 100644
index 0000000000..bd5ca7737b
--- /dev/null
+++ b/web/funnelweb/answers/an02.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/an03.lis.gz b/web/funnelweb/answers/an03.lis.gz
new file mode 100644
index 0000000000..2d09a57e35
--- /dev/null
+++ b/web/funnelweb/answers/an03.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/an04.lis.gz b/web/funnelweb/answers/an04.lis.gz
new file mode 100644
index 0000000000..fb9dc45e7f
--- /dev/null
+++ b/web/funnelweb/answers/an04.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex01.lis.gz b/web/funnelweb/answers/ex01.lis.gz
new file mode 100644
index 0000000000..f693a2a3ae
--- /dev/null
+++ b/web/funnelweb/answers/ex01.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex01.out.gz b/web/funnelweb/answers/ex01.out.gz
new file mode 100644
index 0000000000..a5254f772b
--- /dev/null
+++ b/web/funnelweb/answers/ex01.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex02.lis.gz b/web/funnelweb/answers/ex02.lis.gz
new file mode 100644
index 0000000000..960ca25a7f
--- /dev/null
+++ b/web/funnelweb/answers/ex02.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex02.out.gz b/web/funnelweb/answers/ex02.out.gz
new file mode 100644
index 0000000000..a4807606f5
--- /dev/null
+++ b/web/funnelweb/answers/ex02.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex03.lis.gz b/web/funnelweb/answers/ex03.lis.gz
new file mode 100644
index 0000000000..4517d6906a
--- /dev/null
+++ b/web/funnelweb/answers/ex03.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex04.lis.gz b/web/funnelweb/answers/ex04.lis.gz
new file mode 100644
index 0000000000..6f0ad26627
--- /dev/null
+++ b/web/funnelweb/answers/ex04.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex04.out.gz b/web/funnelweb/answers/ex04.out.gz
new file mode 100644
index 0000000000..17252f962f
--- /dev/null
+++ b/web/funnelweb/answers/ex04.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex05.lis.gz b/web/funnelweb/answers/ex05.lis.gz
new file mode 100644
index 0000000000..e0e16d359c
--- /dev/null
+++ b/web/funnelweb/answers/ex05.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex05.out.gz b/web/funnelweb/answers/ex05.out.gz
new file mode 100644
index 0000000000..e804dacdf3
--- /dev/null
+++ b/web/funnelweb/answers/ex05.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex06.lis.gz b/web/funnelweb/answers/ex06.lis.gz
new file mode 100644
index 0000000000..9ed34c09b1
--- /dev/null
+++ b/web/funnelweb/answers/ex06.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex06.out.gz b/web/funnelweb/answers/ex06.out.gz
new file mode 100644
index 0000000000..a643fd9c59
--- /dev/null
+++ b/web/funnelweb/answers/ex06.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex07.lis.gz b/web/funnelweb/answers/ex07.lis.gz
new file mode 100644
index 0000000000..91b320d008
--- /dev/null
+++ b/web/funnelweb/answers/ex07.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex07.out.gz b/web/funnelweb/answers/ex07.out.gz
new file mode 100644
index 0000000000..a86f67471c
--- /dev/null
+++ b/web/funnelweb/answers/ex07.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex08.lis.gz b/web/funnelweb/answers/ex08.lis.gz
new file mode 100644
index 0000000000..7561b11f73
--- /dev/null
+++ b/web/funnelweb/answers/ex08.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex08.out.gz b/web/funnelweb/answers/ex08.out.gz
new file mode 100644
index 0000000000..cf39441c16
--- /dev/null
+++ b/web/funnelweb/answers/ex08.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex09.lis.gz b/web/funnelweb/answers/ex09.lis.gz
new file mode 100644
index 0000000000..9b1f384097
--- /dev/null
+++ b/web/funnelweb/answers/ex09.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex09.out.gz b/web/funnelweb/answers/ex09.out.gz
new file mode 100644
index 0000000000..bb7bdf8ca2
--- /dev/null
+++ b/web/funnelweb/answers/ex09.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex10.lis.gz b/web/funnelweb/answers/ex10.lis.gz
new file mode 100644
index 0000000000..3053f62d15
--- /dev/null
+++ b/web/funnelweb/answers/ex10.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex10.out.gz b/web/funnelweb/answers/ex10.out.gz
new file mode 100644
index 0000000000..a8ad24eb36
--- /dev/null
+++ b/web/funnelweb/answers/ex10.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex11.lis.gz b/web/funnelweb/answers/ex11.lis.gz
new file mode 100644
index 0000000000..730da3c0f8
--- /dev/null
+++ b/web/funnelweb/answers/ex11.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex11.tex.gz b/web/funnelweb/answers/ex11.tex.gz
new file mode 100644
index 0000000000..759be55fda
--- /dev/null
+++ b/web/funnelweb/answers/ex11.tex.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex12.lis.gz b/web/funnelweb/answers/ex12.lis.gz
new file mode 100644
index 0000000000..9361b80a95
--- /dev/null
+++ b/web/funnelweb/answers/ex12.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex12.tex.gz b/web/funnelweb/answers/ex12.tex.gz
new file mode 100644
index 0000000000..21cb5b8b22
--- /dev/null
+++ b/web/funnelweb/answers/ex12.tex.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex13.lis.gz b/web/funnelweb/answers/ex13.lis.gz
new file mode 100644
index 0000000000..4d57475ea7
--- /dev/null
+++ b/web/funnelweb/answers/ex13.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex13.tex.gz b/web/funnelweb/answers/ex13.tex.gz
new file mode 100644
index 0000000000..f2b1030d73
--- /dev/null
+++ b/web/funnelweb/answers/ex13.tex.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex14.lis.gz b/web/funnelweb/answers/ex14.lis.gz
new file mode 100644
index 0000000000..3956ef5016
--- /dev/null
+++ b/web/funnelweb/answers/ex14.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex14.tex.gz b/web/funnelweb/answers/ex14.tex.gz
new file mode 100644
index 0000000000..a30164da4b
--- /dev/null
+++ b/web/funnelweb/answers/ex14.tex.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex15.lis.gz b/web/funnelweb/answers/ex15.lis.gz
new file mode 100644
index 0000000000..89b847d3b1
--- /dev/null
+++ b/web/funnelweb/answers/ex15.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex15.tex.gz b/web/funnelweb/answers/ex15.tex.gz
new file mode 100644
index 0000000000..a13d670c3d
--- /dev/null
+++ b/web/funnelweb/answers/ex15.tex.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex16.lis.gz b/web/funnelweb/answers/ex16.lis.gz
new file mode 100644
index 0000000000..b243414b62
--- /dev/null
+++ b/web/funnelweb/answers/ex16.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex16.out.gz b/web/funnelweb/answers/ex16.out.gz
new file mode 100644
index 0000000000..349145b0b4
--- /dev/null
+++ b/web/funnelweb/answers/ex16.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/ex16.tex.gz b/web/funnelweb/answers/ex16.tex.gz
new file mode 100644
index 0000000000..84b32d4b33
--- /dev/null
+++ b/web/funnelweb/answers/ex16.tex.gz
Binary files differ
diff --git a/web/funnelweb/answers/generate.lis.gz b/web/funnelweb/answers/generate.lis.gz
new file mode 100644
index 0000000000..c3144662f6
--- /dev/null
+++ b/web/funnelweb/answers/generate.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi01.lis.gz b/web/funnelweb/answers/hi01.lis.gz
new file mode 100644
index 0000000000..14bf2d0d46
--- /dev/null
+++ b/web/funnelweb/answers/hi01.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi01.out.gz b/web/funnelweb/answers/hi01.out.gz
new file mode 100644
index 0000000000..a1a44a5d10
--- /dev/null
+++ b/web/funnelweb/answers/hi01.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi02.lis.gz b/web/funnelweb/answers/hi02.lis.gz
new file mode 100644
index 0000000000..73213dffc5
--- /dev/null
+++ b/web/funnelweb/answers/hi02.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi02.out.gz b/web/funnelweb/answers/hi02.out.gz
new file mode 100644
index 0000000000..79a5c5ff0c
--- /dev/null
+++ b/web/funnelweb/answers/hi02.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi03.lis.gz b/web/funnelweb/answers/hi03.lis.gz
new file mode 100644
index 0000000000..4727756319
--- /dev/null
+++ b/web/funnelweb/answers/hi03.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi03.out.gz b/web/funnelweb/answers/hi03.out.gz
new file mode 100644
index 0000000000..fea91b7811
--- /dev/null
+++ b/web/funnelweb/answers/hi03.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi04.lis.gz b/web/funnelweb/answers/hi04.lis.gz
new file mode 100644
index 0000000000..99ef888555
--- /dev/null
+++ b/web/funnelweb/answers/hi04.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi04.out.gz b/web/funnelweb/answers/hi04.out.gz
new file mode 100644
index 0000000000..e58a42bac3
--- /dev/null
+++ b/web/funnelweb/answers/hi04.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi05.lis.gz b/web/funnelweb/answers/hi05.lis.gz
new file mode 100644
index 0000000000..6a4fc0a498
--- /dev/null
+++ b/web/funnelweb/answers/hi05.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi05.out.gz b/web/funnelweb/answers/hi05.out.gz
new file mode 100644
index 0000000000..2469897a8b
--- /dev/null
+++ b/web/funnelweb/answers/hi05.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi06.lis.gz b/web/funnelweb/answers/hi06.lis.gz
new file mode 100644
index 0000000000..3fb34ba88f
--- /dev/null
+++ b/web/funnelweb/answers/hi06.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi06a.out.gz b/web/funnelweb/answers/hi06a.out.gz
new file mode 100644
index 0000000000..aed221e9af
--- /dev/null
+++ b/web/funnelweb/answers/hi06a.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi06b.out.gz b/web/funnelweb/answers/hi06b.out.gz
new file mode 100644
index 0000000000..056f2f52fa
--- /dev/null
+++ b/web/funnelweb/answers/hi06b.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi07.lis.gz b/web/funnelweb/answers/hi07.lis.gz
new file mode 100644
index 0000000000..7768dd2be4
--- /dev/null
+++ b/web/funnelweb/answers/hi07.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi07a.out.gz b/web/funnelweb/answers/hi07a.out.gz
new file mode 100644
index 0000000000..92e90eb1b2
--- /dev/null
+++ b/web/funnelweb/answers/hi07a.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi07b.out.gz b/web/funnelweb/answers/hi07b.out.gz
new file mode 100644
index 0000000000..470391d39f
--- /dev/null
+++ b/web/funnelweb/answers/hi07b.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi08.lis.gz b/web/funnelweb/answers/hi08.lis.gz
new file mode 100644
index 0000000000..452e744384
--- /dev/null
+++ b/web/funnelweb/answers/hi08.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi08.out.gz b/web/funnelweb/answers/hi08.out.gz
new file mode 100644
index 0000000000..13f71734ef
--- /dev/null
+++ b/web/funnelweb/answers/hi08.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi09.lis.gz b/web/funnelweb/answers/hi09.lis.gz
new file mode 100644
index 0000000000..84ef1e8d12
--- /dev/null
+++ b/web/funnelweb/answers/hi09.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi09.out.gz b/web/funnelweb/answers/hi09.out.gz
new file mode 100644
index 0000000000..798eceb0ec
--- /dev/null
+++ b/web/funnelweb/answers/hi09.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi10.lis.gz b/web/funnelweb/answers/hi10.lis.gz
new file mode 100644
index 0000000000..f2515e497a
--- /dev/null
+++ b/web/funnelweb/answers/hi10.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/hi10.out.gz b/web/funnelweb/answers/hi10.out.gz
new file mode 100644
index 0000000000..1c2d94d982
--- /dev/null
+++ b/web/funnelweb/answers/hi10.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/pr01.lis.gz b/web/funnelweb/answers/pr01.lis.gz
new file mode 100644
index 0000000000..b21d74c027
--- /dev/null
+++ b/web/funnelweb/answers/pr01.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/pr02.lis.gz b/web/funnelweb/answers/pr02.lis.gz
new file mode 100644
index 0000000000..bf9f9c1668
--- /dev/null
+++ b/web/funnelweb/answers/pr02.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/pr03.lis.gz b/web/funnelweb/answers/pr03.lis.gz
new file mode 100644
index 0000000000..574435fd64
--- /dev/null
+++ b/web/funnelweb/answers/pr03.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/pr04.lis.gz b/web/funnelweb/answers/pr04.lis.gz
new file mode 100644
index 0000000000..9762e8b146
--- /dev/null
+++ b/web/funnelweb/answers/pr04.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/pr05.lis.gz b/web/funnelweb/answers/pr05.lis.gz
new file mode 100644
index 0000000000..6c0be925a2
--- /dev/null
+++ b/web/funnelweb/answers/pr05.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/pr06.lis.gz b/web/funnelweb/answers/pr06.lis.gz
new file mode 100644
index 0000000000..a87149e59f
--- /dev/null
+++ b/web/funnelweb/answers/pr06.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/pr07.lis.gz b/web/funnelweb/answers/pr07.lis.gz
new file mode 100644
index 0000000000..d37347e5f6
--- /dev/null
+++ b/web/funnelweb/answers/pr07.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/pr08.lis.gz b/web/funnelweb/answers/pr08.lis.gz
new file mode 100644
index 0000000000..4fe13cf67d
--- /dev/null
+++ b/web/funnelweb/answers/pr08.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/pr09.lis.gz b/web/funnelweb/answers/pr09.lis.gz
new file mode 100644
index 0000000000..1e98509d3d
--- /dev/null
+++ b/web/funnelweb/answers/pr09.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/pr10.lis.gz b/web/funnelweb/answers/pr10.lis.gz
new file mode 100644
index 0000000000..324d156908
--- /dev/null
+++ b/web/funnelweb/answers/pr10.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc01.lis.gz b/web/funnelweb/answers/sc01.lis.gz
new file mode 100644
index 0000000000..69feaab233
--- /dev/null
+++ b/web/funnelweb/answers/sc01.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc02.lis.gz b/web/funnelweb/answers/sc02.lis.gz
new file mode 100644
index 0000000000..f15e71b21f
--- /dev/null
+++ b/web/funnelweb/answers/sc02.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc03.lis.gz b/web/funnelweb/answers/sc03.lis.gz
new file mode 100644
index 0000000000..3b1fd20003
--- /dev/null
+++ b/web/funnelweb/answers/sc03.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc04.lis.gz b/web/funnelweb/answers/sc04.lis.gz
new file mode 100644
index 0000000000..20f0970781
--- /dev/null
+++ b/web/funnelweb/answers/sc04.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc05.lis.gz b/web/funnelweb/answers/sc05.lis.gz
new file mode 100644
index 0000000000..e2c45f33c0
--- /dev/null
+++ b/web/funnelweb/answers/sc05.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc06.lis.gz b/web/funnelweb/answers/sc06.lis.gz
new file mode 100644
index 0000000000..cf016b54f7
--- /dev/null
+++ b/web/funnelweb/answers/sc06.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc07.lis.gz b/web/funnelweb/answers/sc07.lis.gz
new file mode 100644
index 0000000000..547e342361
--- /dev/null
+++ b/web/funnelweb/answers/sc07.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc08.lis.gz b/web/funnelweb/answers/sc08.lis.gz
new file mode 100644
index 0000000000..df53d3535e
--- /dev/null
+++ b/web/funnelweb/answers/sc08.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc09.lis.gz b/web/funnelweb/answers/sc09.lis.gz
new file mode 100644
index 0000000000..3eb72ff009
--- /dev/null
+++ b/web/funnelweb/answers/sc09.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc10.lis.gz b/web/funnelweb/answers/sc10.lis.gz
new file mode 100644
index 0000000000..3c8cffedee
--- /dev/null
+++ b/web/funnelweb/answers/sc10.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc11.lis.gz b/web/funnelweb/answers/sc11.lis.gz
new file mode 100644
index 0000000000..d2f810fc4c
--- /dev/null
+++ b/web/funnelweb/answers/sc11.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc12.lis.gz b/web/funnelweb/answers/sc12.lis.gz
new file mode 100644
index 0000000000..4fbb18613b
--- /dev/null
+++ b/web/funnelweb/answers/sc12.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc13.lis.gz b/web/funnelweb/answers/sc13.lis.gz
new file mode 100644
index 0000000000..fc935dbacc
--- /dev/null
+++ b/web/funnelweb/answers/sc13.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc14.lis.gz b/web/funnelweb/answers/sc14.lis.gz
new file mode 100644
index 0000000000..9ca7257c19
--- /dev/null
+++ b/web/funnelweb/answers/sc14.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc15.lis.gz b/web/funnelweb/answers/sc15.lis.gz
new file mode 100644
index 0000000000..c62428a69f
--- /dev/null
+++ b/web/funnelweb/answers/sc15.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc16.lis.gz b/web/funnelweb/answers/sc16.lis.gz
new file mode 100644
index 0000000000..e9bb7a1193
--- /dev/null
+++ b/web/funnelweb/answers/sc16.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc17.lis.gz b/web/funnelweb/answers/sc17.lis.gz
new file mode 100644
index 0000000000..3a11210209
--- /dev/null
+++ b/web/funnelweb/answers/sc17.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc18.lis.gz b/web/funnelweb/answers/sc18.lis.gz
new file mode 100644
index 0000000000..86a7b34b70
--- /dev/null
+++ b/web/funnelweb/answers/sc18.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc19.lis.gz b/web/funnelweb/answers/sc19.lis.gz
new file mode 100644
index 0000000000..8d8855b818
--- /dev/null
+++ b/web/funnelweb/answers/sc19.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc20.lis.gz b/web/funnelweb/answers/sc20.lis.gz
new file mode 100644
index 0000000000..43a618228a
--- /dev/null
+++ b/web/funnelweb/answers/sc20.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc21.lis.gz b/web/funnelweb/answers/sc21.lis.gz
new file mode 100644
index 0000000000..922943f328
--- /dev/null
+++ b/web/funnelweb/answers/sc21.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc22.lis.gz b/web/funnelweb/answers/sc22.lis.gz
new file mode 100644
index 0000000000..233798ad72
--- /dev/null
+++ b/web/funnelweb/answers/sc22.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc23.lis.gz b/web/funnelweb/answers/sc23.lis.gz
new file mode 100644
index 0000000000..e7d0879ae6
--- /dev/null
+++ b/web/funnelweb/answers/sc23.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc24.lis.gz b/web/funnelweb/answers/sc24.lis.gz
new file mode 100644
index 0000000000..d925eb847d
--- /dev/null
+++ b/web/funnelweb/answers/sc24.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc25.lis.gz b/web/funnelweb/answers/sc25.lis.gz
new file mode 100644
index 0000000000..c6931f030f
--- /dev/null
+++ b/web/funnelweb/answers/sc25.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc26.lis.gz b/web/funnelweb/answers/sc26.lis.gz
new file mode 100644
index 0000000000..006842cf17
--- /dev/null
+++ b/web/funnelweb/answers/sc26.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc27.lis.gz b/web/funnelweb/answers/sc27.lis.gz
new file mode 100644
index 0000000000..7812e17aa8
--- /dev/null
+++ b/web/funnelweb/answers/sc27.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc28.lis.gz b/web/funnelweb/answers/sc28.lis.gz
new file mode 100644
index 0000000000..94d9db52ff
--- /dev/null
+++ b/web/funnelweb/answers/sc28.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/sc29.lis.gz b/web/funnelweb/answers/sc29.lis.gz
new file mode 100644
index 0000000000..ac1faa7175
--- /dev/null
+++ b/web/funnelweb/answers/sc29.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg01.lis.gz b/web/funnelweb/answers/tg01.lis.gz
new file mode 100644
index 0000000000..331d71741f
--- /dev/null
+++ b/web/funnelweb/answers/tg01.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg01.out.gz b/web/funnelweb/answers/tg01.out.gz
new file mode 100644
index 0000000000..e0e098d9e2
--- /dev/null
+++ b/web/funnelweb/answers/tg01.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg02.lis.gz b/web/funnelweb/answers/tg02.lis.gz
new file mode 100644
index 0000000000..335d50901f
--- /dev/null
+++ b/web/funnelweb/answers/tg02.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg02.out.gz b/web/funnelweb/answers/tg02.out.gz
new file mode 100644
index 0000000000..39400354a4
--- /dev/null
+++ b/web/funnelweb/answers/tg02.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg03.lis.gz b/web/funnelweb/answers/tg03.lis.gz
new file mode 100644
index 0000000000..c3eb27b6b1
--- /dev/null
+++ b/web/funnelweb/answers/tg03.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg03.out.gz b/web/funnelweb/answers/tg03.out.gz
new file mode 100644
index 0000000000..b95f5b8893
--- /dev/null
+++ b/web/funnelweb/answers/tg03.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg04.lis.gz b/web/funnelweb/answers/tg04.lis.gz
new file mode 100644
index 0000000000..340f2d7be6
--- /dev/null
+++ b/web/funnelweb/answers/tg04.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg04.out.gz b/web/funnelweb/answers/tg04.out.gz
new file mode 100644
index 0000000000..ccb3ec3519
--- /dev/null
+++ b/web/funnelweb/answers/tg04.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg05.lis.gz b/web/funnelweb/answers/tg05.lis.gz
new file mode 100644
index 0000000000..f6e74f3fce
--- /dev/null
+++ b/web/funnelweb/answers/tg05.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg05.out.gz b/web/funnelweb/answers/tg05.out.gz
new file mode 100644
index 0000000000..dbb88fc6fd
--- /dev/null
+++ b/web/funnelweb/answers/tg05.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg06.lis.gz b/web/funnelweb/answers/tg06.lis.gz
new file mode 100644
index 0000000000..a09c01a603
--- /dev/null
+++ b/web/funnelweb/answers/tg06.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg06.out.gz b/web/funnelweb/answers/tg06.out.gz
new file mode 100644
index 0000000000..3965a85929
--- /dev/null
+++ b/web/funnelweb/answers/tg06.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg07.lis.gz b/web/funnelweb/answers/tg07.lis.gz
new file mode 100644
index 0000000000..4f31f56a92
--- /dev/null
+++ b/web/funnelweb/answers/tg07.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg07.out.gz b/web/funnelweb/answers/tg07.out.gz
new file mode 100644
index 0000000000..efb5cbcda8
--- /dev/null
+++ b/web/funnelweb/answers/tg07.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg08.lis.gz b/web/funnelweb/answers/tg08.lis.gz
new file mode 100644
index 0000000000..153b15af71
--- /dev/null
+++ b/web/funnelweb/answers/tg08.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg08.out.gz b/web/funnelweb/answers/tg08.out.gz
new file mode 100644
index 0000000000..288cb8eec6
--- /dev/null
+++ b/web/funnelweb/answers/tg08.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg09.lis.gz b/web/funnelweb/answers/tg09.lis.gz
new file mode 100644
index 0000000000..82622f603e
--- /dev/null
+++ b/web/funnelweb/answers/tg09.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/tg09.out.gz b/web/funnelweb/answers/tg09.out.gz
new file mode 100644
index 0000000000..80cf8c6edd
--- /dev/null
+++ b/web/funnelweb/answers/tg09.out.gz
Binary files differ
diff --git a/web/funnelweb/answers/wv01.lis.gz b/web/funnelweb/answers/wv01.lis.gz
new file mode 100644
index 0000000000..c2f97b8b71
--- /dev/null
+++ b/web/funnelweb/answers/wv01.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/wv01.tex.gz b/web/funnelweb/answers/wv01.tex.gz
new file mode 100644
index 0000000000..96c2d9f760
--- /dev/null
+++ b/web/funnelweb/answers/wv01.tex.gz
Binary files differ
diff --git a/web/funnelweb/answers/wv02.lis.gz b/web/funnelweb/answers/wv02.lis.gz
new file mode 100644
index 0000000000..1704fb3156
--- /dev/null
+++ b/web/funnelweb/answers/wv02.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/wv02.tex.gz b/web/funnelweb/answers/wv02.tex.gz
new file mode 100644
index 0000000000..0884519b8a
--- /dev/null
+++ b/web/funnelweb/answers/wv02.tex.gz
Binary files differ
diff --git a/web/funnelweb/answers/wv03.lis.gz b/web/funnelweb/answers/wv03.lis.gz
new file mode 100644
index 0000000000..5881cfb3d7
--- /dev/null
+++ b/web/funnelweb/answers/wv03.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/wv03.tex.gz b/web/funnelweb/answers/wv03.tex.gz
new file mode 100644
index 0000000000..98768dfe81
--- /dev/null
+++ b/web/funnelweb/answers/wv03.tex.gz
Binary files differ
diff --git a/web/funnelweb/answers/wv04.lis.gz b/web/funnelweb/answers/wv04.lis.gz
new file mode 100644
index 0000000000..f792564b7d
--- /dev/null
+++ b/web/funnelweb/answers/wv04.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/wv04.tex.gz b/web/funnelweb/answers/wv04.tex.gz
new file mode 100644
index 0000000000..7c066f9db3
--- /dev/null
+++ b/web/funnelweb/answers/wv04.tex.gz
Binary files differ
diff --git a/web/funnelweb/answers/wv05.lis.gz b/web/funnelweb/answers/wv05.lis.gz
new file mode 100644
index 0000000000..4387242794
--- /dev/null
+++ b/web/funnelweb/answers/wv05.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/wv05.tex.gz b/web/funnelweb/answers/wv05.tex.gz
new file mode 100644
index 0000000000..62426f006a
--- /dev/null
+++ b/web/funnelweb/answers/wv05.tex.gz
Binary files differ
diff --git a/web/funnelweb/answers/wv06.lis.gz b/web/funnelweb/answers/wv06.lis.gz
new file mode 100644
index 0000000000..93be3991c8
--- /dev/null
+++ b/web/funnelweb/answers/wv06.lis.gz
Binary files differ
diff --git a/web/funnelweb/answers/wv06.tex.gz b/web/funnelweb/answers/wv06.tex.gz
new file mode 100644
index 0000000000..2fff978580
--- /dev/null
+++ b/web/funnelweb/answers/wv06.tex.gz
Binary files differ
diff --git a/web/funnelweb/archive_has_moved.txt b/web/funnelweb/archive_has_moved.txt
new file mode 100644
index 0000000000..82169ebf0f
--- /dev/null
+++ b/web/funnelweb/archive_has_moved.txt
@@ -0,0 +1,7 @@
+21-Jan-1997: The FunnelWeb FTP archive has moved to:
+
+ ftp://ftp.ross.net/clients/ross/funnelweb/
+
+There is now also a FunnelWeb web at:
+
+ http://www.ross.net/funnelweb/
diff --git a/web/funnelweb/examples/0readme b/web/funnelweb/examples/0readme
new file mode 100644
index 0000000000..b75984d752
--- /dev/null
+++ b/web/funnelweb/examples/0readme
@@ -0,0 +1,171 @@
+
+A C Exceptions Package Written Using the FunnelWeb Literate Programming Tool
+============================================================================
+Date : 29 September 1993.
+Author : Ross N. Williams (ross@guest.adelaide.edu.au).
+Snail : 16 Lerwick Avenue, Hazelwood Park 5066, Australia.
+Phone : +61 8 379-9217 (24 hours).
+Fax : +61 8 373-4911 (24 hours).
+Status : This covering document is Copyright (C) Ross Williams, 1993.
+ However, permission is granted to make and distribute verbatim
+ copies of this document provided that this information block
+ and copyright notice is included.
+
+
+ ABSTRACT: This document describes the release of a C package that
+ provides Ada-like exceptions for the C programming language. The
+ package is written in a literate style using the FunnelWeb literate
+ programming tool, and so acts not only as a useful C package, but
+ also as an example of a literate program written in a commercial
+ environment. This distribution provides enough dependent files to
+ allow the package to be printed and used without having to install
+ FunnelWeb.
+
+
+Introduction
+------------
+Since releasing my literate programming tool FunnelWeb over one year
+ago, I have been aware of the pressing need for an example program
+written using FunnelWeb. Despite the fact that I have written ALL my
+code since that time using FunnelWeb, I haven't felt motivated to
+release any of the code, partly because most of it is proprietary, and
+partly because I didn't want to have to go through the detail of
+extracting and shipping the header files upon which the published code
+would depend.
+
+Recently, however, I identified a package that I felt motivated to
+publish for three reasons. First, it is a package that many C
+programmers could find extremely useful. Second, it is a tricky
+package and so it demonstrates very well the benefits of literate
+programming without in any way being a contrived example. Third, being
+a low-level package, it does not depend on many other packages or
+header files (only my style file and a tiny assertions package). For
+these reasons I have decided to make the package public. I am hoping
+that the package will not only act as a useful piece of software for C
+programmers, but will also act as a flagship example for FunnelWeb and
+literate programming in general.
+
+
+Brief Package Description
+-------------------------
+The package is written in C and provides a very clean and safe
+implementation of Ada-like exceptions for the C programming language.
+The package is implemented using the ANSI standard setjmp and longjmp
+functions.
+
+Here is an example of the sort of facility the package provides. The
+example is contrived, but gives a taste of what the package can do.
+The first line is the declaration of the exception and appears in the
+variable declaration section.
+
+ EX_LOCAL(read_err,"read_err: Error reading an input file.");
+ ...
+ EX_BEGIN
+ while (more_input(input))
+ {
+ read_file(input,buffer);
+ write_output(output,buffer);
+ }
+ EX_FORGET
+ EX_WHEN(read_err)
+ error_flag = TRUE;
+ fprintf(logfile,"Read error. Aborting read.");
+ file_close(input);
+ EX_END
+
+
+A "Normal" Package
+------------------
+An important aspect of this publication is that this exceptions
+package was not in any way "polished" for publication. The exceptions
+package was chosen because it is a tricky package and demonstrates the
+use of literate programming well (other, more boring, packages are
+quite-rightly less-intensely documented). But apart from this aspect,
+the literate programming style embodied in "except.fw" is
+representative of the way I normally do programming, and if you
+looked, you would find a dozen or so similarly-prepared modules in my
+personal C library. In fact the exceptions package was prepared in a
+text editor (using FunnelWeb to generate except.h and except.c and
+ex_test.c) without ever generating except.tex, or printing or
+previewing the typeset documentation at all. The only concession made
+to publication was that just before publication, I typeset and printed
+except.tex once (just to make sure that the whole document wasn't set
+in italics or something :-) and subsequently corrected 23 minor
+grammatical and spelling errors in the documentation parts of the
+document before shipping.
+
+This exception package and other packages like it were constructed as
+part of the development of a commercial product which my company
+Rocksoft^tm Pty Ltd intends to release "real soon now". Thus, this
+exceptions package represents the practical use of FunnelWeb in a
+real commercial environment.
+
+How To Print The Package
+------------------------
+To print the package, FTP the file "except.tex" OR "except.ps" from
+ftp.adelaide.edu.au/pub/funnelweb/examples/except.tex (or .ps) and
+print out a copy of the FunnelWeb-prepared documentation. The document
+is 43 pages long (the actual code is much shorter).
+
+If you like what you read, you can then FTP the other files from the
+same directory and start using the package. You don't need FunnelWeb
+to print or use the package, as I have done all the FunnelWeb
+processing for you. The C package itself is embodied in except.h and
+except.c which in turn require style.h and as.h and as.c. All of
+these files are supplied.
+
+FunnelWeb itself is available in "ftp.adelaide.edu.au/pub/funnelweb/".
+
+Portability
+-----------
+So far I have only compiled and tested this package on a Macintosh
+using THINK C. However, I expect it to be fairly portable, as I have
+become very aware of portability issues in the last few years, and
+this sensitivity should manifest itself in the code.
+
+If you do decide to FTP and compile the source code for the exceptions
+package, even if you do encounter one or two portability problems, the
+test suite provided in ex_test.c will provide assurance that the
+package is working.
+
+Summary of Files
+----------------
+The following table describes the files in the distribution. Each file
+is either "Source" (i.e. hand written) or was generated from another
+file. "except.h", "except.c", "ex_text.c", and "except.tex" were all
+generated by applying FunnelWeb to the file "except.fw" using the
+command "fw except -t". "except.ps" was generated from "except.tex"
+using TeX and a .dvi-to-PostScript conversion program (OzTeX/OzTeX in
+this case).
+
+Although the exceptions package is basically self-contained in
+except.fw, the code it generates is written using my normal C style
+and so is dependent on two external packages: my assertions package
+(as) and my style header file. Instead of incorporating these packages
+into the exceptions package, I have chosen to provide stripped down
+versions of these support files with the exceptions package. These two
+packages provide a few minor stylistic definitions. I decided not to
+ship FunnelWebized forms of these files because 1) I didn't want to
+detract attention from the main exception package, 2) they were big
+and messy and only part of them was required, 3) they were remenants
+from the non-FunnelWebized FunnelWeb source code itself, and for this
+reason have so far eluded FunnelWebization in my C library (i.e.
+FunnelWebized forms don't yet exist :-).
+
++------------+---------------------------------------------------------------+
+| Gen From | File Description |
++------------+---------------------------------------------------------------+
+| Source | 0README - This summary file. |
+| Source | as.c - Assertion package implementation file. |
+| Source | as.h - Assertion package specification file. |
+| except.fw | except.c - Exceptions package implementation file. |
+| Source | except.fw - FunnelWeb source file for exceptions package. |
+| except.fw | except.h - Exceptions package specification file. |
+| except.tex | except.ps - PostScript file with typeset form of except.fw |
+| except.fw | except.tex - TeX file containing a typeset form of except.fw. |
+| except.fw | ex_test.c - Test program for the exceptions package. |
+| Source | style.h - Style header file. |
++------------+---------------------------------------------------------------+
+
+--<End of Announcement>--
+
diff --git a/web/funnelweb/examples/as.c b/web/funnelweb/examples/as.c
new file mode 100644
index 0000000000..fa46050994
--- /dev/null
+++ b/web/funnelweb/examples/as.c
@@ -0,0 +1,52 @@
+/******************************************************************************/
+/* Start of as.c */
+/******************************************************************************/
+/*
+
+This assertions package is a stripped down version of the one I usually
+use. It was stripped down for distribution in support of the exceptions
+package.
+
+This file is distributed without warranty and was placed in the public
+domain by its author Ross Williams on 29 September 1993.
+
+*/
+/******************************************************************************/
+
+#include "style.h"
+#include "as.h"
+
+EXPORT void as_bomb(message)
+char *message;
+{
+ fprintf(stderr,"%s\n",message);
+ fprintf(stderr,"An assertion has failed! See the line above.\n");
+ fprintf(stderr,"Press return to abort the program>\n");
+ {
+ int ch=getchar();
+ /* If the user types C, continue the program. */
+ /* However, catch the end of line too, as this is line-based input. */
+ if ((ch == 'C') || (ch == 'c'))
+ {
+ while (getchar() != EOL);
+ return;
+ }
+ }
+ exit(EXIT_FAILURE);
+}
+
+EXPORT void as_wr (mess)
+string mess;
+{
+ printf("%s",mess);
+}
+
+EXPORT void as_wl (mess)
+string mess;
+{
+ printf("%s\n",mess);
+}
+
+/******************************************************************************/
+/* End of as.c */
+/******************************************************************************/
diff --git a/web/funnelweb/examples/as.h b/web/funnelweb/examples/as.h
new file mode 100644
index 0000000000..76520f99cd
--- /dev/null
+++ b/web/funnelweb/examples/as.h
@@ -0,0 +1,46 @@
+/******************************************************************************/
+/* Start of as.h */
+/******************************************************************************/
+/*
+
+This assertions package is a stripped down version of the one I usually
+use. It was stripped down for distribution in support of the exceptions
+package.
+
+Hot assertions are used for assertions in program hot spots. Cold assertions
+are used in places where speed is unaffected by assertion code.
+
+This file is distributed without warranty and was placed in the public
+domain by its author Ross Williams on 29 September 1993.
+
+*/
+/******************************************************************************/
+
+/* Ensure that the body of this header file is included at most once. */
+#ifndef DONE_AS
+#define DONE_AS
+
+#include "style.h"
+
+#define AS_DOHOT 1
+EXPORT void as_bomb P_((char *));
+#define as_cold(e,s) {if (!(e)) as_bomb(s);}
+
+#if AS_DOHOT
+#define as_hot(e,s) {if (!(e)) as_bomb(s);}
+#define AS_HCODE(CODE) {CODE}
+#else
+#define as_hot(e,s) {}
+#define AS_HCODE(CODE) {}
+#endif
+
+#define AS_CCODE(CODE) {CODE}
+
+EXPORT void as_wr P_((string)); /* Write string without terminating EOL. */
+EXPORT void as_wl P_((string)); /* Write string with terminating EOL. */
+
+#endif
+
+/******************************************************************************/
+/* End of as.h */
+/******************************************************************************/
diff --git a/web/funnelweb/examples/ex_test.c b/web/funnelweb/examples/ex_test.c
new file mode 100644
index 0000000000..13109039f3
--- /dev/null
+++ b/web/funnelweb/examples/ex_test.c
@@ -0,0 +1,454 @@
+
+
+/*************************************************************************/
+/* Package name : Except. */
+/* Version : 1.0 */
+/* Completed : April 1993. */
+/* Released : 29 September 1993. */
+/* First created : This package was first created in April 1993. */
+/* Summary : This package provides Ada-like exceptions for C. */
+/* Components : except.fw - FunnelWeb source file. */
+/* except.h - Exported header file. */
+/* except.c - Implementation file. */
+/* ex_test.c - C test program. */
+/* Requires : style.h, as.h, as.c. */
+/* Author : Ross N. Williams (ross@guest.adelaide.edu.au) */
+/* Rocksoft^tm Pty Ltd */
+/* 16 Lerwick Avenue, Hazelwood Park 5066, Australia. */
+/* FTP Archive : This file can be found in */
+/* "ftp.adelaide.edu.au/pub/funnelweb/examples/" */
+/* Disclaimer : This program is distributed WITHOUT ANY WARRANTY; */
+/* without even the implied warranty of MERCHANTABILITY */
+/* or FITNESS FOR A PARTICULAR PURPOSE. */
+/* Copyright : Copyright (C) Ross Williams 1993. */
+/* However, permission is granted for anyone to copy, */
+/* modify, and distribute this work for any purpose, */
+/* commercial or non-commercial, so long as this notice */
+/* is included verbatim, and so long as all */
+/* modifications are recorded in the change log below. */
+/* Changes : Please log any changes to this software either in the */
+/* originating FunnelWeb source file, or, if you must, */
+/* in the C source files produced from the FunnelWeb */
+/* file. */
+/* --<Start of Change Log>-- */
+/* ??-Apr-93: RNW: Created this package. */
+/* 29-Sep-93: RNW: Released this package. */
+/* --<End of Change Log>-- */
+/*************************************************************************/
+
+
+#include "style.h"
+#include "except.h"
+#include "as.h"
+
+EX_LOCAL(sloth_ex,"Sloth exception");
+EX_LOCAL(walrus_ex,"Walrus exception");
+
+GLOVAR bool flag;
+
+
+LOCAL void sc01 P_((void));
+LOCAL void sc01 ()
+{
+ printf("Test SC01: Exception block with no exceptions raised.\n");
+
+ /* The NULL exception block should be OK. */
+ EX_BEGIN
+ EX_FORGET
+ EX_END
+
+ /* Now put some code in the normal section. */
+ flag=FALSE;
+ EX_BEGIN
+ flag=TRUE;
+ EX_FORGET
+ EX_END
+ as_cold(flag,"sc01: First flag block test failed.");
+
+ /* Make sure the EX_OTHERS branch only applies to exceptions. */
+ flag=FALSE;
+ EX_BEGIN
+ flag=TRUE;
+ EX_FORGET
+ EX_OTHERS
+ as_bomb("sc01: Raise failed.");
+ EX_END
+ as_cold(flag,"sc01: Second flag block test failed.");
+}
+
+
+LOCAL void sc02 P_((void));
+LOCAL void sc02 ()
+{
+ printf("Test SC02: Exception caught within immediate block.\n");
+ flag = FALSE;
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc02: Raise failed.");
+ EX_FORGET
+ EX_WHEN(sloth_ex) flag=TRUE;
+ EX_END
+ as_cold(flag,"sc02: Exception was not caught by local block.");
+}
+
+
+LOCAL void sc03 P_((void));
+LOCAL void sc03 ()
+{
+ printf("Test SC03: Exception is caught by OTHERS clause.\n");
+ flag = FALSE;
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc03: Raise failed.");
+ EX_FORGET
+ EX_OTHERS flag=TRUE;
+ EX_END
+ as_cold(flag,"sc03: Exception was not caught by EX_OTHERS clause.");
+}
+
+
+LOCAL void sc04 P_((void));
+LOCAL void sc04 ()
+{
+ printf("Test SC04: Exception is caught by nested exception block.\n");
+
+ /* Try a simple nested handler. */
+ flag=FALSE;
+ EX_BEGIN
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc04: Raise failed (1).");
+ EX_FORGET
+ EX_WHEN(walrus_ex)
+ as_bomb("sc04: Walrus exception caught (1).");
+ EX_END
+ EX_FORGET
+ EX_WHEN(sloth_ex) flag=TRUE;
+ EX_WHEN(walrus_ex) as_bomb("sc04: Walrus exception caught (x).");
+ EX_END
+ as_cold(flag,"sc04: First nested test failed.");
+
+ /* Test a re-raise. */
+ flag=FALSE;
+ EX_BEGIN
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc04: Raise failed (2).");
+ EX_FORGET
+ EX_WHEN(sloth_ex)
+ EX_RAISE(walrus_ex)
+ as_bomb("sc04: Raise failed (3).");
+ EX_WHEN(walrus_ex)
+ as_bomb("sc04: Walrus exception caught (2).");
+ EX_END
+ EX_FORGET
+ EX_WHEN(sloth_ex)
+ as_bomb("sc04: Sloth exception escaped.");
+ EX_WHEN(walrus_ex)
+ flag=TRUE;
+ EX_END
+ as_cold(flag,"sc04: Second nested test failed.");
+}
+
+
+LOCAL void sc05 P_((void));
+LOCAL void sc05 ()
+{
+ STAVAR bool flag2;
+ printf("Test SC05: Single OTHERS handler reraises current exception.\n");
+ flag=FALSE;
+ flag2=FALSE;
+ EX_BEGIN
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc05: Raise failed (2).");
+ EX_FORGET
+ EX_OTHERS
+ flag=TRUE;
+ EX_RAISE(EX_ID);
+ as_bomb("sc05: Raise failed (3).");
+ EX_END
+ EX_FORGET
+ EX_WHEN(sloth_ex)
+ flag2=TRUE;
+ EX_OTHERS
+ as_bomb("sc05: Exception escaped.");
+ EX_END
+ as_cold(flag ,"sc05: OTHERS test failed (1).");
+ as_cold(flag2,"sc05: OTHERS test failed (2).");
+}
+
+
+LOCAL void sc06 P_((void));
+LOCAL void sc06 ()
+{
+ printf("Test SC06: Handlers all GOTO same code.\n");
+ flag=FALSE;
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc06: Raise failed.");
+ EX_FORGET
+ EX_WHEN(sloth_ex) goto handle;
+ EX_WHEN(walrus_ex)
+ as_bomb("sc06: Walrus exception went off.");
+ handle:
+ flag=TRUE;
+ EX_OTHERS
+ as_bomb("sc06: Exception escaped to OTHERS.");
+ EX_END
+ as_cold(flag,"sc06: GOTO test failed.");
+}
+
+
+LOCAL void sc07 P_((void));
+LOCAL void sc07 ()
+{
+ printf("Test SC07: Exercise EX_INFO.\n");
+ EX_INFO = 3;
+ as_cold(EX_INFO == 3,"sc07: EX_INFO test failed.");
+}
+
+
+LOCAL void sc08 P_((void));
+LOCAL void sc08 ()
+{
+ printf("Test SC08: Exercise ex_str.\n");
+ as_cold(ex_str(sloth_ex) == sloth_ex,"sc08: Failed.");
+}
+
+
+LOCAL void sc09 P_((void));
+LOCAL void sc09 ()
+{
+ printf("Test SC09: Test EX_POP.\n");
+ flag=FALSE;
+ EX_BEGIN
+ EX_BEGIN
+ EX_POP; goto finish;
+ EX_FORGET
+ EX_WHEN(sloth_ex) as_bomb("sc09: Inner catcher caught the sloth.");
+ EX_END
+ finish: EX_RAISE(sloth_ex);
+ EX_FORGET
+ EX_WHEN(sloth_ex) flag=TRUE;
+ EX_END
+ as_cold(flag,"sc09: Sloth exception failed to work.");
+ as_cold(_EX_CURR == NULL,"sc09: EX_POP failed to pop correctly.");
+}
+
+
+
+LOCAL void fa01 P_((void));
+LOCAL void fa01 ()
+{
+ printf("Test FA01: Unhandled Exception\n");
+ printf("------------------------------\n");
+ printf("This test raises the sloth exception but doesn't handle it.\n");
+ printf("The result should be an \"unhandled exception\" bomb specifying\n");
+ printf("the sloth exception. Here we go...\n");
+ printf("\n");
+ EX_RAISE(sloth_ex);
+ as_wl ("FA01 FAILED: the exception package did not catch the\n");
+ as_bomb("unhandled sloth exception.\n");
+}
+
+
+LOCAL void fa02 P_((void));
+LOCAL void fa02 ()
+{
+ printf("Test FA02: Double EX_POP\n");
+ printf("------------------------\n");
+ printf("This test executes two calls to EX_POP within the normal code of\n");
+ printf("an exception block. The second one should cause a\n");
+ printf("\"context stack is empty\" bomb. Here we go...\n");
+ printf("\n");
+ EX_BEGIN
+ EX_POP;
+ EX_POP;
+ as_bomb("FA02 FAILED: Second EX_POP did not cause bomb (1).");
+ EX_FORGET
+ EX_END
+ as_bomb("FA02 FAILED: Second EX_POP did not cause bomb (2).");
+}
+
+
+LOCAL void fa03 P_((void));
+LOCAL void fa03 ()
+{
+ printf("Test FA03: EX_POP Followed by Normal Termination\n");
+ printf("------------------------------------------------\n");
+ printf("This test executes a call to EX_POP then falls through to the\n");
+ printf("end of the normal code of the exception block. The result should\n");
+ printf("be a \"context stack is empty\" bomb. Here we go...\n");
+ printf("\n");
+ EX_BEGIN
+ EX_POP;
+ EX_FORGET
+ EX_END
+ as_bomb("FA03 FAILED: Fallthough after EX_POP did not cause bomb.");
+}
+
+
+LOCAL void fa04 P_((void));
+LOCAL void fa04 ()
+{
+ printf("Test FA04: Exit a block without EX_POPing\n");
+ printf("-----------------------------------------\n");
+ printf("This test exits an exception block using a goto without first\n");
+ printf("EX_POPing. The exception block is nested within another, and this\n");
+ printf("test is to make sure that the outer block detects that it is\n");
+ printf("popping the wrong context. The result should be a\n");
+ printf("\"not current context\" bomb. Here we go...\n");
+ printf("\n");
+ EX_BEGIN
+ EX_BEGIN
+ goto there;
+ EX_FORGET
+ EX_END
+ there:
+ EX_FORGET
+ EX_END
+ as_bomb("FA04 FAILED: Outer block FAILED to detect stack misalignment.");
+}
+
+
+LOCAL void fa05_x P_((void));
+LOCAL void fa05_x ()
+{
+ EX_BEGIN
+ return;
+ EX_FORGET
+ EX_END
+}
+
+LOCAL void fa05 P_((void));
+LOCAL void fa05 ()
+{
+ printf("Test FA05: Target Context Does Not Exist\n");
+ printf("----------------------------------------\n");
+ printf("This test exits an exception block from within a function using\n");
+ printf("a return statement. Thus, the context remains stacked even though\n");
+ printf("the enclosing C block has terminated. This test checks to see\n");
+ printf("whether this problem is detected next time an exception is raised.\n");
+ printf("The result should be an illegitimate context error. Here we go...\n");
+ printf("\n");
+ EX_BEGIN
+ fa05_x();
+ EX_RAISE(sloth_ex);
+ as_bomb("FA05 FAILED: Failed to raise sloth.");
+ EX_FORGET
+ EX_WHEN(sloth_ex)
+ as_bomb("FA05 FAILED: Sloth exception was raised.");
+ EX_END
+ as_bomb("FA05 FAILED: Costruct terminated normally - it shouldn't have.");
+}
+
+
+LOCAL void fa06 P_((void));
+LOCAL void fa06 ()
+{
+ printf("Test FA06: Target Context Does Not Exist (Fallthrough)\n");
+ printf("------------------------------------------------------\n");
+ printf("This test is identical to test FA05 except that it does not\n");
+ printf("raise an exception in the outer block. The result should be a\n");
+ printf("\"not current context\" error. Here we go...\n");
+ printf("\n");
+ EX_BEGIN
+ fa05_x();
+ EX_FORGET
+ EX_END
+ as_bomb("FA06 FAILED: Costruct terminated normally - it shouldn't have.");
+}
+
+
+LOCAL void fa07 P_((void));
+LOCAL void fa07 ()
+{
+ as_bomb("Test FA07: Test FA06 is the last test.");
+}
+
+
+LOCAL void fa08 P_((void));
+LOCAL void fa08 ()
+{
+ as_bomb("Test FA08: Test FA06 is the last test.");
+}
+
+
+LOCAL void fa09 P_((void));
+LOCAL void fa09 ()
+{
+ as_bomb("Test FA09: Test FA06 is the last test.");
+}
+
+
+main()
+{
+ char ch;
+
+ printf("Test Program for the EXCEPT Package\n");
+ printf("===================================\n");
+ printf("This test program provides a number of different tests. Because\n");
+ printf("some tests provoke the package to bomb on purpose, this test\n");
+ printf("program must be run a number of times, once for each test.\n");
+ printf("The 0 test performs a group of tests that are not supposed to\n");
+ printf("fail. The 1..9 tests each perform a test that is supposed to\n");
+ printf("bomb the program if the test succeeds. The 0 test should be run\n");
+ printf("with the package compiled with both _EX_FAST==FALSE and\n");
+ printf("_EX_FAST==TRUE. The 1..9 tests should use only _EX_FAST==FALSE.\n");
+ printf("\n");
+ if (_EX_FAST)
+ printf("Current value of EX_FAST == TRUE.\n");
+ else
+ printf("Current value of EX_FAST == FALSE.\n");
+ printf("\n");
+ printf("Enter 0 for success tests, or 1..9 for one of nine fail tests>");
+ ch=getchar(); printf("\n");
+ if (ch == '0')
+ {
+ printf("Success Tests\n");
+ printf("-------------\n");
+ printf("The following tests (sc01..sc09) test the normal features\n");
+ printf("the exceptions package. You should see nine success lines\n");
+ printf("appear on the screen. If the package bombs during this test,\n");
+ printf("then something is wrong and should be fixed.\n");
+ printf("\n");
+ sc01();
+ sc02();
+ sc03();
+ sc04();
+ sc05();
+ sc06();
+ sc07();
+ sc08();
+ sc09();
+ printf("\n");
+ printf("All of the success tests SUCCEEDED.\n");
+ }
+ else
+ {
+ if (_EX_FAST)
+ {
+ as_wl("Error in test configuration. An attempt was made to perform");
+ as_wl("a 1..9 test with _EX_FAST==TRUE. This does not make sense as");
+ as_wl("these tests test the error checking capability of the package");
+ as_wl("and _EX_FAST=TRUE has all error checking turned off!");
+ as_bomb("Please recompile with _EX_FAST==FALSE and try again.");
+ }
+ switch (ch)
+ {
+ case '1': fa01();
+ case '2': fa02();
+ case '3': fa03();
+ case '4': fa04();
+ case '5': fa05();
+ case '6': fa06();
+ case '7': fa07();
+ case '8': fa08();
+ case '9': fa09();
+ default:
+ printf("\nCharacter entered was not 0..9. Aborting...\n");
+ }
+ }
+}
+
diff --git a/web/funnelweb/examples/except.c b/web/funnelweb/examples/except.c
new file mode 100644
index 0000000000..1679610651
--- /dev/null
+++ b/web/funnelweb/examples/except.c
@@ -0,0 +1,131 @@
+
+
+/*************************************************************************/
+/* Package name : Except. */
+/* Version : 1.0 */
+/* Completed : April 1993. */
+/* Released : 29 September 1993. */
+/* First created : This package was first created in April 1993. */
+/* Summary : This package provides Ada-like exceptions for C. */
+/* Components : except.fw - FunnelWeb source file. */
+/* except.h - Exported header file. */
+/* except.c - Implementation file. */
+/* ex_test.c - C test program. */
+/* Requires : style.h, as.h, as.c. */
+/* Author : Ross N. Williams (ross@guest.adelaide.edu.au) */
+/* Rocksoft^tm Pty Ltd */
+/* 16 Lerwick Avenue, Hazelwood Park 5066, Australia. */
+/* FTP Archive : This file can be found in */
+/* "ftp.adelaide.edu.au/pub/funnelweb/examples/" */
+/* Disclaimer : This program is distributed WITHOUT ANY WARRANTY; */
+/* without even the implied warranty of MERCHANTABILITY */
+/* or FITNESS FOR A PARTICULAR PURPOSE. */
+/* Copyright : Copyright (C) Ross Williams 1993. */
+/* However, permission is granted for anyone to copy, */
+/* modify, and distribute this work for any purpose, */
+/* commercial or non-commercial, so long as this notice */
+/* is included verbatim, and so long as all */
+/* modifications are recorded in the change log below. */
+/* Changes : Please log any changes to this software either in the */
+/* originating FunnelWeb source file, or, if you must, */
+/* in the C source files produced from the FunnelWeb */
+/* file. */
+/* --<Start of Change Log>-- */
+/* ??-Apr-93: RNW: Created this package. */
+/* 29-Sep-93: RNW: Released this package. */
+/* --<End of Change Log>-- */
+/*************************************************************************/
+
+#include "except.h"
+#include "as.h"
+
+#if !_EX_THRD
+GLOVAR _ex_cx_t *_ex_curr = NULL;
+GLOVAR p_ex_t _ex_id;
+GLOVAR ptrint _ex_info;
+#endif
+
+
+EXPORT string ex_str (p_ex) p_ex_t p_ex; {return p_ex;}
+
+LOCAL void ex_bomb P_((void));
+LOCAL void ex_bomb ()
+{
+ char s[100];
+ as_wr(" Exception desc is : \""); as_wr(EX_ID); as_wl("\".");
+ as_wr(" Exception id is : ");
+ sprintf(s,"%lu (= %lX)",ULONG(EX_ID),ULONG(EX_ID)); as_wl(s);
+ as_wr(" Exception info is : ");
+ sprintf(s,"%lu (= %lX)",ULONG(EX_INFO),ULONG(EX_INFO)); as_wl(s);
+ as_bomb("Aborting program after exception error.");
+}
+
+
+EXPORT void _exrai (p_ex)
+p_ex_t p_ex;
+{
+#if _EX_FAST
+ as_bomb("_exrai: This function should not be called with _EX_FAST==TRUE.");
+#else
+ _ex_cx_t * p_curr = _EX_CURR;
+ _EX_ID = p_ex;
+
+ if (p_curr == NULL) {as_wl("_exrai: Unhandled exception."); ex_bomb();}
+
+ if (UWIDE(&p_curr) > UWIDE(&p_curr->_ex_jmbf))
+ {
+ as_wl("_exrai: Target exception context is no longer legitimate.");
+ as_wl(" Exception context resides beneath the top of stack.");
+ as_wl(" This means that earlier on, control must have left an");
+ as_wl(" exception context without first popping its handler.");
+ as_wl(" Look for jumps out of exception contexts that are not");
+ as_wl(" immediately preceded by calls to EX_POP.");
+ ex_bomb();
+ }
+
+ if ((p_curr->_ex_mag1 != _EX_MAG1) || (p_curr->_ex_mag2 != _EX_MAG2))
+ {
+ as_wl("_exrai: Target exception context has been corrupted. This could");
+ as_wl(" be because an exception context wasn't popped, or it");
+ as_wl(" could be just a common garden-variety C corruption :-)");
+ ex_bomb();
+ }
+ longjmp(p_curr->_ex_jmbf,NON_ZERO);
+#endif
+}
+
+
+EXPORT void _expop (p_check)
+_ex_cx_t *p_check;
+{
+#if _EX_FAST
+ as_bomb("_exrai: This function should not be called with _EX_FAST==TRUE.");
+#else
+ _ex_cx_t * p_curr = _EX_CURR;
+
+ if (p_curr != p_check)
+ {
+ if (p_curr == NULL)
+ as_bomb("_expop: Context stack is empty.");
+ else
+ as_bomb("_expop: Top of context stack is not the current context.");
+ }
+
+
+ if ((p_curr->_ex_mag1 != _EX_MAG1) || (p_curr->_ex_mag2 != _EX_MAG2))
+ {
+ as_wl("_ex_rai: Target exception context has been corrupted. This could");
+ as_wl(" be because an exception context wasn't popped, or it");
+ as_wl(" could be just a common garden-variety C corruption :-)");
+ as_bomb("Aborting program after exception error.");
+ }
+
+
+ p_curr->_ex_mag1 = ~_EX_MAG1;
+ p_curr->_ex_mag2 = ~_EX_MAG2;
+
+ _EX_CURR = p_curr->_ex_prev;
+#endif
+}
+
+
diff --git a/web/funnelweb/examples/except.fw b/web/funnelweb/examples/except.fw
new file mode 100644
index 0000000000..cb83fa0539
--- /dev/null
+++ b/web/funnelweb/examples/except.fw
@@ -0,0 +1,2209 @@
+@!******************************************************************************
+@!* except.fw *
+@!******************************************************************************
+
+@t vskip 50 mm
+@t title titlefont centre "Exceptions"
+@t title titlefont centre "Package"
+@t vskip 10 mm
+@t title smalltitlefont centre "by Ross Williams"
+@t title smalltitlefont centre "April 1993"
+@t new_page
+@t vskip 20 mm
+@t title titlefont centre "Contents"
+@t vskip 10 mm
+@t table_of_contents
+@t new_page
+
+@!******************************************************************************
+@!******************************************************************************
+
+@A@<Overview@>
+
+This overview section provides general information about this package.
+
+Processing this file using FunnelWeb will result in the production of the
+specification and implementation files defined below. In addition a test
+program for testing this package will be generated. This FunnelWeb source
+file and the files that it generates are Copyright (C) Ross Williams 1993.
+See the configuration header notice below.
+
+@O@<except.h@>@{@<Specification file@>@+@}
+@O@<except.c@>@{@<Implementation file@>@+@}
+@O@<ex_test.c@>@{@<Test program file@>@+@}
+
+The remainder of this overview section contains only descriptions. It does
+not contain any code.
+
+@!******************************************************************************
+
+@B@<Configuration Header Notice@>
+
+The following notice applies to this FunnelWeb source file as well as to
+the FunnelWeb output files to which it is written.
+
+@$@<Configuration header notice@>@M@{
+/*************************************************************************/
+/* Package name : Except. */
+/* Version : 1.0 */
+/* Completed : April 1993. */
+/* Released : 29 September 1993. */
+/* First created : This package was first created in April 1993. */
+/* Summary : This package provides Ada-like exceptions for C. */
+/* Components : except.fw - FunnelWeb source file. */
+/* except.h - Exported header file. */
+/* except.c - Implementation file. */
+/* ex_test.c - C test program. */
+/* Requires : style.h, as.h, as.c. */
+/* Author : Ross N. Williams (ross@@guest.adelaide.edu.au) */
+/* Rocksoft^tm Pty Ltd */
+/* 16 Lerwick Avenue, Hazelwood Park 5066, Australia. */
+/* FTP Archive : This file can be found in */
+/* "ftp.adelaide.edu.au/pub/funnelweb/examples/" */
+/* Disclaimer : This program is distributed WITHOUT ANY WARRANTY; */
+/* without even the implied warranty of MERCHANTABILITY */
+/* or FITNESS FOR A PARTICULAR PURPOSE. */
+/* Copyright : Copyright (C) Ross Williams 1993. */
+/* However, permission is granted for anyone to copy, */
+/* modify, and distribute this work for any purpose, */
+/* commercial or non-commercial, so long as this notice */
+/* is included verbatim, and so long as all */
+/* modifications are recorded in the change log below. */
+/* Changes : Please log any changes to this software either in the */
+/* originating FunnelWeb source file, or, if you must, */
+/* in the C source files produced from the FunnelWeb */
+/* file. */
+/* --<Start of Change Log>-- */
+/* ??-Apr-93: RNW: Created this package. */
+/* 29-Sep-93: RNW: Released this package. */
+/* --<End of Change Log>-- */
+/*************************************************************************/
+@}
+
+@!******************************************************************************
+
+@B@<Abstract@>
+
+This package provides an @/exceptions@/ facility for C that is very similar to
+the exceptions facility in the Ada programming language. An exception is a
+control-flow event that causes control to be transferred up the stack
+(with the stack unwinding as it goes) until a @/handler@/ for the particular
+exception invoked is found. The exception facility is totally under the
+client's control. The client defines a set of exceptions, and @/raises@/ an
+exception event by calling @{EX_RAISE@}. Other functions defined by the client
+can catch the exceptions by name. The exception facility is useful for
+error handling and package interface definition.
+
+@!******************************************************************************
+
+@B@<Motivation@>
+
+The motivation for creating this package was to provide a simpler, safer, and
+more sophisticated non-local jump facility than is provided by the standard
+ANSI @{setjmp@} (ANSI 7.6.1.1) and @{longjmp@} (7.6.2.1) primitives. In
+particular, the biggest problem with the ANSI functions is that they
+require that the thrower and catcher of the control event be sufficiently
+coordinated to share a single global variable containing the catcher's
+context. The requirement for this link is unacceptable because it precludes
+the use of non-local jumps as an element of the interface of packages
+having an abstract client (unless @{jmpbuf@}s are passed as parameters - yuk!).
+This lack of abstraction results in the following disadvantages:
+
+* A global variable of type @{jmpbuf@} must be agreed upon between thrower
+and catcher for each potential throw. The result is a proliferation of
+global context variables, whose validity at any particular instant is often
+unclear.
+
+* If the programmer wishes to set up a nest of handlers for a particular
+condition, the global @{jmpbuf@} buffer for the condition must be explicitly
+and carefully saved and restored by each function in the nest.
+
+* The interface to @{setjmp@} and @{longjmp@} is a bit raw, requiring
+fiddling with integer values and embedding calls in conditional statements.
+
+A better solution to the problem of non-local jumps is a system of
+exceptions.
+
+@!******************************************************************************
+
+@B@<What is an Exception?@>
+
+An exception is essentially a non-local @{goto@} to the nearest dynamically
+enclosing target label in the stack of suspended functions. To execute an
+exception @{goto@}, one @/raises@/ the exception, for example with a @{raise@}
+statement @{raise sloth_exception;@}. Control is then immediately transferred
+to the nearest dynamically enclosing handler (label) for @{sloth_exception@}.
+
+In fact handlers are not simply labels, but block-structured constructs
+that define an execution zone within which the set of exceptions that they
+handle will be caught. For example, the following exception handling
+anonymous block might appear in a program written in the Ada programming
+language:
+
+@$@<Example of an Ada exception handling block@>@Z@{
+declare
+ n : integer := 2*x+y;
+begin
+ sloth_action(n);
+ walrus_action(n*n);
+exception
+ when sloth_exception => PUT("The sloth exception went off.");
+ when aardvark_exception => PUT("The aardvark exception went off.");
+end
+@}
+
+In the above example, the code between @{declare@} and @{exception@} is
+the code within which exceptions will be caught. The code between
+@{exception@} and @{end@} contains two exception handlers that will catch
+the exceptions @{sloth_exception@} and @{aardvark_exception@} should they
+be raised by the execution of the declarations or @{sloth_action@} or
+@{walrus_action@}. Any other exception that is raised within the controlled
+zone will simply propagate further up the call chain to the nearest handler
+that can handle it.
+
+A most important aspect of the exceptions provided by Ada and this package
+is that an exception propagates to the nearest @/dynamically@/ enclosing
+exception handler. This means that, apart from the shared knowledge of the
+definition of the exception, there is not necessarily any static relationship
+between the function that raises an exception and the function that catches
+it. This makes exceptions both dangerous and powerful. Dangerous because a
+programmer can code a @{raise@} statement with no knowledge of the function
+catching the exception. Powerful, because this very abstraction allows
+packages to raise exceptions that can be caught by abstract clients.
+
+@!******************************************************************************
+
+@B@<Exceptions as Active Statuses@>
+
+Over the years, exceptions have received a lot of bad press and have
+generally been considered to be dangerous things. For example, Tony Hoare,
+in his Turing Award lecture of 1980, when covering the programming
+language Ada, remarked:
+
+@/Gradually these objectives have been sacrificed in favour of power,
+supposedly achieved by a plethora of features and notational conventions,
+many of them unncessary and some of them, like exception handling,
+even dangerous.@/ --- Charles Antony Richard Hoare, Turing Award Speech, 1980.
+
+Certainly exceptions can be dangerous things. However, I believe that, on
+balance, exceptions enhance reliability rather than deteriorating it. The
+reason for this belief is that exceptions @/actively@/ indicate problems,
+whereas their alternative in this capacity, statuses, @/passively@/ indicate
+problems.
+
+To see this, consider the simple example case of a function that is supposed
+to write its argument character to its argument device. This is a
+straightforward operation, unless the device fails in some way, in which case
+this fact must be indicated to the caller. The traditional way of defining such
+a function is to have it return a status indicating whether the call succeeded.
+
+@$@<Example of a function returning a status@>@Z@{
+EXPORT bool writdev P_((dev_t,char));
+/* Returns TRUE upon success, FALSE if the write failed. */
+@}
+
+This results in calling code that should look something like this:
+
+@$@<Example of call to function returning a status@>@Z@{
+if (!writdev(slothdev,'x'))
+ bomb("Sloth device failed - aborting.\n");
+@}
+
+but often looks like this:
+
+@$@<Example of call without checking to a function returning a status@>@Z@{
+writdev(slothdev,'x');
+@}
+
+Code such as this is extremely dangerous because a program written in this
+way might operate correctly for years, but then suddenly start behaving in
+odd ways when undetected errors occur. Unfortunately, it
+is extremely easy to write code such as this, as is easy to forget that
+a particular function even returns a status! Code such as this is quite
+common.
+
+Now consider how @{writdev@} looks if it is defined using an exception to
+take care of the error case:
+
+@$@<Example of a function that uses an exception@>@Z@{
+EXPORT void writdev P_((dev_t,char));
+/* Raises writedev_ex exception if the write fails. */
+@}
+
+By casting the error condition in terms of an exception, the function
+@/by default@/ ensures that something will happen if an error arises.
+In fact, one of two things must happen if the exception is ever raised: either
+the programmer codes a catcher for the exception and deals with it (in which
+case, it will probably be dealt with properly) or the exception propagates
+up out of @{main()@} where it will cause the exceptions package to
+initiate a controlled program bomb describing the unhandled exception.
+Both of these alternatives ensure that the condition is explicitly handled
+which is the important thing.
+
+By using exceptions, the programmer can ensure that @/by default@/ any
+error condition that arises will cause a program bomb. This is such a
+strong safety net that it actually @/legitimizes@/ the no-error checking
+style of programming so criticized earlier. If you are in a hurry to write
+a program and do not wish to bother with error checking, the use of
+functions that raise exceptions upon errors ensures that if the code
+terminates normally, then it has terminated error-free --- even though
+the programmer did not code any checking of return conditions.
+
+Another advantage of exceptions is that they allow whole classes of errors
+that might arise in a span of code to be handled at one point. For example:
+
+@$@<Example of single-point error handling@>@Z@{
+EX_BEGIN
+ f_file_t file1, file2;
+ char line[1000];
+ f_open(file1,read,"sloth.dat");
+ f_open(file2,write,"walrus.dat");
+ while (!f_eof(file1))
+ {
+ f_readline (file1,line,1000);
+ f_writeline(file2,line,1000);
+ }
+ fclose(file1);
+ fclose(file2);
+EX_FORGET
+ EX_WHEN(f_open_ex ) goto f_handle;
+ EX_WHEN(f_read_ex ) goto f_handle;
+ EX_WHEN(f_write_ex) goto f_handle;
+ EX_WHEN(f_close_ex)
+ f_handle:
+ f_delete(file2);
+ printf("Error performing copy.");
+EX_END@}
+
+In the above code, a single exception handler handles all the error conditions
+that might arise during all the file operations. The resultant code is far
+cleaner than the code that would be necessary if the status of each call
+had to be checked independently. Using exceptions, the normal and the
+exceptional cases can each be expressed clearly.
+
+@/Summary:@/ There is no doubt that, when misused, exceptions can be
+an extremely dangerous language construct. However, they also have the
+outstanding quality of enabling functions to be written that @/actively@/
+indicate errors, thus ensuring either that the client code does @/something@/
+about the error, or that the program will bomb with an unhandled exception
+error. In this capacity exceptions act as @/active statuses@/. In addition,
+exceptions allow error handling to be separated from ordinary execution.
+These two properties of exceptions mean that, in my opinion, they improve
+reliability on balance, and are a worthy programming tool.
+
+@!******************************************************************************
+
+@B@<How to Use This Package@>
+
+Using this package is easy - just follow the following steps!
+
+@/STEP 1: Define the exception.@/ Before raising or catching an exception,
+you have to define it and make it visible to every entity that needs to
+refer to the exception. To define it, you need to think of an identifier that
+will be used to represent the exception, and you need to think of a short
+(one-line) description for the exception. Having done this, if you want
+the exception to be visible only within the current program file, insert
+a call to the macro @{EX_LOCAL@} in the variable section. For example:
+
+@$@<Example exception definition@>@Z@{
+EX_LOCAL(buf_full,"buf_full: Buffer is full exception.");
+@}
+
+The first argument is the @/exception identifier@/ and the second argument is
+the @/exception description@/. The @{EX_LOCAL@} macro translates into a
+string constant declaration having the name @{buf_full@} and the value
+@{"buf_full: Buff..."@}. It is important that the exception identifer be
+unique within its scope as it is implemented by an ordinary constant. It
+is also very important that the description of the exception be unique
+within the set of exceptions in the program. If each exception has a unique
+description, then unhandled exceptions (see later) can be easily identified.
+
+If you want the exception to be visible within all clients of the module
+declaring it, replace @{EX_LOCAL@} above with @{EX_EXPORT@} and insert a
+call to @{EX_EXCEPT@} in the header file for the module. @{EX_EXCEPT@}
+requires just the variable name.
+
+@$@<Example exception declaration@>@Z@{
+EX_EXCEPT(buf_full);
+@}
+
+@/STEP 2: Raise the exception.@/ Having completed step 1, you can now raise the
+exception in any module that can see the exception (i.e. the @{.c@} file
+with the @{EX_LOCAL@} or @{EX_EXPORT@}, and any @{.c@} file that includes
+the header file containing the @{EX_EXCEPT@}) simply be calling @{EX_RAISE@}.
+Note: @{EX_RAISE@} is syntactically equivalent to a compound statement.
+
+@$@<Example of raising an exception@>@Z@{
+/* If the buffer is full, raise the full buffer exception. */
+if (bufsiz > BUF_MAX)
+ EX_RAISE(buf_ful);
+@}
+
+The effect of a call to @{EX_RAISE@} is that control will leave the current
+function, and the stack will unwind until a function is encountered whose
+context contains an active exception handler construct that specifies a
+catcher for the exception that has been raised (in this case @{buf_ful@}.
+If no such handler exists, the exception package will bomb the program,
+printing out an error message stating that an exception has not been
+handled, and giving the description of the exception.
+
+@/STEP 3: Catch the exception.@/ Catching exceptions is a little tricker than
+raising them. To catch an exception, you need to specify so in advance
+by enclosing the code that might raise the exception within an @/exception
+block@/ construct provided by the @{EX_@} macros @{EX_BEGIN@}, @{EX_FORGET@},
+@{EX_WHEN@} and @{EX_END@}. Here is an abstract example:
+
+@$@<Exception block syntax@>@Z@{
+EX_BEGIN
+ <Code that might raise an exception>
+EX_FORGET
+ EX_WHEN(<name of exception 1>)
+ <Code to handle exception 1>
+ EX_WHEN(<name of exception 2>)
+ <Code to handle exception 2>
+ EX_WHEN(<name of exception 3>)
+ <Code to handle exception 3>
+EX_END
+@}
+
+The entire context (from @{EX_BEGIN@} to @{EX_END@}) is syntactically
+equivalent to a compound statement (@{{}@}). Its semantics are that the
+code that might raise an exception is executed, and, if no exceptions are
+raised, terminates. If an exception is raised, the code aborts to
+the corresponding handler, or is propagated upwards if no matching handler
+is present. For a more detailed description of the semantics, see the
+specification section.
+
+@!******************************************************************************
+@!******************************************************************************
+
+@A@<Static Parameters of this Package@>
+
+This package has a few static (compile-time) parameters which can be used
+to modify its behavior.
+
+@!******************************************************************************
+
+@B@<Inline Switch Parameter@>
+
+Exceptions are tricky constructs, particularly in a programming language
+like C, and it makes sense to incorporate lots of checking into a package
+such as this one. At the same time, exceptions are a fundamental language
+construct that are likely to be used extensively, and it should be possible
+to configure them to be as efficient as possible.
+
+To satisfy these twin needs, this package provides a boolean parameter which
+can be used to select two different kinds of implementation. Set @{_EX_FAST@}
+to @{FALSE@} if you want the exported macros to generate function calls and to
+perform lots of checks. Set @{_EX_FAST@} to @{TRUE@} if you want the exported
+macros to generate inline code that runs as fast as possible with no checking
+at all. It is strongly recommended that this symbol be set to @{FALSE@}
+unless performance requirements absolutely demand that it be set to @{TRUE@}.
+
+@$@<Symbol _EX_FAST@>@{
+#define _EX_FAST FALSE
+/* Set _EX_FAST to TRUE to turn on inlining and turn off checking. */
+@}
+
+Note: Some other packages (such as the @{link@} package) allow parameters
+like this to be set by the client package, thus enabling different client
+modules to specify different safety/efficiency trade-offs. However, this level
+of parameterization granularity could not be achieved in this package as
+some of the checking is magic number checking which must be employed globally
+or not at all. The problem is that a module with checks on might complain
+about incorrect magic numbers that were not set by another module with checks
+off.
+
+@!******************************************************************************
+
+@B@<Threading Parameter@>
+
+The parameter @{_EX_THRD@} tells the package whether it is operating within
+a multi-threaded environment (@{TRUE@}) (thus prohibiting single-instance
+global variables). If you set this to @{TRUE@}, you will also need to
+modify the macros for global variables in the next section.
+
+@$@<Symbol _EX_THRD@>@{
+#define _EX_THRD FALSE
+/* To configure this package to work under a multi-threaded environment, */
+/* set _EX_THRD to TRUE and modify the k_var calls later on in the file. */
+@}
+
+@!******************************************************************************
+
+@B@<Macros for Global Variables@>
+
+This package uses three global variables --- @{_ex_curr@}, @{_ex_id@},
+and @{_ex_info@} --- which root the exception context stack, and store
+information about the most recently raised exception. Unfortunately,
+global variables such as these cause problems on multi-threaded
+systems which require that separate instances of all global variables be
+maintained for each thread.
+
+The solution to this problem is to define the global variables as usual,
+but to refer to them only through a set of lvalue-yielding macros. These
+macros can then be configured to point either directly to a single set of
+global variables (non-threaded system), or to thread-instance variables
+(threaded system). This is the approach that has been taken in this package.
+Accordingly the macros have been defined in this package static
+parameter section. Both unthreaded and threaded versions appear below.
+
+@$@<Macros for global variables@>@{
+#if !_EX_THRD
+/* Non-threaded system macros simply point to variables. */
+#define _EX_CURR _ex_curr
+#define EX_ID ((p_ex_t) _ex_id)
+#define _EX_ID _ex_id
+#define EX_INFO _ex_info
+#else
+/* Threaded system macros translate to kernel calls. */
+/* To make this package work in a multi-threaded environment, */
+/* set _EX_THRD to TRUE and modify these definitions. */
+/* Note: The kernel should initialize _EX_CURR to NULL. */
+#define _EX_CURR (* ((_ex_cx_t *) k_var(51)))
+#define EX_ID ((p_ex_t) (* ((p_ex_t *) k_var(52))))
+#define _EX_ID (* ((p_ex_t *) k_var(52)))
+#define EX_INFO (* ((ptrint *) k_var(53)))
+#endif
+@}
+
+(The 51, 52 and so on are just example variable numbers. By the way, each of
+the three global variables will fit into a @{ptrint@}.).
+
+The global variable @{_ex_curr@} is not supposed to be used by the client
+so its symbol starts with @{_@}. @{EX_ID@} and @{EX_INFO@} are
+intended to be visible to the client. However, the client is not allowed
+to write to @{EX_ID@} and so two forms have been provided, one hidden
+read/write form (@{_EX_ID@}) and one read-only form (@{EX_ID@}). The type cast
+in @{EX_ID@} is there solely to convert the value from an lvalue to an rvalue
+(ANSI 6.3.4 (footnote 44)) so that the client can't write to it.
+
+If these macros are changed to point to thread instance variables, be
+sure to initialize the @{_EX_CURR@} variable to @{NULL@} (before performing
+any exception actions) if you want unhandled exceptions to be correctly
+detected. The other two variables don't need to be initialized.
+
+Because these macros can translate to function calls, an
+attempt has been made in the rest of the package to minimize references to
+them (e.g. assign their values to temporary variables and manipulate them
+rather than using the macro itself multiple times).
+
+@!******************************************************************************
+@!******************************************************************************
+
+@A@<Specification@>
+
+Because this package exports lots of macros, its specification (@{.h@}) file
+contains lots of stuff that should really be in the implementation file out
+of sight of the client. Luckily, FunnelWeb allows most of these implementation
+details to be located in the implementation section of this FunnelWeb file,
+leaving this section to describe, as cleanly as possible, only those components
+in the specification file intended to be presented to the client.
+
+In a nutshell, the package exports an exception type, and macros to raise
+and catch exceptions.
+
+@$@<Specification file@>@{
+@<Configuration header notice@>
+#ifndef _EX_DONE
+#define _EX_DONE 1
+@<Specification includes@>
+@<Exception type@>
+@<Hidden definitions@>
+@<Macro EX_RAISE@>
+@<Macros for constructing exception blocks@>
+@<Function spec ex_str@>
+@<Hidden function specs@>
+#endif
+@}
+
+@!******************************************************************************
+
+@B@<Specification Includes@>
+
+The specification file requires just the following includes. The @{style.h@}
+include file contains basic C style stuff. The ANSI standard @{setjmp.h@}
+include file (ANSI Standard Section 7.6) is required because the @{setjmp@}
+and @{longjmp@} functions/macros are used to implement the package.
+
+@$@<Specification includes@>@{
+#include "style.h"
+#include <setjmp.h>
+@}
+
+@!******************************************************************************
+
+@B@<Exception Type@>
+
+Under this package, each exception is represented by an explicit object that
+resides in memory. However, the package does not export this object type.
+Like many C packages that export abstract types, this package exports only
+a pointer-to-object type, the intent being that the client should only ever
+manipulate the abstract objects through pointers. Thus, this package exports
+a pointer-to-exception type @{p_ex_t@}, but does not export a corresponding
+exception type @{ex_t@}.
+
+Most packages that export abstract objects by pointer type also export
+functions to dynamically create and destroy the abstract objects. However,
+in the case of exceptions there is no need for this. In fact there is a
+positive need to create exceptions at compile time and bind them statically
+(Dynamic creation would mean that an exception would have to be created before
+being raised, which would be awkward to coordinate at run time).
+So, instead of exporting a function to create an exception, this package
+exports macros that allow the client to statically create (i.e. at compile
+time) a new (hidden) exception object and, simultaneously, define a constant
+pointer (of type @{p_ex_t@}) that points to the new exception object, and
+to which an identifier of the client programmer's choosing can be bound.
+Here are the macros that do this.
+
+@$@<Exception type@>@{
+@<Type p_ex_t@>
+#define EX_EXCEPT(NAME) @<Implementation of EX_EXCEPT@>
+#define EX_EXPORT(NAME,DESC) @<Implementation of EX_EXPORT@>
+#define EX_LOCAL(NAME,DESC) @<Implementation of EX_LOCAL@>
+@}
+
+The macros @{EX_EXPORT@} and @{EX_LOCAL@} each create a brand new exception
+object. They can be called only at places in a module where variables can be
+declared. The argument @{DESC@} must be a one-line constant string that
+describes the exception; it will be written out if the exception is involved
+in some kind of error (e.g. if it propagates out of @{main()@} and has to be
+described to the user). The @{NAME@} argument must be a program identifier
+which will be the name of the pointer constant that will point to the
+new exception. Macros @{EX_EXPORT@} and @{EX_LOCAL@} are identical except
+that @{EX_EXPORT@} makes the constant pointer globally visible in the
+program (i.e. it is present in the symbol table at link time), whereas
+@{EX_LOCAL@} does not. If @{EX_EXPORT@} has been used, the constant pointer
+to the exception can be made visible in other modules by adding an instance
+of the @{EX_EXCEPT@} macro in the header file of the module containing the
+exception definition.
+
+Here is an example of a global exception declaration:
+
+@$@<Example exception declarations@>@Z@{
+In sloth.h:
+ EX_EXCEPT(sloth_exception);
+
+In sloth.c:
+ EX_EXPORT(sloth_exception,"Sloth exception");
+@}
+
+@!******************************************************************************
+
+@B@<Macro EX_RAISE@>
+
+The macro @{EX_RAISE@} raises its argument exception. The argument exception
+must be an expression evaluating to a pointer to the exception to be raised.
+See a later section for the precise semantics of an exception raise.
+
+This macro is syntactically equivalent to a compound statement. It is
+guaranteed that its argument will be evaluated exactly once.
+
+@$@<Macro EX_RAISE@>@{
+#if _EX_FAST
+#define EX_RAISE(P_EX) @<Fast implementation of EX_RAISE(P_EX)@>
+#else
+#define EX_RAISE(P_EX) @<Safe implementation of EX_RAISE(P_EX)@>
+#endif
+@}
+
+@!******************************************************************************
+
+@B@<Exception Block Construct@>
+
+The only way to catch one or more exceptions is to declare a construct
+that encloses the code that could raise the exceptions, along with the handler
+code. This construct is called an exception block and is implemented using
+a small set of preprocessor macros. Here they are:
+
+@$@<Macros for constructing exception blocks@>@{
+#if _EX_FAST
+#define EX_BEGIN \@+@<Fast implementation of EX_BEGIN@>
+#define EX_FORGET @<Fast implementation of EX_FORGET@>
+#define EX_WHEN(P_EX) @<Fast implementation of EX_WHEN(P_EX)@>
+#define EX_OTHERS @<Fast implementation of EX_OTHERS@>
+#define EX_END @<Fast implementation of EX_END@>
+#define EX_POP @<Fast implementation of EX_POP@>
+#else
+#define EX_BEGIN \@+@<Safe implementation of EX_BEGIN@>
+#define EX_FORGET @<Safe implementation of EX_FORGET@>
+#define EX_WHEN(P_EX) @<Safe implementation of EX_WHEN(P_EX)@>
+#define EX_OTHERS @<Safe implementation of EX_OTHERS@>
+#define EX_END @<Safe implementation of EX_END@>
+#define EX_POP @<Safe implementation of EX_POP@>
+#endif
+@}
+
+These macros must be used in accordance with the following syntax:
+
+@$@<Syntax of exception block@>@Z@{
+compound_statement = other_forms_of_compound_statement | exception_block
+ | EX_POP
+exception_block = "EX_BEGIN" c_code "EX_FORGET" { handler } "EX_END"
+handler = "EX_WHEN(" expression ")" c_code
+handler = "EX_OTHERS"
+@}
+
+The argument to each instantiation of @{EX_WHEN@} must be an rvalue of type
+@{p_ex_t@}. It is guaranteed that this argument will be evaluated @/at most@/
+once.
+
+The macro @{EX_POP@} should be invoked only from within the normal code of
+an exception block.
+
+@!******************************************************************************
+
+@B@<Definition of Semantics@>
+
+This section contains a detailed English description of the semantics of the
+exception constructs provided by this package. Normally this sort of
+information would be laced throughout the package specification. However, in
+this package, there are so many special cases that it was thought best to
+collect all the tricky stuff in one place. The reader is advised to study
+this section thoroughly, as a lack of knowledge about the precise semantics
+of the exception construct can be very dangerous.
+
+@/Basic semantics:@/ When control hits an exception block,
+the code between @{EX_BEGIN@} and @{EX_FORGET@} (the
+@/normal code@/) is executed. If, during the execution of the normal code, no
+exceptions propagate up to this construct then, upon completion of the normal
+code, execution of the entire construct terminates. If, during the execution
+of the normal code, an exception is raised (in the code or any function it
+calls) that propagates up to this construct, control exits the normal code at
+that point and is transferred to the code associated with the handler for
+the exception raised (the @/handler code@/). If there is no handler for the
+exception raised, the exception is propagated to the next dynamically
+enclosing handler in the dynamic chain. If there is a handler for the target
+exception, the code associated with that handler is executed and the
+construct terminates. If an exception propagates out of @{main()@}, the
+exception package bombs the program with an error message explaining what
+has happened and printing out the description of the offending exception.
+
+@/State of the function:@/ You may be wondering why the middle keyword
+in the exception construct is @{EX_FORGET@}. The reason is that the ANSI
+standard (ANSI 7.6.2.1) states: @/All accessible objects have values as of
+the time longjmp was called, except that the values of objects of automatic
+storage duration that are local to the function containing the invocation
+of the corresponding setjmp macro that do not have volatile-qualified type
+and have been changed between the setjmp invocation and longjmp call
+are indeterminate.@/ These are strong words! Because this exception package
+is implemented using @{setjmp@} and @{longjmp@}, these words mean that
+following the raising of an exception, you cannot rely on the value of any
+@{auto@}matic variable that was modified within the normal code of an
+exception construct before the exception was raised. The @{EX_FORGET@} syntax
+has been designed to act as a continual reminder of this danger.
+
+@/Direct exits from normal code:@/ Because the exception package
+maintains an explicit stack of exception handling contexts, there are some
+restrictions about how control can leave such constructs. ``Acceptable'' ways
+of leaving the main code of an exception block are 1) reaching the end of the
+block, and 2) raising an exception (handled or unhandled). However, control
+can also exit the construct in four other ``unacceptable'' ways. These are
+1) by executing a @{goto@} out of the block,
+2) by executing a @{return@},
+3) by executing an explicit @{longjmp@},
+4) by executing @{exit@} or some other program terminating function
+(actually this case does not matter as much as the program ends anyway).
+To ensure that the exception package correctly maintains its stack of
+live exception blocks, each instance of any of the four unacceptable ways
+of exiting a block should be prededed by a call to @{EX_POP@}. Here is
+an example of a correct explicit exception block termination.
+
+@$@<Example of a correct direct exit from an exception block@>@Z@{
+EX_BEGIN
+ add_char(buffer,'x');
+ if (is_full(buffer)) {EX_POP; return TRUE;}
+EX_FORGET
+ EX_WHEN(buf_ful)
+ return TRUE;
+EX_END
+return FALSE;
+@}
+
+@{EX_POP@} can only be called from within the normal code of an exception
+block.
+
+@/No restrictions on exiting handler code:@/ By the time control reaches any
+exception handler code, the current exception context has been popped, so
+there are no constraints at all on exits from handler code. In the example
+above, the @{return TRUE@} from the normal code must be preceeded by a call
+to @{EX_POP@}, but no such call is required for the @{return TRUE@} in the
+handler code. In fact, such a call would be erroneous. As soon
+as control hits handler code it is guaranteed that the current context
+has been popped.
+
+@/Exception handler code can jump to other exception handlers:@/ Just place a
+label inside one handler and a goto in another. This is useful where the code
+in one handler is suitable for many exceptions. For example:
+
+@$@<Example of goto in exception handler@>@Z@{
+EX_BEGIN
+ add_char(buffer,'x');
+EX_FORGET
+ EX_WHEN(misc_1) goto doit;
+ EX_WHEN(misc_2) goto doit;
+ EX_WHEN(misc_3) goto doit;
+ EX_WHEN(misc_4) goto doit;
+ EX_WHEN(misc_5)
+ doit:
+ printf("Miscellaneous exception happened.\n");
+ return FALSE;
+EX_END
+@}
+
+Because there are no restrictions on how handlers can exit, the @{gotos@}
+could have pointed outside the construct too.
+
+@/Local variables:@/ Each normal code and handler code segment is actually
+framed as a compound statement. This means that you can declare local
+variables if desired. For example:
+
+@$@<Example of local variables in an exception block@>@Z@{
+EX_BEGIN
+ int result;
+ result=add_char(buffer,'x');
+ if (result > 10) {EX_POP; return TRUE;}
+EX_FORGET
+ EX_WHEN(buf_ful)
+ string walrus = "An example string.\n";
+ printf(walrus);
+ return TRUE;
+EX_END
+return FALSE;
+@}
+
+@/Exception blocks can be nested:@/ Functions can contain many exception
+blocks. Exception blocks can even be nested. However, be very sure to obey
+the other rules. Here is an example:
+
+@$@<Example of nested exception handlers@>@Z@{
+EX_BEGIN
+ add_char(buffer,'x');
+ EX_BEGIN
+ big_func();
+ EX_FORGET
+ EX_WHEN(buf_ful) printf("big_func raised buf_ful.\n");
+ EX_END
+EX_FORGET
+ EX_WHEN(buf_ful) printf("add_char raised buf_ful.\n");
+ EX_WHEN(sloth) printf("either add_char or big_func raised sloth.\n");
+EX_END
+@}
+
+@/OTHERS handler:@/ The @{EX_OTHERS@} handler catches all exceptions.
+
+@/Handler precedence:@/ The first handler that matches an exception
+catches the exception. If more than one handler matches the same exception,
+the first handler will be activated.
+
+@/Re-raising an exception:@/ To re-raise an exception, simply
+code the statement @{EX_RAISE(EX_ID);@}.
+
+@!******************************************************************************
+
+@B@<Exception Information@>
+
+When an exception is raised, two symbols provide information about the
+exception being raised. These symbols are macros and do not necessarily
+translate to variable names. However, it is guaranteed that @{EX_ID@} will be
+an rvalue (ANSI 6.2.2.1 (footnote 31)) of type @{p_ex_t@}, and that @{EX_INFO@}
+will behave like an modifiable lvalue (ANSI 6.2.2.1) of type @{ptrint@} (see
+the header file @{style.h@} for this type). The declarations of these macros
+appear in the static parameters section of this document.
+
+Whenever an exception is raised, @{EX_ID@} contains the ID of the exception
+being raised. This value persists until the next exception is raised.
+This variable is only marginally useful in the current version of
+this package, as each exception handler will always statically ``know'' the
+exception that it has caught. In long and complex handlers though, the
+capacity for self-reference that @{EX_ID@} provides enables such handlers
+to be coded without hard-wiring the exception in question whenever it is
+re-raised. This allows exceptions to be more easily renamed. The macro is
+also useful because it allows exceptions to be dynamically re-raised from
+code to which many handlers have been pointed to with @{goto@}s. For example:
+
+@$@<Example of use of EX_ID@>@Z@{
+EX_BEGIN
+ add_char(buffer,'x');
+EX_FORGET
+ EX_WHEN(misc_1) goto doit;
+ EX_WHEN(misc_2) goto doit;
+ EX_WHEN(misc_3) goto doit;
+ EX_WHEN(misc_4) goto doit;
+ EX_WHEN(misc_5)
+ doit:
+ printf("Miscellaneous exception happened.\n");
+ EX_RAISE(EX_ID);
+EX_END
+@}
+
+@{EX_ID@} has been configured as an rvalue so that it cannot be written.
+Thus, it is guaranteed always to contain the ID of the exception most recently
+raised.
+
+The variable @{EX_INFO@} is more under client control. It exists simply to
+act as an abstract channel for code raising exceptions to communicate with
+code catching exceptions. There are no rules for this value --- it can be
+written to, or read from any piece of code at any time; make up your own
+rules. The type of @{EX_INFO@} has been set to @{ptrint@} so as to allow
+any pointer or integer to be conveyed through the variable. This effectively
+allows any amount of information to be passed.
+
+@!******************************************************************************
+
+@B@<Function ex_str@>
+
+The function @{ex_str@} accepts a pointer to an exception and returns a
+pointer to a constant static string being the one line description of the
+exception that was provided when the exception was defined with @{EX_LOCAL@}
+or @{EX_EXPORT@}.
+
+@$@<Function spec ex_str@>@{EXPORT string ex_str P_((p_ex_t));@}
+
+@!******************************************************************************
+
+@B@<A Warning About Names@>
+
+This package exports a number of compile-time and link-time symbols that
+pollute the symbol table and link table. This pollution is necessary because
+this package relies significantly on exported macros that reference exported
+variables. To reduce naming conflicts, nearly all exported names that are
+supposed to be visible to the client commence with @{ex_@} and all exported
+names that are supposed to be invisible to the client commence with @{_ex@}.
+Please be careful to avoid names with these prefixes.
+
+@!******************************************************************************
+
+@B@<Glossary@>
+
+@{Abstract client@} --- A client of this package about which no information
+is known.
+
+@{Catch@} --- When an exception is raised, it propagates up the run-time
+context stack until it encounters a corresponding handler at which point it
+is said to have been caught.
+
+@{Client@} --- Any code that uses this package.
+
+@{Exception@} --- A dynamic non-local control-flow event.
+
+@{Exception block@} --- A special kind of anonymous block (called a compound
+statement in C) containing exception handlers.
+
+@{Exception description@} --- A single-line string briefly describing the
+exception. This string is printed out whenever an exception has to be
+identified to the user.
+
+@{Exception identifier@} --- A program identifier that is bound to a constant
+whose value is a pointer pointing to an exception object.
+
+@{Exception handler@} --- An exception/code binding that appears at the
+end of an exception block and catches the specified exception should it
+propagate to that level.
+
+@{Direct exit@} --- The termination of an exception block in a way that
+bypasses the exception package (for example, by @{return@} or explicit
+@{longjmp@}). The macro @{EX_POP@} should be called before all such exits.
+
+@{Raise@} --- An exception is raised by an @{EX_RAISE@} statement. Once
+raised, an exception unwinds the stack until it encounters a handler for
+the specific exception.
+
+@!******************************************************************************
+@!******************************************************************************
+
+@A@<Implementation@>
+
+This section describes the implementation of this package. The implementation
+is short, but is rather messy because of the fast/safe alternatives, and
+because of the fact that much of the functionality of the package is provided
+in the @{.h@} file. Much of that functionality has been deferred using
+FunnelWeb macros to this section.
+
+The implementation (@{.c@}) file itself is fairly simply, consisting only
+of some global variables and a few function definitions.
+
+@$@<Implementation file@>@{
+@<Configuration header notice@>
+#include "except.h"
+#include "as.h"
+@<Global variables (.c)@>
+@<Function ex_str@>
+@<Function ex_bomb@>
+@<Function _exrai@>
+@<Function _expop@>
+@}
+
+All the real action happens in the definitions in the specification (@{.h@})
+file that are hidden from the client.
+
+@$@<Hidden definitions@>@{
+@<Symbol _EX_FAST@>
+@<Symbol _EX_THRD@>
+@<Exception block context type@>
+@<Global variables (.h)@>
+@<Macros for global variables@>
+@}
+
+@$@<Hidden function specs@>@{
+@<Function spec _exrai@>
+@<Function spec _expop@>
+@}
+
+@!******************************************************************************
+
+@B@<Overview and Data Structure Description@>
+
+This section gives an overview of the implementation of this package.
+
+This package operates by maintaining an explicit stack of currently active
+exception blocks. Whenever an exception block is entered (@{EX_BEGIN@}),
+a @{setjmp@} is executed and the resultant @{jmp_buf@} is inserted into a
+stack node and pushed onto the stack. Whenever an exception block is exited
+normally (@{EX_END@}), the stack node on the top of the stack is popped. When
+an exception is raised, the top of the stack is popped off and a @{longjmp@}
+is executed to its context. The context then searches its handlers for a
+handler for the exception raised. If it finds one, it executes it. If it
+doesn't, it pops and @{longjmp@}s the top of stack again. This goes on
+until the exception is caught, or the stack is empty.
+
+The stack is composed of a singly-linked list of records of the following
+type:
+
+@$@<Exception block context type@>@{
+typedef struct _ex_cxt_
+ {
+@<Header magic number field@>
+ jmp_buf _ex_jmbf; /* Exception block context. */
+ struct _ex_cxt_ *_ex_prev; /* Pointer to previous stack record. */
+@<Trailer magic number field@>
+ } _ex_cx_t;
+@<Magic number symbols@>
+@}
+
+The sneaky part is that instead of storing this stack explicitly on the
+heap, it is stored on the run-time stack itself. This is done by having the
+@{EX_BEGIN@} macro create a compound statement containing a local
+automatic variable of type @{_ex_cx_t@} which forms a node of the stack.
+These nodes are threaded into a linked list that is rooted by the global
+variable @{_ex_curr@} which points to the node at the top of the stack,
+or @{NULL@} if the stack is empty. Two other hidden global variables
+@{_ex_id@} and @{_ex_info@} store the exception id and the exception
+information.
+
+@!==============================================================================
+
+@C@<Global Variables@>
+
+This package requires three global variables to keep track of everything.
+The variable @{_ex_curr@} points to the context record on the top of the
+stack, or @{NULL@} if the stack is empty. The variable @{_ex_id@} contains
+a pointer to the exception most recently raised. The variable @{_ex_info@}
+is provided for the use of the client.
+
+To enable this package (and its client code) to be converted over to a
+multi-threaded system at a later date, these global variables are referred
+to only through a set of macros. The macros are described in the static
+parameters section of this document. They are called @{_EX_CURR@},
+@{EX_ID@}, @{_EX_ID@}, @{EX_INFO@}.
+
+@$@<Global variables (.c)@>@{
+#if !_EX_THRD
+GLOVAR _ex_cx_t *_ex_curr = NULL;
+GLOVAR p_ex_t _ex_id;
+GLOVAR ptrint _ex_info;
+#endif
+@}
+
+Here is the version of these variables that appears in the header file.
+
+@$@<Global variables (.h)@>@{
+#if !_EX_THRD
+extern _ex_cx_t *_ex_curr;
+extern p_ex_t _ex_id;
+extern ptrint _ex_info;
+#endif
+@}
+
+@!==============================================================================
+
+@C@<Magic Numbers@>
+
+In order to detect corruptions in exception context records, two magic
+number fields have been placed at the start and end of the record. In C, there
+are hundreds of ways for corruptions to occur, but in particular, in this
+package, if a client exits an exception context without first popping it,
+it is quite likely that the context will be ``run over'' by stack frames of
+functions called later. If the context is then invoked, the program will
+crash. The following magic number fields greatly improve the chances of
+detecting such corruptions.
+
+@$@<Header magic number field@>@{@-
+#if !_EX_FAST
+ ulong _ex_mag1; /* Header magic number. */
+#endif@}
+
+@$@<Trailer magic number field@>@{@-
+#if !_EX_FAST
+ ulong _ex_mag2; /* Trailer magic number. */
+#endif@}
+
+@$@<Magic number symbols@>@{
+#define _EX_MAG1 0xFB8A5D30
+#define _EX_MAG2 0x09F2E7A2@}
+
+@!******************************************************************************
+
+@B@<Exception type@>
+
+Here is the definition of the pointer-to-exception type. Normally, a hidden
+exception type would be declared to which the pointer type would point, but as
+exceptions have only a single attribute, their description string, it makes
+sense simply to declare the pointer type to be @{string@} type (pointer to
+char).
+
+@$@<Type p_ex_t@>@{typedef string p_ex_t;@}
+
+@!******************************************************************************
+
+@B@<Macros for Declaring and Defining Exceptions@>
+
+The three exception declaration macros make use of the fact that @{p_ex_t@}
+is really just a string pointer. There is a slight danger that a too-clever
+C compiler might overlap two strings for which one is a non-strict suffix
+of the other. However, this is considered unlikely.
+
+@$@<Implementation of EX_EXCEPT@>@{extern const p_ex_t NAME@}
+@$@<Implementation of EX_EXPORT@>@{ const p_ex_t NAME = DESC@}
+@$@<Implementation of EX_LOCAL@>@{static const p_ex_t NAME = DESC@}
+
+@!******************************************************************************
+
+@B@<Macro for Raising Exceptions@>
+
+Two forms of the @{EX_RAISE@} macro are given. The first simply calls
+@{_exrai@} which performs lots of checks before raising the argument exception.
+The fast form does not perform any checking --- it just performs the
+essential operations of setting the ID and executing the @{longjmp@}.
+
+@$@<Safe implementation of EX_RAISE(P_EX)@>@{{_exrai(P_EX);}@}
+
+@$@<Fast implementation of EX_RAISE(P_EX)@>@{@-
+{_EX_ID = (P_EX); longjmp(_EX_CURR->_ex_jmbf,NON_ZERO);}@}
+
+@!******************************************************************************
+
+@B@<Exception Block Macros (Safe)@>
+
+The exception block macros are messy and deserve some explanation.
+These macros operate as a coherent whole, so it is probably best to read
+them through a few times to see how they interact, rather than attempting
+to understand each one independently. Two versions of the exception block
+macros are given --- the safe version and the fast version. The safe version
+is described first.
+
+The @{EX_BEGIN@} macro sets the stage for the entire exception block by
+starting a compound statement, declaring a local variable for the stack
+node (@{_ex_cxlc@}), initializing its magic checking numbers, pushing it onto
+the stack, and finally saving the current execution context in the @{_ex_jmbf@}
+field of the newly created stack node. This work has to be done in this macro
+as most of the operations require direct access to the local context. Not much
+checking can be done here either as we have no way of cross checking the value
+of @{_EX_CURR@} upon entry. The open @{if@} statement encloses the entire
+normal code of the exception block.
+
+@$@<Safe implementation of EX_BEGIN@>@{@-
+{_ex_cx_t _ex_cxlc; \
+ _ex_cxlc._ex_mag1 = _EX_MAG1; \
+ _ex_cxlc._ex_mag2 = _EX_MAG2; \
+ _ex_cxlc._ex_prev = _EX_CURR; \
+ _EX_CURR = &_ex_cxlc; \
+ if (!setjmp(_ex_cxlc._ex_jmbf)) { @}
+
+At the point of forgetting, we need to terminate the compound statement
+for the normal code, pop the current exception context and then test the
+currently live exception against the candidate handlers. This is most
+simply performed with a cascaded @{if@} statement. The @{if@} statement
+has to start with a @{FALSE@} branch so as to establish the syntactic
+context for the first @{EX_WHEN@} macro.
+
+An earlier version of this package that used integers to represent exceptions
+used a @{switch@} statement instead of an @{if@} chain. A @{switch@} statement
+is actually preferable to an @{if@} chain because @{switch@}es prohibit
+duplicate labels. However, @{switch@}es had to be abandoned because when the
+package was changed over so that it used pointers as exception ids, it was
+noticed that K&R78 section 9.7 says that the argument to @{switch@} must be of
+type @{int@}. K&R88 (section A9.4) and ANSI (section 6.6.4.2) weaken this to
+include all integral types, but still preclude pointers. So an @{if@} chain
+had to be used.
+
+@$@<Safe implementation of EX_FORGET@>@{;EX_POP} else {EX_POP; if (FALSE) {@}
+
+The start of each handler in the exception block is marked by a call to the
+@{EX_WHEN@} macro. All it does is add an extra clause onto the @{if@} chain.
+
+@$@<Safe implementation of EX_WHEN(P_EX)@>@{} else if ((P_EX) == (EX_ID)) {@}
+
+The @{EX_OTHERS@} macro is also easily implemented (but, like @{EX_FORGET@},
+could conceivably provoke some inconvenient warnings from @{lint@}.
+
+@$@<Safe implementation of EX_OTHERS@>@{} else if (TRUE) {@}
+
+To end the construct, we terminate the current handler, re-raise the
+currently live exception if it has not already been caught, and terminate
+the @{else@} of @{EX_FORGET@} and the outer braces of the entire construct.
+
+@$@<Safe implementation of EX_END@>@{} else _exrai(EX_ID); }}@}
+
+Popping the current exception context is easily achieved with a function call.
+Note: The reference to @{_ex_cxlc@} will simply not compile if there
+isn't a current context. This correctly precludes the use of this macro
+outside an exception block. It also guarantees that the argument to @{_expop@}
+will be a pointer to the context record of the innermost statically-enclosing
+exception block.
+
+@$@<Safe implementation of EX_POP@>@{{_expop(&_ex_cxlc);}@}
+
+@!******************************************************************************
+
+@B@<Fast, Inline Versions of the Exception Block Macros@>
+
+Here are the fast, inline versions of the exported macros. This version
+of the macros operates in exactly the same way as the other version except
+that no checking is performed whatsoever. This version of the macros
+performs everything on the spot, without calling any support functions at all.
+
+@$@<Fast implementation of EX_BEGIN@>@{@-
+{_ex_cx_t _ex_cxlc; \
+ _ex_cxlc._ex_prev = _EX_CURR; \
+ _EX_CURR = &_ex_cxlc; \
+ if (!setjmp(_ex_cxlc._ex_jmbf)) { @}
+
+@$@<Fast implementation of EX_FORGET@>@{;EX_POP} else {EX_POP; if (FALSE) {@}
+@$@<Fast implementation of EX_WHEN(P_EX)@>@{} else if ((P_EX) == (EX_ID)) {@}
+@$@<Fast implementation of EX_OTHERS@>@{} else if (TRUE) {@}
+
+@$@<Fast implementation of EX_END@>@{@-
+} else longjmp(_EX_CURR->_ex_jmbf,NON_ZERO); }}@}
+
+@$@<Fast implementation of EX_POP@>@{{_EX_CURR = _EX_CURR->_ex_prev;}@}
+
+@!******************************************************************************
+
+@B@<Function ex_str@>
+
+The function @{ex_str@} is easily implemented. Because exceptions are just
+pointers to strings, all it has to do is return its argument!
+
+@$@<Function ex_str@>@{
+EXPORT string ex_str (p_ex) p_ex_t p_ex; {return p_ex;}@}
+
+@!******************************************************************************
+
+@B@<Support Functions@>
+
+Although most of what this package exports is macros, some of the macros
+translate into calls to the support functions described in this section.
+Functions have been used for operations that are particularly long-winded.
+
+@!==============================================================================
+
+@C@<Function _exrai@>
+
+The function @{_exrai@} raises an exception. This function performs
+all the grunt work for the @{EX_RAISE@} macro, which merely translates to a
+call of this function. The function specification appears in the header file
+but is not supposed to be seen by the client.
+
+@$@<Function spec _exrai@>@{EXPORT void _exrai P_((p_ex_t));@}
+
+@$@<Function _exrai@>@{
+EXPORT void _exrai (p_ex)
+p_ex_t p_ex;
+{
+#if _EX_FAST
+ as_bomb("_exrai: This function should not be called with _EX_FAST==TRUE.");
+#else
+ @<Take a copy of _EX_CURR in p_curr@>
+ @<Set the exception ID@>
+ @<Bomb if the stack is empty@>
+ @<Bomb if the target context is not on the stack@>
+ @<Bomb if the target context is corrupted@>
+ @<Raise the exception@>
+#endif
+}
+@}
+
+This function refers to the value of @{_EX_CURR@} lots of times. However,
+@{_EX_CURR@} could be a function call. To avoid excessive use of this
+variable, we take a copy of its value in @{p_curr@}.
+
+@$@<Take a copy of _EX_CURR in p_curr@>@M@{_ex_cx_t * p_curr = _EX_CURR;@}
+
+We set the global exception ID variable @{_EX_ID@} @/before@/ performing
+all the sanity checks so that if one of them fails, the current exception
+can be printed out by @{ex_bomb@}.
+
+@$@<Set the exception ID@>@{_EX_ID = p_ex;@}
+
+If the context stack is empty then there is no handler to catch the exception
+and we have to bomb the program.
+
+@$@<Bomb if the stack is empty@>@{
+if (p_curr == NULL) {as_wl("_exrai: Unhandled exception."); ex_bomb();}@}
+
+If the target context is lower down in memory than the stack frame of @/this@/
+function (@{_exrai@}), then because stacks nearly always grow downwards, it
+is almost certain that a context was not popped when it should have been.
+Strictly speaking, this test is non-portable. However, in
+practice, stacks grow downward in the address space on nearly all machines,
+and it's such a powerful check, it seems worth the potential portability
+problems.
+
+@$@<Bomb if the target context is not on the stack@>@{
+if (UWIDE(&p_curr) > UWIDE(&p_curr->_ex_jmbf))
+ {
+ as_wl("_exrai: Target exception context is no longer legitimate.");
+ as_wl(" Exception context resides beneath the top of stack.");
+ as_wl(" This means that earlier on, control must have left an");
+ as_wl(" exception context without first popping its handler.");
+ as_wl(" Look for jumps out of exception contexts that are not");
+ as_wl(" immediately preceded by calls to EX_POP.");
+ ex_bomb();
+ }@}
+
+Check the target context for corruptions. There is no point doing a @{longjmp@}
+to a corrupted context!
+
+@$@<Bomb if the target context is corrupted@>@{
+if ((p_curr->_ex_mag1 != _EX_MAG1) || (p_curr->_ex_mag2 != _EX_MAG2))
+ {
+ as_wl("_exrai: Target exception context has been corrupted. This could");
+ as_wl(" be because an exception context wasn't popped, or it");
+ as_wl(" could be just a common garden-variety C corruption :-)");
+ ex_bomb();
+ }@}
+
+Actually raising the exception is the easy part! All that is required is a
+@{longjmp@}.
+
+@$@<Raise the exception@>@{longjmp(p_curr->_ex_jmbf,NON_ZERO);@}
+
+@!==============================================================================
+
+@C@<Function ex_bomb@>
+
+The function @{ex_bomb@} writes out a description of the most recently
+raised exception and then bombs the program. This function is used by
+@{_exrai@}.
+
+@$@<Function ex_bomb@>@{
+LOCAL void ex_bomb P_((void));
+LOCAL void ex_bomb ()
+{
+ char s[100];
+ as_wr(" Exception desc is : \""); as_wr(EX_ID); as_wl("\".");
+ as_wr(" Exception id is : ");
+ sprintf(s,"%lu (= %lX)",ULONG(EX_ID),ULONG(EX_ID)); as_wl(s);
+ as_wr(" Exception info is : ");
+ sprintf(s,"%lu (= %lX)",ULONG(EX_INFO),ULONG(EX_INFO)); as_wl(s);
+ as_bomb("Aborting program after exception error.");
+}
+@}
+
+@!==============================================================================
+
+@C@<Function _expop@>
+
+The function @{_expop@} pops the current exception block from the context
+stack. Before doing this, it performs a few checks. To assist it with its
+checks, the caller must pass a pointer to the current context record
+in the first parameter. This can always be done by the caller directly
+(without referencing @{_EX_CURR@}) because popping is only supposed to take
+place within the static context of an enclosing exception block.
+
+@$@<Function spec _expop@>@{EXPORT void _expop P_((_ex_cx_t *));@}
+
+@$@<Function _expop@>@{
+EXPORT void _expop (p_check)
+_ex_cx_t *p_check;
+{
+#if _EX_FAST
+ as_bomb("_exrai: This function should not be called with _EX_FAST==TRUE.");
+#else
+ @<Take a copy of _EX_CURR in p_curr@>
+ @<Bomb if the current context is not the top of stack context@>
+ @<Bomb if current context is corrupted@>
+ @<Zap the current context@>
+ @<Pop the context@>
+#endif
+}
+@}
+
+The first check test is to make sure that the context about to be popped is
+the current context --- the one statically enclosing the pop call.
+
+@$@<Bomb if the current context is not the top of stack context@>@{
+if (p_curr != p_check)
+ {
+ if (p_curr == NULL)
+ as_bomb("_expop: Context stack is empty.");
+ else
+ as_bomb("_expop: Top of context stack is not the current context.");
+ }
+@}
+
+The second check tests the current context (the one about to be popped) to
+make sure that it isn't corrupted. If it is, then the program should be
+bombed.
+
+@$@<Bomb if current context is corrupted@>@{
+if ((p_curr->_ex_mag1 != _EX_MAG1) || (p_curr->_ex_mag2 != _EX_MAG2))
+ {
+ as_wl("_ex_rai: Target exception context has been corrupted. This could");
+ as_wl(" be because an exception context wasn't popped, or it");
+ as_wl(" could be just a common garden-variety C corruption :-)");
+ as_bomb("Aborting program after exception error.");
+ }
+@}
+
+Before popping the current context, we need to zap its magic numbers so that
+they don't float around in stack memory where they might cause some future
+magic number test to succeed when it should have failed.
+
+@$@<Zap the current context@>@{
+p_curr->_ex_mag1 = ~_EX_MAG1;
+p_curr->_ex_mag2 = ~_EX_MAG2;
+@}
+
+Having checked and zapped the context, popping it is easy!
+
+@$@<Pop the context@>@{_EX_CURR = p_curr->_ex_prev;@}
+
+@!******************************************************************************
+@!******************************************************************************
+
+@A@<Test Program@>
+
+This section provides a test program which can be used to test the exceptions
+package. The program provides nine success tests and nine failure tests.
+The success tests do not cause the program to terminate, and so can all
+be performed in a single run. However, each failure test causes the
+program to bomb with an assertion error, and so the failure tests must
+be performed separately as nine separate invocations of the test
+program. At the end of this testing, the user can have a high degree of
+confidence that the package is working.
+
+Each of the eighteen tests is embodied in a separate function.
+The global boolean variable @{flag@} is a miscellaneous temporary variable
+which is usually used to tell if an exception has fired.
+
+@$@<Test program file@>@{
+@<Configuration header notice@>
+
+#include "style.h"
+#include "except.h"
+#include "as.h"
+
+EX_LOCAL(sloth_ex,"Sloth exception");
+EX_LOCAL(walrus_ex,"Walrus exception");
+
+GLOVAR bool flag;
+
+@<Function sc01@>
+@<Function sc02@>
+@<Function sc03@>
+@<Function sc04@>
+@<Function sc05@>
+@<Function sc06@>
+@<Function sc07@>
+@<Function sc08@>
+@<Function sc09@>
+
+@<Function fa01@>
+@<Function fa02@>
+@<Function fa03@>
+@<Function fa04@>
+@<Function fa05@>
+@<Function fa06@>
+@<Function fa07@>
+@<Function fa08@>
+@<Function fa09@>
+
+main()
+{
+ char ch;
+
+ printf("Test Program for the EXCEPT Package\n");
+ printf("===================================\n");
+ printf("This test program provides a number of different tests. Because\n");
+ printf("some tests provoke the package to bomb on purpose, this test\n");
+ printf("program must be run a number of times, once for each test.\n");
+ printf("The 0 test performs a group of tests that are not supposed to\n");
+ printf("fail. The 1..9 tests each perform a test that is supposed to\n");
+ printf("bomb the program if the test succeeds. The 0 test should be run\n");
+ printf("with the package compiled with both _EX_FAST==FALSE and\n");
+ printf("_EX_FAST==TRUE. The 1..9 tests should use only _EX_FAST==FALSE.\n");
+ printf("\n");
+ if (_EX_FAST)
+ printf("Current value of EX_FAST == TRUE.\n");
+ else
+ printf("Current value of EX_FAST == FALSE.\n");
+ printf("\n");
+ printf("Enter 0 for success tests, or 1..9 for one of nine fail tests>");
+ ch=getchar(); printf("\n");
+ if (ch == '0')
+ {
+ printf("Success Tests\n");
+ printf("-------------\n");
+ printf("The following tests (sc01..sc09) test the normal features\n");
+ printf("the exceptions package. You should see nine success lines\n");
+ printf("appear on the screen. If the package bombs during this test,\n");
+ printf("then something is wrong and should be fixed.\n");
+ printf("\n");
+ sc01();
+ sc02();
+ sc03();
+ sc04();
+ sc05();
+ sc06();
+ sc07();
+ sc08();
+ sc09();
+ printf("\n");
+ printf("All of the success tests SUCCEEDED.\n");
+ }
+ else
+ {
+ if (_EX_FAST)
+ {
+ as_wl("Error in test configuration. An attempt was made to perform");
+ as_wl("a 1..9 test with _EX_FAST==TRUE. This does not make sense as");
+ as_wl("these tests test the error checking capability of the package");
+ as_wl("and _EX_FAST=TRUE has all error checking turned off!");
+ as_bomb("Please recompile with _EX_FAST==FALSE and try again.");
+ }
+ switch (ch)
+ {
+ case '1': fa01();
+ case '2': fa02();
+ case '3': fa03();
+ case '4': fa04();
+ case '5': fa05();
+ case '6': fa06();
+ case '7': fa07();
+ case '8': fa08();
+ case '9': fa09();
+ default:
+ printf("\nCharacter entered was not 0..9. Aborting...\n");
+ }
+ }
+}
+@}
+
+@!==============================================================================
+
+@B This test checks to make sure that exception blocks operate correctly
+when no exceptions are raised.
+
+@$@<Function sc01@>@{
+LOCAL void sc01 P_((void));
+LOCAL void sc01 ()
+{
+ printf("Test SC01: Exception block with no exceptions raised.\n");
+
+ /* The NULL exception block should be OK. */
+ EX_BEGIN
+ EX_FORGET
+ EX_END
+
+ /* Now put some code in the normal section. */
+ flag=FALSE;
+ EX_BEGIN
+ flag=TRUE;
+ EX_FORGET
+ EX_END
+ as_cold(flag,"sc01: First flag block test failed.");
+
+ /* Make sure the EX_OTHERS branch only applies to exceptions. */
+ flag=FALSE;
+ EX_BEGIN
+ flag=TRUE;
+ EX_FORGET
+ EX_OTHERS
+ as_bomb("sc01: Raise failed.");
+ EX_END
+ as_cold(flag,"sc01: Second flag block test failed.");
+}
+@}
+
+@!==============================================================================
+
+@B This test tests to make sure that an exception raised within an exception
+block can be caught by that block.
+
+@$@<Function sc02@>@{
+LOCAL void sc02 P_((void));
+LOCAL void sc02 ()
+{
+ printf("Test SC02: Exception caught within immediate block.\n");
+ flag = FALSE;
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc02: Raise failed.");
+ EX_FORGET
+ EX_WHEN(sloth_ex) flag=TRUE;
+ EX_END
+ as_cold(flag,"sc02: Exception was not caught by local block.");
+}
+@}
+
+@!==============================================================================
+
+@B This test tests the @{EX_OTHERS@} feature.
+
+@$@<Function sc03@>@{
+LOCAL void sc03 P_((void));
+LOCAL void sc03 ()
+{
+ printf("Test SC03: Exception is caught by OTHERS clause.\n");
+ flag = FALSE;
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc03: Raise failed.");
+ EX_FORGET
+ EX_OTHERS flag=TRUE;
+ EX_END
+ as_cold(flag,"sc03: Exception was not caught by EX_OTHERS clause.");
+}
+@}
+
+@!==============================================================================
+
+@B This test tests nested exception blocks.
+
+@$@<Function sc04@>@{
+LOCAL void sc04 P_((void));
+LOCAL void sc04 ()
+{
+ printf("Test SC04: Exception is caught by nested exception block.\n");
+
+ /* Try a simple nested handler. */
+ flag=FALSE;
+ EX_BEGIN
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc04: Raise failed (1).");
+ EX_FORGET
+ EX_WHEN(walrus_ex)
+ as_bomb("sc04: Walrus exception caught (1).");
+ EX_END
+ EX_FORGET
+ EX_WHEN(sloth_ex) flag=TRUE;
+ EX_WHEN(walrus_ex) as_bomb("sc04: Walrus exception caught (x).");
+ EX_END
+ as_cold(flag,"sc04: First nested test failed.");
+
+ /* Test a re-raise. */
+ flag=FALSE;
+ EX_BEGIN
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc04: Raise failed (2).");
+ EX_FORGET
+ EX_WHEN(sloth_ex)
+ EX_RAISE(walrus_ex)
+ as_bomb("sc04: Raise failed (3).");
+ EX_WHEN(walrus_ex)
+ as_bomb("sc04: Walrus exception caught (2).");
+ EX_END
+ EX_FORGET
+ EX_WHEN(sloth_ex)
+ as_bomb("sc04: Sloth exception escaped.");
+ EX_WHEN(walrus_ex)
+ flag=TRUE;
+ EX_END
+ as_cold(flag,"sc04: Second nested test failed.");
+}
+@}
+
+@!==============================================================================
+
+@B This test tests whether @{EX_OTHERS@} can successfully re-raise an
+exception.
+
+@$@<Function sc05@>@{
+LOCAL void sc05 P_((void));
+LOCAL void sc05 ()
+{
+ STAVAR bool flag2;
+ printf("Test SC05: Single OTHERS handler reraises current exception.\n");
+ flag=FALSE;
+ flag2=FALSE;
+ EX_BEGIN
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc05: Raise failed (2).");
+ EX_FORGET
+ EX_OTHERS
+ flag=TRUE;
+ EX_RAISE(EX_ID);
+ as_bomb("sc05: Raise failed (3).");
+ EX_END
+ EX_FORGET
+ EX_WHEN(sloth_ex)
+ flag2=TRUE;
+ EX_OTHERS
+ as_bomb("sc05: Exception escaped.");
+ EX_END
+ as_cold(flag ,"sc05: OTHERS test failed (1).");
+ as_cold(flag2,"sc05: OTHERS test failed (2).");
+}
+@}
+
+@!==============================================================================
+
+@B
+
+
+@$@<Function sc06@>@{
+LOCAL void sc06 P_((void));
+LOCAL void sc06 ()
+{
+ printf("Test SC06: Handlers all GOTO same code.\n");
+ flag=FALSE;
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc06: Raise failed.");
+ EX_FORGET
+ EX_WHEN(sloth_ex) goto handle;
+ EX_WHEN(walrus_ex)
+ as_bomb("sc06: Walrus exception went off.");
+ handle:
+ flag=TRUE;
+ EX_OTHERS
+ as_bomb("sc06: Exception escaped to OTHERS.");
+ EX_END
+ as_cold(flag,"sc06: GOTO test failed.");
+}
+@}
+
+@!==============================================================================
+
+@B This test simply checks that EX_INFO can be written to and read from.
+
+@$@<Function sc07@>@{
+LOCAL void sc07 P_((void));
+LOCAL void sc07 ()
+{
+ printf("Test SC07: Exercise EX_INFO.\n");
+ EX_INFO = 3;
+ as_cold(EX_INFO == 3,"sc07: EX_INFO test failed.");
+}
+@}
+
+@!==============================================================================
+
+@B This test simply checks that the @{ex_str@} function is working.
+
+@$@<Function sc08@>@{
+LOCAL void sc08 P_((void));
+LOCAL void sc08 ()
+{
+ printf("Test SC08: Exercise ex_str.\n");
+ as_cold(ex_str(sloth_ex) == sloth_ex,"sc08: Failed.");
+}
+@}
+
+@!==============================================================================
+
+@B Test the legitimate use of @{EX_POP@}.
+
+@$@<Function sc09@>@{
+LOCAL void sc09 P_((void));
+LOCAL void sc09 ()
+{
+ printf("Test SC09: Test EX_POP.\n");
+ flag=FALSE;
+ EX_BEGIN
+ EX_BEGIN
+ EX_POP; goto finish;
+ EX_FORGET
+ EX_WHEN(sloth_ex) as_bomb("sc09: Inner catcher caught the sloth.");
+ EX_END
+ finish: EX_RAISE(sloth_ex);
+ EX_FORGET
+ EX_WHEN(sloth_ex) flag=TRUE;
+ EX_END
+ as_cold(flag,"sc09: Sloth exception failed to work.");
+ as_cold(_EX_CURR == NULL,"sc09: EX_POP failed to pop correctly.");
+}
+@}
+
+@!==============================================================================
+
+@B This test tests that an unhandled exception will be properly caught.
+
+@$@<Function fa01@>@{
+LOCAL void fa01 P_((void));
+LOCAL void fa01 ()
+{
+ printf("Test FA01: Unhandled Exception\n");
+ printf("------------------------------\n");
+ printf("This test raises the sloth exception but doesn't handle it.\n");
+ printf("The result should be an \"unhandled exception\" bomb specifying\n");
+ printf("the sloth exception. Here we go...\n");
+ printf("\n");
+ EX_RAISE(sloth_ex);
+ as_wl ("FA01 FAILED: the exception package did not catch the\n");
+ as_bomb("unhandled sloth exception.\n");
+}
+@}
+
+@!==============================================================================
+
+@B This test tests two calls to @{EX_POP@}.
+
+@$@<Function fa02@>@{
+LOCAL void fa02 P_((void));
+LOCAL void fa02 ()
+{
+ printf("Test FA02: Double EX_POP\n");
+ printf("------------------------\n");
+ printf("This test executes two calls to EX_POP within the normal code of\n");
+ printf("an exception block. The second one should cause a\n");
+ printf("\"context stack is empty\" bomb. Here we go...\n");
+ printf("\n");
+ EX_BEGIN
+ EX_POP;
+ EX_POP;
+ as_bomb("FA02 FAILED: Second EX_POP did not cause bomb (1).");
+ EX_FORGET
+ EX_END
+ as_bomb("FA02 FAILED: Second EX_POP did not cause bomb (2).");
+}
+@}
+
+@!==============================================================================
+
+@B This test tests a single call to @{EX_POP@} followed by a normal
+termination of the normal code.
+
+@$@<Function fa03@>@{
+LOCAL void fa03 P_((void));
+LOCAL void fa03 ()
+{
+ printf("Test FA03: EX_POP Followed by Normal Termination\n");
+ printf("------------------------------------------------\n");
+ printf("This test executes a call to EX_POP then falls through to the\n");
+ printf("end of the normal code of the exception block. The result should\n");
+ printf("be a \"context stack is empty\" bomb. Here we go...\n");
+ printf("\n");
+ EX_BEGIN
+ EX_POP;
+ EX_FORGET
+ EX_END
+ as_bomb("FA03 FAILED: Fallthough after EX_POP did not cause bomb.");
+}
+@}
+
+@!==============================================================================
+
+@B This test checks to make sure that a context can detect when it is popping
+the wrong context.
+
+@$@<Function fa04@>@{
+LOCAL void fa04 P_((void));
+LOCAL void fa04 ()
+{
+ printf("Test FA04: Exit a block without EX_POPing\n");
+ printf("-----------------------------------------\n");
+ printf("This test exits an exception block using a goto without first\n");
+ printf("EX_POPing. The exception block is nested within another, and this\n");
+ printf("test is to make sure that the outer block detects that it is\n");
+ printf("popping the wrong context. The result should be a\n");
+ printf("\"not current context\" bomb. Here we go...\n");
+ printf("\n");
+ EX_BEGIN
+ EX_BEGIN
+ goto there;
+ EX_FORGET
+ EX_END
+ there:
+ EX_FORGET
+ EX_END
+ as_bomb("FA04 FAILED: Outer block FAILED to detect stack misalignment.");
+}
+@}
+
+@!==============================================================================
+
+@B This test tests for the detection of an unpopped invalid stack context.
+
+@$@<Function fa05@>@{
+LOCAL void fa05_x P_((void));
+LOCAL void fa05_x ()
+{
+ EX_BEGIN
+ return;
+ EX_FORGET
+ EX_END
+}
+
+LOCAL void fa05 P_((void));
+LOCAL void fa05 ()
+{
+ printf("Test FA05: Target Context Does Not Exist\n");
+ printf("----------------------------------------\n");
+ printf("This test exits an exception block from within a function using\n");
+ printf("a return statement. Thus, the context remains stacked even though\n");
+ printf("the enclosing C block has terminated. This test checks to see\n");
+ printf("whether this problem is detected next time an exception is raised.\n");
+ printf("The result should be an illegitimate context error. Here we go...\n");
+ printf("\n");
+ EX_BEGIN
+ fa05_x();
+ EX_RAISE(sloth_ex);
+ as_bomb("FA05 FAILED: Failed to raise sloth.");
+ EX_FORGET
+ EX_WHEN(sloth_ex)
+ as_bomb("FA05 FAILED: Sloth exception was raised.");
+ EX_END
+ as_bomb("FA05 FAILED: Costruct terminated normally - it shouldn't have.");
+}
+@}
+
+@!==============================================================================
+
+@B This test is identical to the previous one except that the test is made
+at the point of exit of the outer block, not at the point of raising an
+exception.
+
+@$@<Function fa06@>@{
+LOCAL void fa06 P_((void));
+LOCAL void fa06 ()
+{
+ printf("Test FA06: Target Context Does Not Exist (Fallthrough)\n");
+ printf("------------------------------------------------------\n");
+ printf("This test is identical to test FA05 except that it does not\n");
+ printf("raise an exception in the outer block. The result should be a\n");
+ printf("\"not current context\" error. Here we go...\n");
+ printf("\n");
+ EX_BEGIN
+ fa05_x();
+ EX_FORGET
+ EX_END
+ as_bomb("FA06 FAILED: Costruct terminated normally - it shouldn't have.");
+}
+@}
+
+@!==============================================================================
+
+@B
+
+@$@<Function fa07@>@{
+LOCAL void fa07 P_((void));
+LOCAL void fa07 ()
+{
+ as_bomb("Test FA07: Test FA06 is the last test.");
+}
+@}
+@!==============================================================================
+
+@B
+
+@$@<Function fa08@>@{
+LOCAL void fa08 P_((void));
+LOCAL void fa08 ()
+{
+ as_bomb("Test FA08: Test FA06 is the last test.");
+}
+@}
+@!==============================================================================
+
+@B
+
+@$@<Function fa09@>@{
+LOCAL void fa09 P_((void));
+LOCAL void fa09 ()
+{
+ as_bomb("Test FA09: Test FA06 is the last test.");
+}
+@}
+
+@!******************************************************************************
+@!******************************************************************************
+
+@A@<Design Notes@>
+
+This section contains a detailed design discussion of particular aspects of
+this package. Inserting these notes into the implementation section would have
+cluttered it up too much.
+
+@!==============================================================================
+
+@B@<Architectural Discussion@>
+
+The basic engine for exceptions is provided by the ANSI standard @{setjmp@}
+and @{longjmp@} primitives which provide simple non-local jumps. The challenge
+is organizing them into an exception facility. To see the problems involved
+in doing this, we need only focus on an executing program at the time that
+an exception is raised. At this time, the exceptions package must locate
+the closest handler for the particular exception. From this, two things
+become immediately clear: 1) that the exceptions package is going to have to
+perform ``work'' whenever an exception block is encountered as well as whenever
+an exception is raised, 2) some sort of stacking of @{jmp_buf@} contexts
+is required.
+
+This reasoning suggests two organizations:
+
+1) Maintain a stack for each exception. Whenever an exception block is
+entered, push all the handlers for that block on their respective stacks.
+Pop them when exiting the handler. If an exception is raised, simply look
+on the top of its stack.
+
+2) Maintain a stack of exception blocks. If an exception is raised, search
+each block in turn for a matching handler.
+
+Of these two organizations, the second is by far the better. Exceptions are
+almost by definition rare events, and so in assessing the two organizations,
+the emphasis should be placed on the efficiency of the ordinary case which
+is the pushing and popping. The first alternative may require multiple pushes
+and pops per exception block, whereas the second requires just one. There
+are also a number of more practical reasons why the second alternative is
+better.
+
+Having decided that a stack of exception blocks should be maintained, the
+next thing to decide is where it should be stored. The first thing that
+pops to mind is to organize for the exceptions package to maintain a stack
+in a linked list growing out of a global variable. While completely feasible,
+this solution is distasteful as it requires a memory allocation and
+deallocation per exception block instance. A far better scheme is simply
+to store the stack on the run-time stack! This can be done by storing
+each node of the stack in an automatic variable within the stack frame
+of the function containing the exception block. These automatic variables
+can then be threaded together with points to form the originally desired
+explicit stack.
+
+@!==============================================================================
+
+@B@<Exception Identity@>
+
+One interesting aspect of the design is the identity of exceptions.
+When the client raises an exception by calling @{ex_raise@}, an argument
+must be provided that in some way identifies the exception being raised.
+A number of possible schemes spring to mind:
+
+@/Integer/preprocessor constant:@/ Each exception could be mapped
+onto a unique integer which would represent the exception. These integers
+could be managed by defining preprocessor symbols for them. To raise an
+exception, the client would simply pass the preprocessor symbol. This solution
+is simple and provides compile-time checking (if the client programmer
+mistypes a number, the problem won't be discovered until the exception is
+raised and not caught, but if the client mistypes a preprocessor symbol, the
+compiler will issue an ``unknown symbol'' error), but it does not provide
+any way to ensure that two different exceptions in two different modules
+are not using the same number to represent the two different exceptions.
+There are organizational solutions to this problem such as having the
+programmer maintain a global list of exceptions, but these are generally
+unacceptable in the long run. One other solution is to make exception
+integers wide (e.g. 32-bits) and have the programmer choose the integer
+for each exception by tossing a coin 32 times. The probability of a collision
+would be tiny. To be sure that two exceptions were not using the same
+number, exceptions could be registered with the exceptions package which
+would check the uniqueness of each registered exception integer. Registration
+would also allow the exception package to bind a string name to each
+exception number.
+
+@/Integer/variable:@/ The first solution is clean because it uses
+preprocessor symbols. A slightly different solution is to use global variables
+instead. Under this scheme, a module exporting an exception exports a global
+integer variable that represents the exception. When the package starts
+up, it registers the exception with the exception package. Registration in
+this case is active, not passive; the exceptions package allocates an
+exception number which is assigned to the variable. This solution has the
+advantage of guaranteeing that exception numbers are unique. However,
+exceptions often happen under strange conditions and it is probably a
+disadvantage to have an exception represented by a writeable variable.
+
+@/Pointer to record:@/ An alternative to integers is to represent
+exceptions by pointers to records describing the exceptions. Each record
+could be declared statically (thus ensuring that each record has a unique
+pointer) and could contain a description of the exception and possibly
+other useful information (e.g. a count of how often the exception has fired).
+The pointers to the records could be constants.
+
+@/Pointer to string:@/ Pointers to records are OK, but are rather messy
+to declare. As it seems that the only information that really needs to be
+bound to an exception is a string describing the exception, a far better
+more direct scheme is simply to represent exceptions as pointers to strings.
+Each exception can be statically declared as a @{const@} pointer to a string.
+This solves all the problems: 1) the exception identity is read-only,
+2) the exception identity is unique (because each string is stored at
+a different address), 3) the exception identity is easy to declare,
+4) the exceptions package doesn't have to manage a table of exceptions,
+5) the exception variable names are subject to compile-time checking.
+The only disadvantages are that 1) the compiler might overlap two constant
+strings if one is a non-strict suffix of the other, 2) the exception is
+represented by an object that is basically a variable which could be
+accidentally written-to if the program goes haywire before the exception is
+raised. The @{const@} attribute helps, but may be ignored by many compilers
+which will place the variable in writeable memory. These disadvantages are
+considered minor compared to the advantages.
+
+Of the solutions given above, the simplest and cleanest is the pointer to
+string solution, and this is the scheme that is used in this package. This
+is a particularly satisfactory solution because it solves the problem of
+exception identity and exception description in one go.
+
+@!==============================================================================
+
+@B@<Identifier Names@>
+
+Because it contains macros that refer to global variables, this package
+exposes the major proportion of its names to the client. As such, particular
+care must be taken with names.
+
+To assist portability to brain-dead compilers, all names have generally been
+restricted to six characters for external identifiers and eight for internal
+identifiers. Upper case has been used for preprocessor symbols and lower case
+for other identifiers. Although the use of upper case in the main exception
+syntax is a little loud, it is also a continuous reminder that this is a
+dangerous construct.
+
+The menemonic for this package is @{ex@} and this appears at the beginning of
+every exported symbol. This will assist to reduce symbol collisions.
+In addition, any symbol that is not intended to be seen by the client has
+been prepended with an underscore. This is a little bit naughty as it
+contravenes the ANSI standard's rule 7.13 on identifiers reserved for
+libraries (``@/All identifiers that begin with an underscore are always
+reserved for use as identifiers with file scrope in both the ordinary
+identifier and tag name spaces@/''), but as this package is supposed to be
+a library package too, it seems only a minor breach, and completely in keeping
+with the style of the ANSI library.
+
+The names of all the exported constructs were chosen very carefully.
+Because most of the exported items were macros, by universal convention,
+their identifiers had to be in upper case. This requirement was not a
+disadvantage though as exception handlers are so important that they ought
+to be syntactically ``loud''. Prefixing each symbol with @{EX_@} is a little
+verbose, but was worthwhile because it immediately binds the symbol so
+tightly to this package that generic suffixes such as @{BEGIN@} can be used
+as a suffix. Thus @{EX_BEGIN@} and @{EX_END@} strongly convey their identity
+as the boundaries of an anonymous block, but also strongly indicate that the
+block is designed to handle exceptions.
+
+As mentioned earlier, the identifier @{EX_FORGET@} was chosen so as to
+continually remind the programmer that, in the event of an exception, all
+automatic variables defined within the function containing the exception block
+and which have been written since the @{EX_BEGIN@} of the block, will be
+undefined. This is such an important semantic point that it was considered
+worthy of being embodied in the syntax too.
+
+The hardest identifier to choose was @{EX_RAISE@}. For a long time, this
+construct was simply to take the form of an exported function with the
+name @{ex_rai@}. However, in the end, it was decided that it would be
+better to give this facility the same syntactic feel as the other constructs.
+In addition, the raising of an exception is an event that should probably
+be syntactically loud. Finally @{EX_RAISE@} is more readable than @{ex_rai@}.
+
+@!==============================================================================
+
+@B@<Catering for Multi-Threading@>
+
+An increasing amount of code is being run in a multi-threading environment
+and it is important to ensure that all library packages (such as this one)
+are compatible with multi-threading. A key requirement of multi-threading
+is that there be no global variables, ar at least that all declarations
+and uses of the global variables that do exist have been encapsulated in
+macros that can be redefined to work with multi-threading. In this package,
+the only global variables are @{_ex_curr@}, @{_ex_id@}, and @{_ex_info@}.
+To simplify possible future conversion for use with a multi-threading package,
+all uses of these variables have been expressed in terms of the macros
+@{_EX_CURR@}, @{_EX_ID@}, @{EX_ID@}, and @{EX_INFO@}.
+
+@!==============================================================================
+
+@B@<Checking@>
+
+As mentioned before, exceptions are slippery things that can easily go
+wrong particularly when the exception facility is hacked together, as it
+has here, out of macros and @{longjmp@}s. This section contains a list of
+likely errors and failures and explains how the package copes with them.
+The errors listed here are caught only in the checking version of this
+package. If @{_EX_FAST@} then no checking is performed.
+
+@/Exception has no handler:@/ This simple case is caught by the @{_exrai@}
+function which will detect a @{NULL@} pointer in @{_EX_CURR@} if there
+are no more exception blocks to search for handlers.
+
+@/Client pops the context too often:@/ This case will occur if the
+client calls @{EX_POP@} and then exits the exception block normally, or
+if the client calls @{EX_POP@} more than once within the same exception
+block. Both these errors are detected by the @{_expop@} function which
+tests to ensure that the context it is being asked to pop is the context
+enclosing the @{EX_POP@} call. (Note: @{EX_POP@} won't compile unless it
+is called from within an exception block, so there is no chance of a
+context being popped from an external function).
+
+@/Client exits context without popping it:@/ This is the single biggest
+headache, as there is no way that this error can be detected when it occurs.
+There is nothing to stop the client from executing a @{return@} or explicit
+@{longjmp@} from within an exception block, and if the client does, the
+exception block will still be registered as the top context on the stack
+of exception contexts, and control will be transferred to it if an exception
+goes off, and if this happens, the program is likely to crash, as the
+stack frame containing the exception block no longer exists.
+
+This problem cannot be solved, but it can be attenuated somewhat using
+the three-pronged approach adopted in this package:
+
+1) Whenever a context is popped, a check is performed to ensure that the
+context being popped is the statically enclosing exception block. If it
+isn't, the program bombs. This check means that the stack will be properly
+aligned following each non-illegal termination of each exception block.
+
+2) Whenever an exception is raised, a check is performed to ensure that
+the address of the context on the top of the context stack is lower than
+that of the start of the stack frame of the function raising the exception.
+If it is, then it must be an erroneously unpopped context.
+
+3) Corruptions of context records are detected by having two magic number
+fields in the record, one at the start of the record and one at the end.
+If a record is corrupted, the corruption is likely to be detected the
+next time the record is manipulated.
+
+The last two checks do a good job of covering the two main cases that can
+arise. When an exception block terminates without its context being popped,
+control will often leave the function. If it does, then the top of the
+run-time stack will be higher (in address value for stacks that grow down)
+than the unpopped context. This is detected by the second test. If, later,
+the stack grows again, it is likely to overwrite the unpopped
+context, including the magic numbers it contains. If this happens, then the
+error will be detected the next time an exception is raised or the stack is
+popped.
+
+Obviously, there are ways in which a computer program might satisfy all
+these tests and still be erroneous, but at least these tests provide some
+sort of safety net.
+
+@!******************************************************************************
+
+@B@<Future Improvements@>
+
+This section gives a list of possible future improvements to this package.
+
+* It might be useful to allow the client to specify a block of code that
+is executed after an exception is raised, but before the handlers are scanned.
+This would allow an opportunity for cleaning up.
+
+* Rework the terminology so that it is more consistent.
+
+* Hierarchical exceptions.
+
+That's the end of this package!
+
+@!******************************************************************************
+@!* End of except.fw *
+@!******************************************************************************
+
diff --git a/web/funnelweb/examples/except.h b/web/funnelweb/examples/except.h
new file mode 100644
index 0000000000..08d9fd8a78
--- /dev/null
+++ b/web/funnelweb/examples/except.h
@@ -0,0 +1,143 @@
+
+
+/*************************************************************************/
+/* Package name : Except. */
+/* Version : 1.0 */
+/* Completed : April 1993. */
+/* Released : 29 September 1993. */
+/* First created : This package was first created in April 1993. */
+/* Summary : This package provides Ada-like exceptions for C. */
+/* Components : except.fw - FunnelWeb source file. */
+/* except.h - Exported header file. */
+/* except.c - Implementation file. */
+/* ex_test.c - C test program. */
+/* Requires : style.h, as.h, as.c. */
+/* Author : Ross N. Williams (ross@guest.adelaide.edu.au) */
+/* Rocksoft^tm Pty Ltd */
+/* 16 Lerwick Avenue, Hazelwood Park 5066, Australia. */
+/* FTP Archive : This file can be found in */
+/* "ftp.adelaide.edu.au/pub/funnelweb/examples/" */
+/* Disclaimer : This program is distributed WITHOUT ANY WARRANTY; */
+/* without even the implied warranty of MERCHANTABILITY */
+/* or FITNESS FOR A PARTICULAR PURPOSE. */
+/* Copyright : Copyright (C) Ross Williams 1993. */
+/* However, permission is granted for anyone to copy, */
+/* modify, and distribute this work for any purpose, */
+/* commercial or non-commercial, so long as this notice */
+/* is included verbatim, and so long as all */
+/* modifications are recorded in the change log below. */
+/* Changes : Please log any changes to this software either in the */
+/* originating FunnelWeb source file, or, if you must, */
+/* in the C source files produced from the FunnelWeb */
+/* file. */
+/* --<Start of Change Log>-- */
+/* ??-Apr-93: RNW: Created this package. */
+/* 29-Sep-93: RNW: Released this package. */
+/* --<End of Change Log>-- */
+/*************************************************************************/
+
+#ifndef _EX_DONE
+#define _EX_DONE 1
+
+#include "style.h"
+#include <setjmp.h>
+
+
+typedef string p_ex_t;
+#define EX_EXCEPT(NAME) extern const p_ex_t NAME
+#define EX_EXPORT(NAME,DESC) const p_ex_t NAME = DESC
+#define EX_LOCAL(NAME,DESC) static const p_ex_t NAME = DESC
+
+
+
+#define _EX_FAST FALSE
+/* Set _EX_FAST to TRUE to turn on inlining and turn off checking. */
+
+
+#define _EX_THRD FALSE
+/* To configure this package to work under a multi-threaded environment, */
+/* set _EX_THRD to TRUE and modify the k_var calls later on in the file. */
+
+
+typedef struct _ex_cxt_
+ {
+#if !_EX_FAST
+ ulong _ex_mag1; /* Header magic number. */
+#endif
+ jmp_buf _ex_jmbf; /* Exception block context. */
+ struct _ex_cxt_ *_ex_prev; /* Pointer to previous stack record. */
+#if !_EX_FAST
+ ulong _ex_mag2; /* Trailer magic number. */
+#endif
+ } _ex_cx_t;
+
+#define _EX_MAG1 0xFB8A5D30
+#define _EX_MAG2 0x09F2E7A2
+
+
+#if !_EX_THRD
+extern _ex_cx_t *_ex_curr;
+extern p_ex_t _ex_id;
+extern ptrint _ex_info;
+#endif
+
+
+#if !_EX_THRD
+/* Non-threaded system macros simply point to variables. */
+#define _EX_CURR _ex_curr
+#define EX_ID ((p_ex_t) _ex_id)
+#define _EX_ID _ex_id
+#define EX_INFO _ex_info
+#else
+/* Threaded system macros translate to kernel calls. */
+/* To make this package work in a multi-threaded environment, */
+/* set _EX_THRD to TRUE and modify these definitions. */
+/* Note: The kernel should initialize _EX_CURR to NULL. */
+#define _EX_CURR (* ((_ex_cx_t *) k_var(51)))
+#define EX_ID ((p_ex_t) (* ((p_ex_t *) k_var(52))))
+#define _EX_ID (* ((p_ex_t *) k_var(52)))
+#define EX_INFO (* ((ptrint *) k_var(53)))
+#endif
+
+
+
+#if _EX_FAST
+#define EX_RAISE(P_EX) {_EX_ID = (P_EX); longjmp(_EX_CURR->_ex_jmbf,NON_ZERO);}
+#else
+#define EX_RAISE(P_EX) {_exrai(P_EX);}
+#endif
+
+
+#if _EX_FAST
+#define EX_BEGIN \
+{_ex_cx_t _ex_cxlc; \
+ _ex_cxlc._ex_prev = _EX_CURR; \
+ _EX_CURR = &_ex_cxlc; \
+ if (!setjmp(_ex_cxlc._ex_jmbf)) {
+#define EX_FORGET ;EX_POP} else {EX_POP; if (FALSE) {
+#define EX_WHEN(P_EX) } else if ((P_EX) == (EX_ID)) {
+#define EX_OTHERS } else if (TRUE) {
+#define EX_END } else longjmp(_EX_CURR->_ex_jmbf,NON_ZERO); }}
+#define EX_POP {_EX_CURR = _EX_CURR->_ex_prev;}
+#else
+#define EX_BEGIN \
+{_ex_cx_t _ex_cxlc; \
+ _ex_cxlc._ex_mag1 = _EX_MAG1; \
+ _ex_cxlc._ex_mag2 = _EX_MAG2; \
+ _ex_cxlc._ex_prev = _EX_CURR; \
+ _EX_CURR = &_ex_cxlc; \
+ if (!setjmp(_ex_cxlc._ex_jmbf)) {
+#define EX_FORGET ;EX_POP} else {EX_POP; if (FALSE) {
+#define EX_WHEN(P_EX) } else if ((P_EX) == (EX_ID)) {
+#define EX_OTHERS } else if (TRUE) {
+#define EX_END } else _exrai(EX_ID); }}
+#define EX_POP {_expop(&_ex_cxlc);}
+#endif
+
+EXPORT string ex_str P_((p_ex_t));
+
+EXPORT void _exrai P_((p_ex_t));
+EXPORT void _expop P_((_ex_cx_t *));
+
+#endif
+
diff --git a/web/funnelweb/examples/except.ps b/web/funnelweb/examples/except.ps
new file mode 100644
index 0000000000..f5c3321428
--- /dev/null
+++ b/web/funnelweb/examples/except.ps
@@ -0,0 +1,21767 @@
+%!
+% This is the prolog used by OzTeX 1.42 to convert a DVI file into PostScript.
+
+% Set dev to "LW" if LaserWriter, "LINO" if Linotronic, or "?" if unknown:
+
+/dev (?) def
+statusdict /product known {
+ statusdict /product get
+ (LaserWriter) anchorsearch { pop pop /dev (LW) def } { pop } ifelse
+ statusdict /product get
+ (Linotype) anchorsearch { pop pop /dev (LINO) def } { pop } ifelse
+} if
+
+% OzTeX calls @setup with the following parameters:
+% resolution (integer), landscape (boolean), horizontal and vertical offsets
+% (integers that are used to position the TeX origin correctly).
+
+/@setup { % set up OzTeX's coordinate system
+
+/voff exch def
+/hoff exch def
+/land exch def
+/res exch def
+
+/oshift -10.7 def % shift for TeX origin;
+ % assumes A4 paper height (-11.7in + 1in);
+ % you may want to change to -10.0 for US Letter paper
+
+dev (?) eq % unknown device?
+{ land
+ { % landscape
+ 90 rotate % rotate axes 90deg anticlockwise
+ 72 res div dup neg scale % units now device dots
+ res dup translate % move to TeX origin
+ voff neg hoff translate % adjust TeX origin if necessary
+ }
+ { % portrait
+ 72 res div dup neg scale % units now device dots
+ res oshift res mul translate % move to TeX origin
+ hoff voff translate % adjust TeX origin if necessary
+ } ifelse
+} if
+
+dev (LW) eq % LaserWriter?
+{
+ % Display model and version in OzTeX window:
+ % (\rmodel = ) print statusdict /product get print
+ % (\rversion = ) print version print (\r) print flush
+
+ land
+ { % landscape
+ 90 rotate % rotate axes 90deg anticlockwise
+ 72 res div dup neg scale % units now device dots
+ res dup translate % move to TeX origin
+ voff neg hoff translate % adjust TeX origin if necessary
+
+ % Model-specific adjustments to origin can be made here:
+ statusdict /product get (LaserWriter) eq
+ { -90 0 translate % move left a bit
+ }
+ { statusdict /product get (LaserWriter Plus) eq
+ { -32 0 translate % move left a bit
+ }
+ { statusdict /product get (LaserWriter II NTX) eq
+ { -20 0 translate % move left a bit
+ }
+ { statusdict /product get (LaserWriter IIg) eq
+ { 0 0 translate
+ }
+ { % some other model
+ 0 0 translate
+ }
+ ifelse } ifelse } ifelse } ifelse
+ }
+ { % portrait
+ 72 res div dup neg scale % units now device dots
+ res oshift res mul translate % move to TeX origin
+ hoff voff translate % adjust TeX origin if necessary
+
+ % Model-specific adjustments to origin can be made here:
+ statusdict /product get (LaserWriter) eq
+ { 0 22 translate % move down a bit
+ }
+ { statusdict /product get (LaserWriter Plus) eq
+ { 0 0 translate
+ }
+ { statusdict /product get (LaserWriter II NTX) eq
+ { 0 14 translate % move down a bit
+ }
+ { statusdict /product get (LaserWriter IIg) eq
+ { 0 0 translate
+ }
+ { % some other model
+ 0 0 translate
+ }
+ ifelse } ifelse } ifelse } ifelse
+ } ifelse
+
+ % The matrix produced above can cause scaling problems,
+ % so round each matrix value to nearest integer and use setmatrix:
+ matrix currentmatrix
+ dup dup 0 get round cvi 0 exch put
+ dup dup 1 get round cvi 1 exch put
+ dup dup 2 get round cvi 2 exch put
+ dup dup 3 get round cvi 3 exch put
+ dup dup 4 get round cvi 4 exch put
+ dup dup 5 get round cvi 5 exch put
+ setmatrix
+
+ % Display new matrix in OzTeX window:
+ % matrix currentmatrix
+ % dup 0 get ( ) cvs print ( ) print
+ % dup 1 get ( ) cvs print ( ) print
+ % dup 2 get ( ) cvs print ( ) print
+ % dup 3 get ( ) cvs print ( ) print
+ % dup 4 get ( ) cvs print ( ) print
+ % dup 5 get ( ) cvs print (\r) print flush
+ % pop
+} if
+
+dev (LINO) eq % Linotronic?
+{ land
+ { % landscape
+ 90 rotate % rotate axes 90deg anticlockwise
+ 72 res div dup neg scale % units now device dots
+ res dup translate % move to TeX origin
+ voff neg hoff translate % adjust TeX origin if necessary
+ }
+ { % portrait
+ newpath clippath pathbbox % push LLx LLy URx URy (URy = ht in pts)
+ /paperht exch 72 div def % paper height in inches
+ pop pop pop % remove URx LLy LLx
+ 72 res div dup neg scale % units now device dots
+ res paperht res mul neg res add
+ translate % move to TeX origin
+ hoff voff translate % adjust TeX origin if necessary
+ } ifelse
+} if
+
+% Some fine-tuning of the code used to draw a rule is necessary.
+% Use page 18 in nasty.dvi to check results:
+
+dev (LW) eq % LaserWriter?
+{ version cvr 38.0 le % early model?
+ { land
+ { % landscape
+ /r % set a wd by ht rule at h,v
+ { newpath
+ moveto % move to h,v
+ /ht exch 1 sub def % reduce height by 1
+ /wd exch 1 sub def % ditto for width
+ wd 0 rlineto
+ 0 ht neg rlineto
+ wd neg 0 rlineto
+ fill
+ } bind def
+ }
+ { % portrait
+ /r % set a wd by ht rule at h,v
+ { newpath
+ 1 add moveto % move to h,v+1
+ /ht exch 1 sub def % reduce height by 1
+ /wd exch 1 sub def % ditto for width
+ wd 0 rlineto
+ 0 ht neg rlineto
+ wd neg 0 rlineto
+ fill
+ } bind def
+ } ifelse
+ } if
+ version cvr 2000.0 gt % IIg or newer model?
+ {
+ /r % set a wd by ht rule at h,v
+ { newpath
+ 1 add moveto % move to h,v+1
+ /ht exch def % set height
+ /wd exch def % set width
+ wd 0 rlineto
+ 0 ht neg rlineto
+ wd neg 0 rlineto
+ fill
+ } bind def
+ } if
+} if
+
+/mtrx 6 array def
+mtrx currentmatrix pop % save our new transformation matrix
+
+} def % end of @setup
+
+% @saveVM and @restoreVM are only used if we are conserving VM
+% by downloading font bitmaps more often:
+
+/@saveVM {/prefontVM save def} def
+/@restoreVM {prefontVM restore} def
+
+/@newfont % create new font dict
+{ /maxchcode exch def
+ /fontid exch def
+ fontid 7 dict def
+ fontid load begin
+ /FontType 3 def
+ /FontMatrix [1 0 0 -1 0 0] def % -1 because y scale is negative
+ /FontBBox [0 0 1 1] def
+ /BitMaps maxchcode 1 add array def
+ /BuildChar {CharBuilder} def
+
+ /Encoding 256 array def
+ 0 1 255 {Encoding exch /.notdef put} for
+
+ % The above 2 lines fix a definefont error that occurs on some printers
+ % (eg. the LaserWriter NTX-J). If you have an old LaserWriter and
+ % now get VM errors then you might want to revert to the old code:
+ %
+ % /Encoding maxchcode 1 add array def
+ % 0 1 maxchcode {Encoding exch /.notdef put} for
+
+ end
+ fontid fontid load definefont pop
+} def
+
+% The char data, a bitmap descriptor, is an array with 6 elements:
+
+/ch-image {ch-data 0 get} def % the hex string image
+/ch-width {ch-data 1 get} def % the number of pixels across
+/ch-height {ch-data 2 get} def % the number of pixels tall
+/ch-xoff {ch-data 3 get} def % number of pixels to left of origin
+/ch-yoff {ch-data 4 get} def % number of pixels below origin
+/ch-advw {ch-data 5 get} def % advance width
+
+% The following character builder looks up the char data in the BitMaps array
+% and paints the character:
+
+/CharBuilder % image one char
+{ /ch-code exch def % save the char code
+ /font-dict exch def % and the font dict
+ /ch-data font-dict /BitMaps get
+ ch-code get def
+ ch-advw 0
+ ch-xoff neg ch-height ch-yoff sub 1 sub neg % -xo , -(ht-yo-1)
+ ch-width ch-xoff sub 1 sub ch-yoff % (wd-xo-1) , yo
+ setcachedevice
+ ch-width ch-height true
+ [1 0 0 -1 ch-xoff ch-yoff] % bitmap sent top to bottom
+ {ch-image}
+ imagemask
+} def
+
+/sf {setfont} def % set current font
+
+/dc % define new character
+{ /ch-code exch def
+ /ch-data exch def
+
+ % The following code should be enabled if you have an old LaserWriter.
+ % It attempts to overcome a bug that causes the printer to crash
+ % and print a test page rather then report a VMerror.
+ %
+ % vmstatus % returns: savelevel vmused vmmax
+ % 10000 sub gt % is vmused > (vmmax-10000)?
+ % { pop VMERROR } % causes error message (avoiding crash)
+ % { pop } % pop savelevel
+ % ifelse
+
+ currentfont /BitMaps get ch-code ch-data put
+ currentfont /Encoding get ch-code
+ dup ( ) cvs cvn put % generate unique name
+} bind def
+
+/@bop0 {pop} def % begin DVI page n
+
+/@bop1 % begin setting DVI page n
+{ pop % throw away page number
+ initgraphics % start with a clean slate
+ mtrx setmatrix % switch to our TeX coordinate system
+ /prepageVM save def % save state of VM at start of page
+} def
+
+/@eop % end DVI page n
+{ pop % throw away page number
+ prepageVM restore % restore VM to state at start of page
+ showpage
+} def
+
+/@end { } def % end of file
+
+% h and s are used to typeset downloaded bitmap fonts:
+
+/h {exch 0 rmoveto show} bind def % move right by dh and show (...)
+
+/s {3 1 roll moveto show} bind def % move to h,v and show (...)
+
+% H and S are used to typeset resident PostScript fonts.
+% We can't use relative horizontal positioning because the advance widths in
+% a PostScript font are not integers and rounding errors would accumulate:
+
+/H {exch v moveto show} bind def % move to h,v and show (...)
+
+/S % ditto, and save v position
+{ 3 1 roll
+ 1 add % v+1 to match baseline of bitmap fonts
+ dup /v exch def
+ moveto show
+} bind def
+
+% r is used to typeset a rule:
+
+/r % set a wd by ht rule at h,v
+{ newpath
+ moveto % move to h,v
+ /ht exch 1 sub def % reduce height by 1
+ /wd exch 1 sub def % ditto for width
+ wd 0 rlineto
+ 0 ht neg rlineto
+ wd neg 0 rlineto
+ fill
+} bind def
+
+% Following procedures are invoked as the result of \special{file}.
+% We change all scaling and graphics back to defaults, but shift the origin
+% to the current position on the page:
+
+/@bsp
+{ /vmag exch def % vertical scaling
+ /hmag exch def % horizontal scaling
+ moveto % move to h,v
+ gsave
+ /prespecialVM save def % save showpage, TeX procedures etc.
+ currentpoint transform
+ initgraphics itransform translate
+ hmag vmag scale
+ land { 90 rotate } if % rotate axes if landscape
+ /showpage { } def % user does not have to remove showpage
+} bind def
+
+/@esp
+{ prespecialVM restore % restore saved showpage value etc.
+ grestore
+} bind def
+
+% Following procedures are invoked as the result of \special{epsf=file}.
+% Note that @bepsf and @eepsf are currently identical to @bsp and @esp
+% but it is a good idea to allow for future changes:
+
+/@bepsf
+{ /vmag exch def % vertical scaling
+ /hmag exch def % horizontal scaling
+ moveto % move to h,v
+ gsave
+ /prespecialVM save def % save showpage, TeX procedures etc.
+ currentpoint transform
+ initgraphics itransform translate
+ hmag vmag scale
+ land { 90 rotate } if % rotate axes if landscape
+ /showpage { } def % user does not have to remove showpage
+} bind def
+
+/@eepsf
+{ prespecialVM restore % restore saved showpage value etc.
+ grestore
+} bind def
+
+% Here is the code to handle bitmaps generated by PICT/PNTG \specials:
+
+/@bitmap
+{ /vmag exch def % vertical scaling
+ /hmag exch def % horizontal scaling
+ /vres exch def % vertical resolution of bitmap
+ /hres exch def % horizontal resolution of bitmap
+ /ht exch def % height
+ /wd exch def % width
+ /hexstring ht string def
+ gsave
+ 1 add translate % set origin to h,v+1
+ res hres div wd mul hmag mul
+ res vres div ht mul vmag mul neg scale
+ wd ht true
+ [ wd 0 0 ht neg 0 ht ]
+ { currentfile hexstring readhexstring pop }
+ imagemask
+ grestore
+} def
+
+% Here are the definitions needed to handle resident PostScript fonts:
+
+/sp % scaled pts to device dots
+{ 16#10000 div % scaled pts to pts
+ res mul 72.27 div % pts to device dots
+} bind def
+
+/PSfont % uses dot size and TFM name
+{ dup /Times-Slanted eq
+ {pop /Times-Roman findfont [1 0 .268 -1 0 0] makefont exch scalefont setfont}
+ {findfont [1 0 0 -1 0 0] makefont exch scalefont setfont}
+ ifelse
+} bind def
+
+% count 0 gt
+% { (\r *** Bug in DVItoPS.ps: stuff left on stack *** \r) print flush
+% } if
+
+% End of OzTeX's prolog.
+300 false 0 0 @setup
+1 @bop0
+/cmbx10.622 127 @newfont
+/cmbx10.432 127 @newfont
+/cmr10.300 127 @newfont
+cmr10.300 sf
+[<030007003F00C700070007000700070007000700070007000700070007000700070007
+00070007000700070007000700070007000F80FFF8>
+16 28 -4 27 21] 49 dc
+cmbx10.622 sf
+[<FFFFFFFFFFFFF000FFFFFFFFFFFFF000FFFFFFFFFFFFF000FFFFFFFFFFFFF000007FF8
+0001FFF800007FF800001FF800007FF8000007F800007FF8000003F800007FF8000001F8
+00007FF8000000F800007FF8000000F800007FF80000007C00007FF80000007C00007FF8
+0000007C00007FF80000003C00007FF80000003C00007FF8003C003C00007FF8003C003C
+00007FF8003C001E00007FF8003C001E00007FF8003C001E00007FF8003C000000007FF8
+007C000000007FF8007C000000007FF800FC000000007FF803FC000000007FFFFFFC0000
+00007FFFFFFC000000007FFFFFFC000000007FFFFFFC000000007FF803FC000000007FF8
+00FC000000007FF8007C000000007FF8007C000000007FF8003C000000007FF8003C0007
+80007FF8003C000780007FF8003C000780007FF8003C000F00007FF8003C000F00007FF8
+0000000F00007FF80000000F00007FF80000001F00007FF80000001F00007FF80000001E
+00007FF80000003E00007FF80000003E00007FF80000003E00007FF80000007E00007FF8
+000000FE00007FF8000001FC00007FF8000003FC00007FF8000007FC00007FF800001FFC
+00007FF80001FFFC00FFFFFFFFFFFFFC00FFFFFFFFFFFFF800FFFFFFFFFFFFF800FFFFFF
+FFFFFFF800>
+64 59 -4 58 65] 69 dc
+[<FFFFF007FFFCFFFFF007FFFCFFFFF007FFFCFFFFF007FFFC01FF8000FC0000FFC000F8
+0000FFE001F000007FF003E000003FF007C000001FF80FC000000FFC1F8000000FFE1F00
+000007FF3E00000003FFFC00000001FFF800000000FFF0000000007FE0000000007FF000
+0000003FF8000000001FF8000000001FFC000000003FFE000000007FFF00000000FBFF80
+000001F9FF80000003F0FFC0000003E07FE0000007C07FF000000F803FF800001F001FFC
+00003E000FFC00007C0007FE0000FC0003FF0001FC0003FF80FFFF801FFFFEFFFF801FFF
+FEFFFF801FFFFEFFFF801FFFFE>
+48 38 -2 37 52] 120 dc
+[<0000FFF000000FFFFF00003FFFFFC000FFC03FE001FF003FF007FE007FF00FFC007FF0
+0FF8007FF01FF8007FF03FF0007FF03FF0003FE07FF0001FC07FE00007007FE0000000FF
+E0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0
+000000FFE0000000FFE00000007FE00000007FF00000007FF00000003FF00000003FF800
+00781FF80000780FFC0000F80FFE0001F007FF0003E001FF8007C000FFE01F80003FFFFF
+00000FFFFC000000FFC000>
+40 38 -3 37 44] 99 dc
+[<0001FFC000000FFFF800003FFFFE0000FF80FF0001FE003F8007FC001FC00FF8000FE0
+0FF8000FF01FF00007F03FF00007F83FF00007F87FE00007F87FE00003FC7FE00003FC7F
+E00003FCFFE00003FCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFE0000000FFE0000000FFE0
+000000FFE00000007FE00000007FE00000007FE00000003FE00000003FF000003C1FF000
+003C1FF000003C0FF800007807FC0000F803FE0001F001FF0007E000FFC03FC0003FFFFF
+000007FFFC000000FFE000>
+40 38 -3 37 45] 101 dc
+[<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE03FF00FFFFF001FFC003FFE0007F
+E003FF80007FF003FF80003FF803FF00001FF803FF00001FFC03FF00000FFC03FF00000F
+FE03FF00000FFE03FF00000FFE03FF000007FF03FF000007FF03FF000007FF03FF000007
+FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007
+FF03FF00000FFE03FF00000FFE03FF00000FFE03FF00001FFC03FF00001FFC03FF00001F
+F803FF80003FF003FFC0007FF003FFE000FFE003FFF001FF8003FFFC07FF0003FF3FFFFC
+0003FF0FFFF00003FF01FF000003FF0000000003FF0000000003FF0000000003FF000000
+0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
+0003FF0000000003FF0000000003FF00000000FFFFFC000000FFFFFC000000FFFFFC0000
+00FFFFFC000000>
+48 55 -3 37 55] 112 dc
+[<0007800000078000000780000007800000078000000F8000000F8000000F8000000F80
+00001F8000001F8000003F8000003F8000007F800000FF800001FF800007FF80001FFFFF
+F0FFFFFFF0FFFFFFF0FFFFFFF001FF800001FF800001FF800001FF800001FF800001FF80
+0001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF80
+0001FF800001FF800001FF800001FF800001FF803C01FF803C01FF803C01FF803C01FF80
+3C01FF803C01FF803C01FF803C00FF807800FFC078007FC0F8007FE1F0001FFFE00007FF
+C00001FF00>
+32 55 -2 54 38] 116 dc
+[<00F00003FC0007FE000FFE000FFF001FFF001FFF001FFF000FFF000FFE0007FE0003FC
+0000F00000000000000000000000000000000000000000000000000000000000000000FF
+00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF
+0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF
+0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00FFFFF8FFFFF8FFFF
+F8FFFFF8>
+24 61 -3 60 27] 105 dc
+[<0000FFC00000000FFFFC0000003FFFFF000000FFC0FFC00001FE001FE00007FC000FF8
+0007F80007F8000FF00003FC001FF00003FE003FF00003FF003FE00001FF007FE00001FF
+807FE00001FF807FE00001FF807FE00001FF80FFE00001FFC0FFE00001FFC0FFE00001FF
+C0FFE00001FFC0FFE00001FFC0FFE00001FFC0FFE00001FFC0FFE00001FFC0FFE00001FF
+C07FE00001FF807FE00001FF807FE00001FF803FF00003FF003FF00003FF001FF00003FE
+000FF80007FC000FF80007FC0007FC000FF80003FE001FF00000FFC0FFC000003FFFFF00
+00000FFFFC00000001FFE00000>
+48 38 -3 37 49] 111 dc
+[<00FE007FC000FFFE01FFF800FFFE07FFFE00FFFE1F03FF00FFFE3C01FF0007FE7801FF
+8003FE7000FF8003FEE000FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
+C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFF
+FFFFFFFC3FFFFFFFFFFC3FFFFF>
+48 38 -4 37 55] 110 dc
+[<003FF83801FFFEF807FFFFF81FC00FF83F0003F87E0001F87C0000F87C0000F8FC0000
+78FE000078FE000078FF800000FFE00000FFFF80007FFFFC007FFFFF003FFFFFC01FFFFF
+F00FFFFFF807FFFFFC01FFFFFE003FFFFE0001FFFF00000FFF000001FFF00000FFF00000
+7FF800003FF800003FFC00003FFC00003EFE00007EFF00007CFF8000FCFFF007F0FFFFFF
+E0F8FFFF80E01FFC00>
+32 38 -3 37 39] 115 dc
+[<FFFFFFFFFF800000FFFFFFFFFFFC0000FFFFFFFFFFFF0000FFFFFFFFFFFFC000007FF8
+0007FFF000007FF80000FFF800007FF800003FFC00007FF800001FFE00007FF800000FFF
+00007FF800000FFF00007FF8000007FF80007FF8000007FF80007FF8000007FF80007FF8
+000007FFC0007FF8000007FFC0007FF8000007FFC0007FF8000007FFC0007FF8000007FF
+C0007FF8000007FFC0007FF8000007FFC0007FF8000007FF80007FF8000007FF80007FF8
+000007FF80007FF800000FFF00007FF800000FFE00007FF800001FFE00007FF800003FFC
+00007FF80000FFF000007FF80007FFE000007FFFFFFFFF8000007FFFFFFFFE0000007FFF
+FFFFF00000007FF80000000000007FF80000000000007FF80000000000007FF800000000
+00007FF80000000000007FF80000000000007FF80000000000007FF80000000000007FF8
+0000000000007FF80000000000007FF80000000000007FF80000000000007FF800000000
+00007FF80000000000007FF80000000000007FF80000000000007FF80000000000007FF8
+0000000000007FF80000000000007FF80000000000007FF80000000000007FF800000000
+00007FF80000000000FFFFFFFC00000000FFFFFFFC00000000FFFFFFFC00000000FFFFFF
+FC00000000>
+64 59 -4 58 68] 80 dc
+[<001FFF00000001FFFFF0000007FFFFFC00000FF807FF00001FF801FF80001FFC00FFC0
+001FFC007FE0001FFC007FE0001FFC007FF0001FFC003FF0000FF8003FF00007F0003FF0
+0001C0003FF0000000003FF0000000003FF0000000003FF0000000FFFFF000000FFFFFF0
+00007FF83FF00003FF803FF00007FE003FF0001FFC003FF0003FF8003FF0007FF0003FF0
+007FE0003FF000FFE0003FF000FFC0003FF000FFC0003FF000FFC0003FF000FFC0007FF0
+00FFC0007FF000FFE000FFF0007FF001DFF0003FF803DFF8001FFC0F8FFFF00FFFFE0FFF
+F001FFFC07FFF0003FE000FFF0>
+48 38 -3 37 48] 97 dc
+[<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF000000
+0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
+0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
+0003FF0000000003FF0000000003FF0000000003FF0000000003FF000FFFF803FF000FFF
+F803FF000FFFF803FF000FFFF803FF0001FE0003FF0001F80003FF0007F00003FF000FC0
+0003FF001F800003FF003F000003FF00FE000003FF01F8000003FF03F0000003FF07E000
+0003FF1FC0000003FF3FE0000003FF7FF0000003FFFFF8000003FFFFFC000003FFFFFC00
+0003FFCFFE000003FF87FF000003FF07FF800003FE03FF800003FE01FFC00003FE00FFE0
+0003FE007FF00003FE007FF00003FE003FF80003FE001FFC0003FE000FFE0003FE000FFE
+0003FE0007FF0003FE0007FF80FFFFF83FFFFEFFFFF83FFFFEFFFFF83FFFFEFFFFF83FFF
+FE>
+48 60 -3 59 52] 107 dc
+[<000000001F800007FF007FC0003FFFE1FFE000FFFFFBE7F003FE03FF07F007FC01FF0F
+F00FF800FF87F00FF800FF87F01FF0007FC3E01FF0007FC0003FF0007FE0003FF0007FE0
+003FF0007FE0003FF0007FE0003FF0007FE0003FF0007FE0003FF0007FE0001FF0007FC0
+001FF0007FC0000FF800FF80000FF800FF800007FC01FF000003FE03FE000003FFFFF800
+00073FFFE000000707FF0000000F00000000000F00000000000F00000000000F80000000
+000F80000000000FE0000000000FFFFFFC00000FFFFFFF800007FFFFFFF00007FFFFFFF8
+0003FFFFFFFE0001FFFFFFFF0003FFFFFFFF000FFFFFFFFF801FC00007FF807F800000FF
+C07F0000003FC0FF0000003FC0FE0000001FC0FE0000001FC0FE0000001FC0FE0000001F
+C0FF0000003FC07F0000003F807F8000007F803FC00000FF000FF00003FC0007FE001FF8
+0001FFFFFFE000003FFFFF00000003FFF00000>
+48 57 -3 38 49] 103 dc
+cmbx10.432 sf
+[<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE00000000FE0000000
+0FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
+E00000000FE1FE00000FE7FF80000FFE07E0000FF803F8000FF001FC000FE000FE000FE0
+00FE000FE0007F000FE0007F000FE0007F800FE0007F800FE0007F800FE0007F800FE000
+7F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F000FE000FF000FE000FE
+000FF000FE000FF001FC000FF803F8000F9E07E0000F0FFF80000E01FC0000>
+40 42 -2 41 38] 98 dc
+[<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F000700007F800F00003F800E000
+03FC01E00001FC01C00001FC01C00000FE03800000FE038000007F070000007F07000000
+7F8F0000003F8E0000003FDE0000001FDC0000001FDC0000000FF80000000FF80000000F
+F800000007F000000007F000000003E000000003E000000001C000000001C00000000380
+0000000380000038078000007C07000000FE0F000000FE0E000000FE1E000000FE3C0000
+007C780000003FE00000000FC0000000>
+40 39 -1 26 36] 121 dc
+[<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC007FE00003FC000FF00003FC0007F8
+0003FC0007FC0003FC0003FC0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE
+0003FC0003FE0003FC0003FE0003FC0003FC0003FC0007F80003FC0007F80003FC001FE0
+0003FC007FC00003FFFFFE000003FFFFF0000003FC01FC000003FC007F000003FC007F80
+0003FC003FC00003FC003FC00003FC001FE00003FC001FE00003FC001FE00003FC001FE0
+0003FC001FF00003FC001FF00003FC001FF00003FC001FF00003FC001FF00703FC001FF8
+0703FC000FF80703FC000FFC0FFFFFF007FE1EFFFFF001FFFCFFFFF0003FF0>
+48 41 -3 40 52] 82 dc
+[<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F0007F07F0007
+F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007
+F87F0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001FFFC00003FE0
+00>
+32 27 -2 26 34] 111 dc
+[<03FE300FFFF03E03F07800F07000F0F00070F00070F80070FC0000FFE000FFFE007FFF
+C03FFFE01FFFF007FFF800FFFC0003FC0000FCE0007CE0003CF0003CF0003CF80078FC00
+78FF01F0F7FFC0C1FF00>
+24 27 -2 26 27] 115 dc
+[<FFFFE07FFFF007FFF0FFFFE07FFFF007FFF0FFFFE07FFFF007FFF003FC0001FE00001C
+0003FC0001FE00001C0001FE0001FF0000380001FE0000FF0000380001FF0000FF000078
+0000FF0000FF8000700000FF0000FF8000700000FF8000FF8000F000007F8001FFC000E0
+00007F8001FFC000E000003FC003FFE001C000003FC0039FE001C000003FE0039FE003C0
+00001FE0070FF0038000001FE0070FF0038000001FF00F0FF0078000000FF00E07F80700
+00000FF00E07F80700000007F81E07FC0E00000007F81C03FC0E00000007FC1C03FC1E00
+000003FC3801FE1C00000003FC3801FE1C00000001FE7801FF3800000001FE7000FF3800
+000001FE7000FF3800000000FFF000FFF000000000FFE0007FF000000000FFE0007FF000
+0000007FC0003FE0000000007FC0003FE0000000003FC0003FC0000000003F80001FC000
+0000003F80001FC0000000001F80001F80000000001F00000F80000000001F00000F8000
+0000000E000007000000>
+72 41 -1 40 71] 87 dc
+[<07001FC01FE03FE03FE03FE01FE01FC007000000000000000000000000000000FFE0FF
+E0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
+E00FE00FE00FE00FE0FFFEFFFEFFFE>
+16 43 -3 42 20] 105 dc
+[<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
+E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
+E00FE00FE00FE0FFFEFFFEFFFE>
+16 42 -3 41 20] 108 dc
+[<01FF800007FFF0000F81FC001FC0FE001FC07F001FC07F001FC03F800F803F8000003F
+8000003F8000003F80000FFF8000FFFF8007FC3F801FE03F803F803F807F803F807F003F
+80FE003F80FE003F80FE003F80FE007F80FF007F807F00FFC03F83DFFC0FFF0FFC01FC03
+FC>
+32 27 -2 26 33] 97 dc
+[<FFC07F800FF000FFC1FFE03FFC00FFC783F0F07E000FCE03F9C07F000FDC01FB803F00
+0FF801FF003F800FF001FE003F800FF001FE003F800FF001FE003F800FE001FC003F800F
+E001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE0
+01FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001
+FC003F800FE001FC003F800FE001FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE1FFF
+C3FFF8FFFE1FFFC3FFF8>
+56 27 -3 26 60] 109 dc
+[<000003800000000007C00000000007C0000000000FE0000000000FE0000000000FE000
+0000001FF0000000001FF0000000003FF8000000003FF8000000003FF80000000073FC00
+00000073FC00000000F3FE00000000E1FE00000000E1FE00000001C0FF00000001C0FF00
+000003C0FF80000003807F80000007807FC0000007003FC0000007003FC000000E003FE0
+00000E001FE000001E001FF000001C000FF000001FFFFFF000003FFFFFF800003FFFFFF8
+0000780007FC0000700003FC0000700003FC0000E00001FE0000E00001FE0001E00001FF
+0001C00000FF0001C00000FF00FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE>
+48 41 -2 40 52] 65 dc
+[<FFE1FE0000FFE7FF8000FFFE07E0000FF803F8000FF001FC000FE001FE000FE000FE00
+0FE000FF000FE000FF000FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800F
+E0007F800FE0007F800FE0007F800FE0007F800FE000FF000FE000FF000FE000FE000FF0
+01FE000FF003FC000FF803F8000FFE0FE0000FEFFF80000FE1FC00000FE00000000FE000
+00000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000
+00FFFE000000FFFE000000FFFE000000>
+40 39 -2 26 38] 112 dc
+[<FFC1F0FFC7FCFFCE3E0FDC7F0FD87F0FF87F0FF07F0FF03E0FF0000FE0000FE0000FE0
+000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0
+00FFFF00FFFF00FFFF00>
+24 27 -2 26 28] 114 dc
+[<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+007FFFFE7FFFFE7FFFFE>
+24 39 -5 38 34] 49 dc
+[<007F800001FFF00007FFF8000FE0FE001FC07E003F803F007F003F807F003F80FF001F
+C0FF001FC0FF001FC0FF001FC0FF001FE0FF001FE0FF001FE0FF001FE07F003FE07F003F
+E07F003FE03F807FE01F80FFE00FE1DFE003FF9FE0007E1FE000001FE000001FC000001F
+C000001FC000003FC01F003F803F803F803F807F003F807F003F80FE003F01FC001E03F8
+000FFFE00007FF800001FE0000>
+32 39 -3 38 34] 57 dc
+[<007F800003FFF00007FFFC001F81FE001F00FF003F80FF003F807F803FC07F803F807F
+803F807F801F007F800000FF800000FF000000FF000001FE000003F8000007F00000FFC0
+0000FFF0000001FC000000FF0000007F8000007FC000003FC000003FE000003FE000003F
+E03C003FE07E003FE0FF003FE0FF003FE0FF003FC0FF007FC0FE007F807C00FF803F01FF
+001FFFFC0007FFF00000FF8000>
+32 39 -3 38 34] 51 dc
+1 @bop1
+cmr10.300 sf
+965 2770(1)s
+cmbx10.622 sf
+739 696(Exceptio)s
+1(ns)h
+803 777(P)s
+-3(ac)h
+-3(k)h
+-6(age)h
+cmbx10.432 sf
+713 994(b)s
+-2(y)h
+24(Ross)h
+23(Will)h
+-1(i)h
+-1(am)h
+-2(s)h
+816 1052(April)s
+22(1993)h
+1 @eop
+2 @bop0
+/cmbx10.360 127 @newfont
+/cmbx10.300 127 @newfont
+cmbx10.622 sf
+[<0000001FFF000070000001FFFFE000F000000FFFFFFC01F000007FFFFFFF03F00001FF
+FE007F87F00007FFE0000FEFF0000FFF000003FFF0003FFE000001FFF0007FF8000000FF
+F000FFF00000007FF001FFE00000003FF003FFC00000001FF003FF800000001FF007FF80
+0000000FF00FFF0000000007F00FFF0000000007F01FFE0000000007F01FFE0000000003
+F03FFC0000000003F03FFC0000000003F07FFC0000000001F07FFC0000000001F07FFC00
+00000001F07FF8000000000000FFF8000000000000FFF8000000000000FFF80000000000
+00FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800
+0000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF80000000000
+00FFF80000000000007FF80000000000007FFC0000000000007FFC0000000000F07FFC00
+00000000F03FFC0000000000F03FFC0000000000F01FFE0000000000F01FFE0000000001
+F00FFF0000000001E00FFF0000000003E007FF8000000003E003FF8000000007C003FFC0
+00000007C001FFE00000000F8000FFF00000001F00007FF80000003E00003FFE0000007C
+00000FFF000001F8000007FFE00007F0000001FFFE003FC00000007FFFFFFF800000000F
+FFFFFC0000000001FFFFF000000000001FFF000000>
+64 61 -5 59 71] 67 dc
+cmbx10.360 sf
+[<7FFFFFFFC07FFFFFFFC07E03F80FC07803F803C07003F801C06003F800C0E003F800E0
+E003F800E0C003F80060C003F80060C003F80060C003F800600003F800000003F8000000
+03F800000003F800000003F800000003F800000003F800000003F800000003F800000003
+F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8
+00000003F800000003F8000003FFFFF80003FFFFF800>
+40 33 -2 32 40] 84 dc
+[<07FE00001FFF80003F07E0003F03F0003F01F0003F01F8001E01F8000001F8000001F8
+00003FF80003FDF8001F81F8003E01F8007C01F800F801F800F801F800F801F800F801F8
+007C02F8007E0CF8001FF8FF8007E03F80>
+32 22 -2 21 28] 97 dc
+[<FF800000FF8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000
+001F8000001F8000001F8000001F8000001F87F0001FBFFC001FF03E001FC01F001F800F
+801F800FC01F8007C01F8007E01F8007E01F8007E01F8007E01F8007E01F8007E01F8007
+E01F8007C01F8007C01F800FC01F800F801FC01F001E707E001C3FFC00180FE000>
+32 35 -2 34 32] 98 dc
+[<FF80FF801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F
+801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80FFF0FFF0>
+16 35 -2 34 15] 108 dc
+[<00FE0007FF800F83E01F01E03E00F07E00F07C00F8FC00F8FC0078FFFFF8FFFFF8FC00
+00FC0000FC0000FC00007E00007E00183E00381F00300F80F003FFC000FF00>
+24 22 -2 21 26] 101 dc
+[<00FF0007FFE00F81F01F00F83E007C7C003E7C003E7C003EFC003FFC003FFC003FFC00
+3FFC003FFC003FFC003F7C003E7E007E3E007C1F00F80F81F007FFE000FF00>
+24 22 -2 21 29] 111 dc
+[<001F8000FFE001F1F003E3F007E3F00FC3F00FC1E00FC0000FC0000FC0000FC0000FC0
+000FC000FFFE00FFFE000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0
+000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0007FFC007FFC00>
+24 35 -2 34 18] 102 dc
+[<0001FF0040001FFFC1C0007F80F3C001FC001FC003F0000FC007E00007C00FC00003C0
+1FC00003C03F800001C03F800001C07F800000C07F000000C07F000000C0FF00000000FF
+00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000007F00
+0000007F000000C07F800000C03F800000C03F800001C01FC00001800FC000018007E000
+030003F000060001FC001C00007F807800001FFFE0000001FF0000>
+40 34 -3 33 41] 67 dc
+[<FF03F000FF0FFC001F187E001F203E001F403F001F403F001F803F001F803F001F803F
+001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F
+001F803F001F803F00FFF1FFE0FFF1FFE0>
+32 22 -3 21 32] 110 dc
+[<00C00000C00000C00000C00001C00001C00003C00007C0000FC0001FC000FFFF00FFFF
+000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC1
+800FC1800FC1800FC1800FC18007C18007E30003FE0000FC00>
+24 32 -1 31 22] 116 dc
+[<07F9801FFF80380780700380F00180F00180F80000FF0000FFF8007FFE003FFF001FFF
+8007FF80003FC0C007C0C003C0E003C0E003C0F00380FC0F00EFFE00C3F800>
+24 22 -2 21 23] 115 dc
+cmbx10.300 sf
+[<00600001E0000FE000FFE000F3E00003E00003E00003E00003E00003E00003E00003E0
+0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
+0003E0007FFF807FFF80>
+24 27 -3 26 24] 49 dc
+[<003FE00001F07C0003C01E000F800F801F0007C01E0003C03E0003E07E0003F07C0001
+F07C0001F0FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001
+F87C0001F07E0003F07E0003F03E0003E03F0007E01F0007C00F800F8003C01E0001F07C
+00003FE000>
+32 28 -3 27 36] 79 dc
+[<FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C18003E30003E30001F60001F6
+0001FE0000FC0000FC00007800007800003000>
+24 18 -1 17 25] 118 dc
+[<01FC000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F800
+007800007C00603C00601E00C00F038001FC00>
+24 18 -1 17 22] 101 dc
+[<FE3E00FE47001E8F801E8F801E8F801F07001F00001F00001F00001F00001F00001F00
+001F00001F00001F00001F0000FFF000FFF000>
+24 18 -1 17 20] 114 dc
+[<1E003F003F003F003F001E00000000000000000000000000FF00FF001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F00FFE0FFE0>
+16 30 -1 29 14] 105 dc
+[<FF8FF8FEFF8FF8FE1F03E0301F03E0301F83E0700F83F0600F86F06007C6F0C007CEF8
+C007EC79C003EC7D8003F83D8001F83F0001F83F0001F01F0000F01E0000E00E0000E00E
+00>
+32 18 -1 17 34] 119 dc
+[<07F8001FFE00383F80780FC0FC07C0FC07E0FC03E0FC03E07803E00007E00007C00007
+C0000F80001F00001E0000380000700000E0000180600300600600600800E01FFFC03FFF
+C07FFFC0FFFFC0FFFFC0>
+24 27 -2 26 24] 50 dc
+[<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE0007FFE
+003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0E000
+E0F001C0FC03C0EFFF0083FC00>
+24 28 -3 27 27] 83 dc
+[<0300030003000300070007000F000F003FFCFFFC1F001F001F001F001F001F001F001F
+001F001F0C1F0C1F0C1F0C0F08079803F0>
+16 26 -1 25 19] 116 dc
+[<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07
+C0F807C0F807C0F807C0780BC03E13F80FE1F8>
+24 18 -1 17 23] 97 dc
+[<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F80000F800
+007800007801803C01801C03000E0E0003F800>
+24 18 -2 17 21] 99 dc
+[<FFFFF800FFFFFE000FC03F800FC00F800FC007C00FC007E00FC007E00FC007E00FC007
+E00FC007E00FC007C00FC007C00FC00F800FC03F000FFFFC000FC000000FC000000FC000
+000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000FFFC00
+00FFFC0000>
+32 28 -2 27 33] 80 dc
+[<FF0FC07E00FF31E18F001F40F207801F80FC07C01F80FC07C01F00F807C01F00F807C0
+1F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F
+00F807C01F00F807C0FFE7FF3FF8FFE7FF3FF8>
+40 18 -1 17 40] 109 dc
+[<1FD830786018E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CE018F830CF
+C0>
+16 18 -2 17 19] 115 dc
+[<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F800F8F800
+F87800F07800F03C01E01E03C00F078001FC00>
+24 18 -1 17 24] 111 dc
+[<007F0001E38003C7C00787C00F87C00F83800F80000F80000F80000F80000F8000FFF8
+00FFF8000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80
+000F80000F80000F80007FF8007FF800>
+24 29 0 28 15] 102 dc
+[<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0F
+C01F31E01F40F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
+F81F00F81F00F81F00F8FFE7FFFFE7FF>
+24 29 -1 28 27] 104 dc
+[<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0F
+F81F0FF81F03801F07001F0C001F18001F70001FF8001FFC001FBC001F3E001F1F001F0F
+001F0F801F07C01F03E0FFC7FCFFC7FC>
+24 29 -1 28 25] 107 dc
+[<03F8F00E0F381E0F381C07303C07803C07803C07803C07801C07001E0F000E0E001BF8
+001000001800001800001FFF001FFFC00FFFE01FFFF07801F8F00078F00078F000787000
+707800F01E03C007FF00>
+24 27 -1 17 24] 103 dc
+[<03F8001FFE003C1F003C0F807C07C07E07C07C07C03807C0000F80000F80001E00003C
+0003F800001E00000F800007C00007C00007E03007E07807E0FC07E0FC07E0FC07C0780F
+80781F001FFE0007F800>
+24 27 -2 26 24] 51 dc
+[<FF3F80FFE1E01F80F01F00781F007C1F003C1F003E1F003E1F003E1F003E1F003E1F00
+3E1F003C1F007C1F00781F80F01FC1E01F3F001F00001F00001F00001F00001F00001F00
+00FFE000FFE000>
+24 26 -1 17 27] 112 dc
+[<003FC00001F0300003C0380007C07C000F807C000F807C000F8038000F8000000F8000
+000F8000000F800000FFFFFC00FFFFFC000F807C000F807C000F807C000F807C000F807C
+000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C
+007FE1FF807FE1FF80>
+32 29 0 28 27] 12 dc
+[<FF0FC0FF31E01F40F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00
+F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF>
+24 18 -1 17 27] 110 dc
+[<000180000380000780000F80001F80003F80006F8000CF80008F80018F80030F80060F
+800C0F80180F80300F80600F80C00F80FFFFF8FFFFF8000F80000F80000F80000F80000F
+80000F8001FFF801FFF8>
+24 27 -1 26 24] 52 dc
+[<FFFFFFFF07E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007
+E007E007E007E007E007E007E007E007E0FFFFFFFF>
+16 28 -1 27 18] 73 dc
+[<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F00FFE0FFE0>
+16 29 -1 28 14] 108 dc
+[<1801801FFF001FFE001FFC001FF8001FC00018000018000018000018000019F8001E0E
+00180F801007800007C00007E00007E00007E07807E0F807E0F807E0F807C0F007C0600F
+80381F001FFE0007F000>
+24 27 -2 26 24] 53 dc
+[<7FFFFFE07FFFFFE0781F81E0701F80E0601F8060E01F8070C01F8030C01F8030C01F80
+30C01F8030001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80
+00001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800007FFFE
+0007FFFE00>
+32 28 -2 27 33] 84 dc
+cmr10.300 sf
+[<60F0F060>
+8 4 -4 3 12] 46 dc
+[<001F808000E0618001801980070007800E0003801C0003801C00018038000180780000
+807800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F00000
+00F0000000700000807800008078000080380000801C0001001C0001000E000200070004
+000180080000E03000001FC000>
+32 30 -2 28 30] 67 dc
+[<03F0000E1C00180600300300700380600180E001C0E001C0E001C0E001C0E001C0E001
+C06001807003803003001806000E1C0003F000>
+24 18 -1 17 21] 111 dc
+[<FC7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03
+801C03801C03801C03801C03801C0380FF9FF0>
+24 18 -1 17 23] 110 dc
+[<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E00000E0000FFFF
+C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
+C00E01C00E01C00E01C00E01C07F87F8>
+24 29 0 28 23] 12 dc
+[<00038003C4C00C38C01C3880181800381C00381C00381C00381C001818001C38000C30
+0013C0001000003000001800001FF8001FFF001FFF803003806001C0C000C0C000C0C000
+C06001803003001C0E0007F800>
+24 28 -1 18 21] 103 dc
+[<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03
+801C03801C03801C07800C07800E1B8003E3F0>
+24 18 -1 17 23] 117 dc
+[<FCE01D301E781E781C301C001C001C001C001C001C001C001C001C001C001C001C00FF
+C0>
+16 18 -1 17 16] 114 dc
+[<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C00601C
+00E01C40E01C40E01C40603C40304E801F8700>
+24 18 -2 17 21] 97 dc
+[<04000400040004000C000C001C003C00FFE01C001C001C001C001C001C001C001C001C
+001C101C101C101C101C100C100E2003C0>
+16 26 -1 25 16] 116 dc
+[<18003C003C0018000000000000000000000000000000FC001C001C001C001C001C001C
+001C001C001C001C001C001C001C001C001C001C00FF80>
+16 29 -1 28 12] 105 dc
+[<FFF3FFC00F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
+000F003C000F003C000F003C000F003C000FFFFC000F003C000F003C000F003C000F003C
+000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
+00FFF3FFC0>
+32 28 -2 27 31] 72 dc
+[<03E00C301818300C700E6006E006FFFEE000E000E000E00060007002300218040C1803
+E0>
+16 18 -1 17 18] 101 dc
+[<003F0000070000070000070000070000070000070000070000070000070000070003E7
+000C1700180F00300700700700600700E00700E00700E00700E00700E00700E007006007
+00700700300700180F000C370007C7E0>
+24 29 -2 28 23] 100 dc
+[<FF007FC00F800E000F8004000BC0040009E0040009E0040008F0040008F80400087804
+00083C0400083C0400081E0400080F0400080F0400080784000807C4000803C4000801E4
+000801E4000800F40008007C0008007C0008003C0008003C0008001C0008000C001C000C
+00FF800400>
+32 28 -2 27 31] 78 dc
+[<07E00C301878307870306000E000E000E000E000E000E00060007004300418080C3007
+C0>
+16 18 -2 17 18] 99 dc
+[<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C001C0038007000
+6000C00180030006010C01180110023FFE7FFEFFFE>
+16 28 -2 27 21] 50 dc
+[<000600000006000000060000000F0000000F0000000F00000017800000178000001780
+000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F0000180F8
+000100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C001F
+001E001F00FF80FFF0>
+32 29 -1 28 31] 65 dc
+[<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C
+001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C00
+C01C01C01C01801E030019060010F800>
+24 29 -1 28 23] 98 dc
+[<1F9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D0608F
+C0>
+16 18 -1 17 16] 115 dc
+[<07E01830201C201C781E780E781E381E001C001C00180030006007E00030001C001C00
+0E000F000F700FF80FF80FF80FF00E401C201C183007E0>
+16 29 -2 27 21] 51 dc
+[<FF8000FF800F8000F8000F8000F8000BC00178000BC00178000BC001780009E0027800
+09E002780008F004780008F004780008F004780008780878000878087800087808780008
+3C107800083C107800083C107800081E207800081E207800081E207800080F407800080F
+40780008078078000807807800080780780008030078001C03007800FF8307FF80>
+40 28 -2 27 38] 77 dc
+[<FF07E03C03801C01001C01000E02000E020007040007040007040003880003880003D8
+0001D00001D00000E00000E00000E000004000>
+24 18 -1 17 22] 118 dc
+[<000C00000C00001C00003C00003C00005C0000DC00009C00011C00031C00021C00041C
+000C1C00081C00101C00301C00201C00401C00C01C00FFFFC0001C00001C00001C00001C
+00001C00001C00001C0001FFC0>
+24 28 -1 27 21] 52 dc
+[<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F00100F001F001007801F0020
+0780278020078027802003C027804003C043C04003C043C04003E043C04001E081E08001
+E081E08001E081E08000F100F10000F100F10000F100F100007900FA00007A007A00007A
+007A00003E007C00003C003C00003C003C00003C003C0000180018000018001800001800
+1800>
+40 29 -1 27 43] 87 dc
+[<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C
+001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03
+801C03801C03801C03801C0380FF9FF0>
+24 29 -1 28 23] 104 dc
+[<FFFFFC0F003C0F000C0F00040F00040F00060F00020F00020F02020F02000F02000F02
+000F06000FFE000F06000F02000F02000F02000F02010F00010F00020F00020F00020F00
+060F00060F000C0F003CFFFFFC>
+24 28 -2 27 28] 69 dc
+[<7F8FF00F03800F030007020003840001C80001D80000F00000700000780000F800009C
+00010E00020E000607000403801E07C0FF0FF8>
+24 18 0 17 22] 120 dc
+[<FC7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00
+E01C01C01C01C01C01801E03001D06001CF8001C00001C00001C00001C00001C00001C00
+001C0000FF8000>
+24 26 -1 17 23] 112 dc
+[<0FE03038401CE00EF00EF00EF00E000C001C0030006000C00080018001000100010001
+0001000100000000000000000000000300078007800300>
+16 29 -2 28 20] 63 dc
+[<300C3FF83FF03FC020002000200020002000200023E024302818301C200E000E000F00
+0F000F600FF00FF00FF00F800E401E401C2038187007C0>
+16 29 -2 27 21] 53 dc
+[<07E0801C1980300580700380600180E00180E00080E00080E00080F00000F800007C00
+007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001
+C0C00180C00180E00300D00200CC0C0083F800>
+24 30 -2 28 23] 83 dc
+[<00F0030C06040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006E007E0
+07E007E007E007600760077006300E300C18180C3003E0>
+16 29 -2 27 21] 54 dc
+[<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82000E1182000711C4
+000711C4000720C40003A0E80003A0E80003C0680001C0700001C0700001803000008020
+00>
+32 18 -1 17 30] 119 dc
+[<FFF07FC00F000E000F0004000F0004000F0004000F0004000F0004000F0004000F0004
+000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004
+000F0004000F0004000F0004000F0004000700080007800800038010000180100000C020
+000070C000001F0000>
+32 29 -2 27 31] 85 dc
+[<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F00
+20000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
+00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F80
+0003FFFC00>
+32 28 -1 27 30] 84 dc
+[<FFFF800F00E00F00780F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F00
+3C0F00780F00E00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00
+000F00000F00000F0000FFF000>
+24 28 -2 27 28] 80 dc
+[<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C3F
+C01C0F001C0C001C08001C10001C20001C40001CE0001DE0001E70001C78001C38001C3C
+001C1C001C0E001C0F001C0F80FF9FE0>
+24 29 -1 28 22] 107 dc
+[<FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
+000F000F000F000F000F000F000F000F000F00FFF0>
+16 28 -1 27 15] 73 dc
+[<FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
+001C001C001C001C001C001C001C001C001C001C00FF80>
+16 29 -1 28 12] 108 dc
+[<FC7E07E0001C838838001D019018001E01E01C001C01C01C001C01C01C001C01C01C00
+1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C
+01C01C001C01C01C001C01C01C00FF8FF8FF80>
+40 18 -1 17 36] 109 dc
+[<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E
+000E000E000E000E000E000E000E000E000E000E007FE0>
+16 29 0 28 13] 102 dc
+[<001F808000E0618001801980070007800E0003801C0003801C00018038000180780000
+807800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F000FF
+F0F0000F80700007807800078078000780380007801C0007801C0007800E00078007000B
+800180118000E06080001F8000>
+32 30 -2 28 33] 71 dc
+[<FFE00FF01F0003C00F0001800F0001000F800300078002000780020003C0040003C004
+0003C0040001E0080001E0080001F0080000F0100000F0100000F8300000782000007820
+00003C4000003C4000003C4000001E8000001E8000001F8000000F0000000F0000000600
+000006000000060000>
+32 29 -1 27 31] 86 dc
+[<FF07E03C03801C01001C01000E02000E020007040007040007040003880003880003D8
+0001D00001D00000E00000E00000E000004000004000008000008000F08000F10000F300
+006600003C0000>
+24 26 -1 17 22] 121 dc
+[<7FF0FFC00FC03E000780180003C0180003E0100001E0200001F0600000F04000007880
+00007D8000003D0000001E0000001F0000000F0000000F8000000F80000013C0000023E0
+000021E0000041F00000C0F8000080780001007C0003003C0002001E0006001F001F003F
+80FFC0FFF0>
+32 28 -1 27 31] 88 dc
+[<FFFF00000F01E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E
+000F001C000F003C000F0078000F01E0000FFF00000F03C0000F00E0000F00F0000F0078
+000F0078000F0078000F0078000F0078000F0078000F0078100F0078100F0038100F003C
+20FFF01C20000007C0>
+32 29 -2 27 31] 82 dc
+[<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00
+780F01F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F000F0F000F0F000F0F00
+1E0F001E0F003C0F0078FFFFE0>
+24 28 -2 27 29] 66 dc
+[<FFFFC0000F00F0000F003C000F000E000F0007000F0007000F0003800F0003C00F0001
+C00F0001C00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001
+E00F0001C00F0001C00F0003C00F0003800F0007800F0007000F000E000F001C000F0070
+00FFFFC000>
+32 28 -2 27 32] 68 dc
+[<4000007FFF807FFF007FFF004002008004008004008008000010000010000020000060
+0000400000C00000C00001C0000180000180000380000380000380000380000780000780
+00078000078000078000078000030000>
+24 29 -2 27 21] 55 dc
+[<FFFFF80F00780F00180F00080F00080F000C0F00040F00040F02040F02000F02000F02
+000F06000FFE000F06000F02000F02000F02000F02000F00000F00000F00000F00000F00
+000F00000F00000F8000FFF800>
+24 28 -2 27 27] 70 dc
+[<03E00C301008200C20066006600660067006780C3E083FB01FE007F007F818FC307E60
+1E600FC007C003C003C003C00360026004300C1C1007E0>
+16 29 -2 27 21] 56 dc
+[<03C00C301818300C700C600EE006E006E007E007E007E007E0076007700F300F18170C
+2707C700060006000E300C780C78187010203030C00F80>
+16 29 -2 27 21] 57 dc
+[<003F800000E0E0000380380007001C000E000E001C0007003C00078038000380780003
+C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001
+E0F00001E0700001C0780003C0780003C0380003803C0007801C0007000E000E0007001C
+000380380000E0E000003F8000>
+32 30 -2 28 32] 79 dc
+[<004000800100020006000C000C0018001800300030007000600060006000E000E000E0
+00E000E000E000E000E000E000E000E000E000600060006000700030003000180018000C
+000C0006000200010000800040>
+16 42 -3 30 16] 40 dc
+[<800040002000100018000C000C000600060003000300038001800180018001C001C001
+C001C001C001C001C001C001C001C001C001C0018001800180038003000300060006000C
+000C0018001000200040008000>
+16 42 -2 30 16] 41 dc
+[<60F0F0701010101020204080>
+8 12 -4 3 12] 44 dc
+[<03C00C301818300C300C700E60066006E007E007E007E007E007E007E007E007E007E0
+07E007E007E00760066006700E300C300C18180C3007E0>
+16 29 -2 27 21] 48 dc
+2 @bop1
+cmbx10.622 sf
+782 341(Con)s
+-3(ten)h
+-3(ts)h
+cmbx10.360 sf
+0 594(T)s
+-5(able)h
+20(of)h
+18(Con)h
+-2(ten)h
+-2(ts)h
+cmbx10.300 sf
+0 675(1)s
+16(Ov)h
+-1(erview)h
+0 1024(2)s
+16(Static)h
+14(P)h
+-1(arameters)h
+14(of)h
+15(this)h
+14(P)h
+-1(ac)h
+-1(k)h
+-3(age)h
+0 1223(3)s
+16(Sp)h
+1(eci\014cati)h
+-1(on)h
+0 1721(4)s
+16(Implemen)h
+-2(tati)h
+-1(on)h
+0 2419(5)s
+16(T)h
+-4(est)h
+15(Program)h
+cmr10.300 sf
+62 725(1.1)s
+13(Con\014guration)h
+13(Header)h
+15(Notice)h
+62 775(1.2)s
+13(Abstract)h
+62 825(1.3)s
+13(Motiv)h
+-2(ation)h
+62 874(1.4)s
+13(What)h
+14(is)h
+13(an)h
+14(Exception?)h
+62 924(1.5)s
+13(Exceptions)h
+15(as)h
+14(Activ)h
+-1(e)h
+14(Statuses)h
+62 974(1.6)s
+13(Ho)h
+-1(w)h
+14(to)h
+13(Use)h
+15(This)h
+14(P)h
+-1(ac)h
+-1(k)h
+-2(age)h
+62 1074(2.1)s
+13(Inline)h
+14(Switc)h
+-1(h)h
+14(P)h
+-1(arameter)h
+62 1124(2.2)s
+13(Threading)h
+14(P)h
+-1(arameter)h
+62 1173(2.3)s
+13(Macros)h
+15(for)h
+13(Global)h
+12(V)h
+-3(ariables)h
+62 1273(3.1)s
+13(Sp)h
+1(eci\014cation)h
+14(Includes)h
+62 1323(3.2)s
+13(Exception)h
+15(T)h
+-1(yp)h
+1(e)h
+62 1373(3.3)s
+13(Macro)h
+14(EX)h
+16(RAISE)h
+62 1422(3.4)s
+13(Exception)h
+15(Blo)h
+1(c)h
+-1(k)h
+13(Construct)h
+62 1472(3.5)s
+13(De\014nition)h
+13(of)h
+14(Seman)h
+-1(tics)h
+62 1522(3.6)s
+13(Exception)h
+15(Informati)h
+-1(on)h
+62 1572(3.7)s
+13(F)h
+-3(unction)h
+14(ex)h
+15(str)h
+62 1622(3.8)s
+13(A)h
+14(W)h
+-3(arning)h
+13(Ab)h
+1(out)h
+14(Names)h
+62 1672(3.9)s
+13(Glossary)h
+62 1771(4.1)s
+13(Ov)h
+-1(erview)h
+15(and)h
+13(Data)h
+14(Structure)h
+15(Description)h
+125 1821(4.1.1)s
+12(Global)h
+12(V)h
+-3(ariables)h
+125 1871(4.1.2)s
+12(Magic)h
+13(Num)h
+-1(b)h
+1(ers)h
+62 1921(4.2)s
+13(Exception)h
+15(t)h
+-1(yp)h
+1(e)h
+62 1970(4.3)s
+13(Macros)h
+15(for)h
+13(Declaring)h
+14(and)h
+13(De\014ning)h
+14(Exceptions)h
+62 2020(4.4)s
+13(Macro)h
+14(for)h
+14(Raising)h
+12(Exceptions)h
+62 2070(4.5)s
+13(Exception)h
+15(Blo)h
+1(c)h
+-1(k)h
+13(Macros)h
+15(\(Safe\))h
+62 2120(4.6)s
+13(F)h
+-3(ast,)h
+13(Inline)h
+14(V)h
+-3(ersions)h
+14(of)h
+13(the)h
+15(Exception)h
+14(Blo)h
+1(c)h
+-1(k)h
+14(Macros)h
+62 2170(4.7)s
+13(F)h
+-3(unction)h
+14(ex)h
+15(str)h
+62 2219(4.8)s
+13(Supp)h
+1(ort)h
+15(F)h
+-3(unctions)h
+125 2269(4.8.1)s
+12(F)h
+-3(unction)h
+28(exrai)h
+125 2319(4.8.2)s
+12(F)h
+-3(unction)h
+13(ex)h
+16(b)h
+1(om)h
+-1(b)h
+125 2369(4.8.3)s
+12(F)h
+-3(unction)h
+28(exp)h
+1(op)h
+62 2469(5.1)s
+13(F)h
+-3(unction)h
+14(sc01)h
+62 2518(5.2)s
+13(F)h
+-3(unction)h
+14(sc02)h
+62 2568(5.3)s
+13(F)h
+-3(unction)h
+14(sc03)h
+62 2618(5.4)s
+13(F)h
+-3(unction)h
+14(sc04)h
+62 2668(5.5)s
+13(F)h
+-3(unction)h
+14(sc05)h
+965 2770(2)s
+1950 2 0 535 r
+1950 2 0 621 r
+13 2 318 1373 r
+13 2 345 1572 r
+13 2 345 2170 r
+13 2 400 2269 r
+13 2 439 2319 r
+13 2 400 2369 r
+2 @eop
+3 @bop0
+cmbx10.300 sf
+[<007E0003FF000781800F03C01E07C03C07C03C0380780000780000F80000F8F800FB0E
+00FA0780FC0380FC03C0F803E0F803E0F803E0F803E07803E07803E07803C03C03C03C07
+801E0F0007FE0003F800>
+24 27 -2 26 24] 54 dc
+[<FFFFF800FFFFFF000FC01FC00FC007E00FC001F00FC001F80FC000F80FC000FC0FC000
+7C0FC0007C0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC000
+7E0FC0007C0FC0007C0FC0007C0FC000F80FC000F80FC001F00FC007E00FC01FC0FFFFFF
+00FFFFF800>
+32 28 -2 27 37] 68 dc
+[<FFE003FFFFE003FF0FF000300FF800300DFC00300CFE00300C7E00300C3F00300C1F80
+300C1FC0300C0FE0300C07F0300C03F0300C01F8300C01FC300C00FE300C007F300C003F
+300C001FB00C001FF00C000FF00C0007F00C0003F00C0001F00C0000F00C0000F0FFC000
+70FFC00030>
+32 28 -2 27 37] 78 dc
+cmr10.300 sf
+[<FFE0FFE0>
+16 2 0 9 14] 45 dc
+3 @bop1
+cmbx10.300 sf
+0 689(6)s
+16(Design)h
+14(Notes)h
+cmr10.300 sf
+62 42(5.6)s
+13(F)h
+-3(unction)h
+14(sc06)h
+62 91(5.7)s
+13(F)h
+-3(unction)h
+14(sc07)h
+62 141(5.8)s
+13(F)h
+-3(unction)h
+14(sc08)h
+62 191(5.9)s
+13(F)h
+-3(unction)h
+14(sc09)h
+62 241(5.10)s
+13(F)h
+-3(unction)h
+13(fa01)h
+62 291(5.11)s
+13(F)h
+-3(unction)h
+13(fa02)h
+62 340(5.12)s
+13(F)h
+-3(unction)h
+13(fa03)h
+62 390(5.13)s
+13(F)h
+-3(unction)h
+13(fa04)h
+62 440(5.14)s
+13(F)h
+-3(unction)h
+13(fa05)h
+62 490(5.15)s
+13(F)h
+-3(unction)h
+13(fa06)h
+62 540(5.16)s
+13(F)h
+-3(unction)h
+13(fa07)h
+62 589(5.17)s
+13(F)h
+-3(unction)h
+13(fa08)h
+62 639(5.18)s
+13(F)h
+-3(unction)h
+13(fa09)h
+62 739(6.1)s
+13(Arc)h
+-1(hitectural)h
+15(Discussion)h
+62 789(6.2)s
+13(Exception)h
+15(Iden)h
+-1(tit)h
+-1(y)h
+62 839(6.3)s
+13(Iden)h
+-1(ti\014er)h
+15(Names)h
+62 888(6.4)s
+13(Catering)h
+14(for)h
+13(Multi-Threading)h
+62 938(6.5)s
+13(Chec)h
+-1(king)h
+62 988(6.6)s
+13(F)h
+-3(uture)h
+15(Impro)h
+-1(v)h
+-1(em)h
+-1(en)h
+-1(ts)h
+965 2770(3)s
+1950 2 0 1023 r
+3 @eop
+4 @bop0
+/cmbx10.518 127 @newfont
+/cmsy10.300 127 @newfont
+/cmsl10.300 127 @newfont
+/cmr7.300 127 @newfont
+/cmtt10.300 127 @newfont
+cmbx10.518 sf
+[<0001E0000003E000000FE000007FE0001FFFE000FFFFE000FFBFE000E03FE000003FE0
+00003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE0
+00003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE0
+00003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE0
+00003FE000003FE000003FE000003FE000003FE000003FE000003FE0007FFFFFF07FFFFF
+F07FFFFFF0>
+32 46 -6 45 41] 49 dc
+[<00000FFE0000000000FFFFE000000007FFFFFC0000001FFC07FF0000003FE000FF8000
+00FF80003FE00001FF00001FF00003FE00000FF80007FC000007FC0007FC000007FC000F
+F8000003FE001FF8000003FF001FF0000001FF003FF0000001FF803FF0000001FF803FF0
+000001FF807FE0000000FFC07FE0000000FFC07FE0000000FFC0FFE0000000FFE0FFE000
+0000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE00000
+00FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE07FE0000000
+FFC07FE0000000FFC07FF0000001FFC07FF0000001FFC03FF0000001FF803FF0000001FF
+801FF8000003FF001FF8000003FF000FFC000007FE000FFC000007FE0007FE00000FFC00
+03FF00001FF80001FF80003FF00000FFC0007FE000003FE000FF8000001FFC07FF000000
+07FFFFFC00000000FFFFE0000000000FFE000000>
+56 49 -5 48 62] 79 dc
+[<FFFF801FFEFFFF801FFEFFFF801FFE07F80003E007F80001C007FC0003C003FC000380
+03FE00078001FE00070001FF000F0000FF000E0000FF801E00007F801C00007FC03C0000
+3FC03800003FE03800001FE07000001FE07000000FF0E000000FF0E000000FF9E0000007
+F9C0000007FFC0000003FF80000003FF80000001FF00000001FF00000000FE00000000FE
+000000007C000000007C00000000380000>
+40 32 -2 31 44] 118 dc
+[<0007FC0000003FFF800000FFFFE00003FC07F00007F801F8000FE000FC001FE0007E00
+3FC0007E003FC0003F007FC0003F007F80003F007F80003F80FF80003F80FF80003F80FF
+FFFFFF80FFFFFFFF80FFFFFFFF80FF80000000FF80000000FF800000007F800000007F80
+0000003FC00000003FC00003801FC00003801FE00007800FF0000F0007F8001E0003FE00
+FC0000FFFFF800003FFFE0000003FF0000>
+40 32 -2 31 38] 101 dc
+[<03F03F00FFF0FFC0FFF1FFF0FFF3C7F00FF78FF807F70FF807FE0FF807FE0FF807FC07
+F007FC03E007FC008007FC000007F8000007F8000007F8000007F8000007F8000007F800
+0007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F800
+0007F8000007F80000FFFFE000FFFFE000FFFFE000>
+32 32 -2 31 34] 114 dc
+[<03C0000FF0000FF0001FF8001FF8001FFC001FF8001FF8000FF0000FF00003C0000000
+0000000000000000000000000000000000000000000001F800FFF800FFF800FFF8000FF8
+0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
+0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
+00FFFF80FFFF80FFFF80>
+24 51 -3 50 23] 105 dc
+[<FFFF0FFFF01FFEFFFF0FFFF01FFEFFFF0FFFF01FFE0FF0007E0001F00FF8007F0001E0
+07F8007F0001C007F8003F8003C003FC003F80038003FC007FC0038003FE007FC0078001
+FE00FFC0070001FF00EFE00F0000FF00EFE00E0000FF01C7F00E00007F81C7F01C00007F
+83C7F01C00007FC383F83C00003FC383F83800003FC701FC3800001FE701FC7000001FEF
+01FC7000001FFE00FEF000000FFE00FEE000000FFC007FE0000007FC007FC0000007FC00
+7FC0000007F8003FC0000003F8003F80000003F0001F80000001F0001F00000001E0000F
+00000000E0000E0000>
+56 32 -2 31 60] 119 dc
+cmsy10.300 sf
+[<FFFFFFE0FFFFFFE0000000000000000000000000000000000000000000000000000000
+00FFFFFFE0FFFFFFE0000000000000000000000000000000000000000000000000000000
+00FFFFFFE0FFFFFFE0>
+32 20 -2 19 32] 17 dc
+[<003C00E001C00180038003800380038003800380038003800380038003800380038003
+0007001C00F0001C00070003000380038003800380038003800380038003800380038003
+800380018001C000E0003C>
+16 41 -3 30 21] 102 dc
+[<F0001C0007000300038003800380038003800380038003800380038003800380038001
+8001C000E0003C00E001C001800380038003800380038003800380038003800380038003
+800380030007001C00F000>
+16 41 -3 30 21] 103 dc
+cmbx10.300 sf
+[<FFC7FCFFC7FC1F81800F838007C70003EE0001FC0001F80000F800007C0000FE0001DF
+00039F00070F800607C00C03E0FF07FCFF07FC>
+24 18 -1 17 25] 120 dc
+[<78FCFCFCFC78>
+8 6 -3 5 13] 46 dc
+[<FFC00003FFFFE00007FF0FE00007F00DF0000DF00DF0000DF00DF0000DF00CF80019F0
+0CF80019F00C7C0031F00C7C0031F00C3E0061F00C3E0061F00C1F00C1F00C1F00C1F00C
+1F00C1F00C0F8181F00C0F8181F00C07C301F00C07C301F00C03E601F00C03E601F00C01
+FC01F00C01FC01F00C01FC01F00C00F801F00C00F801F0FFC0701FFFFFC0701FFF>
+40 28 -2 27 45] 77 dc
+cmbx10.432 sf
+[<1C007F00FF80FF80FF80FF80FF807F001C00>
+16 9 -5 8 19] 46 dc
+[<00003FF001800003FFFE0780000FFFFF8F80003FF007FF8000FF8001FF8001FE00007F
+8007FC00003F8007F800001F800FF000000F801FE000000F803FE0000007803FC0000007
+807FC0000003807FC0000003807FC000000380FF8000000000FF8000000000FF80000000
+00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
+00FF8000000000FF80000000007FC0000000007FC0000003807FC0000003803FC0000003
+803FE0000003801FE0000007800FF00000070007F800000F0007FC00001E0001FE00003C
+0000FF8000F800003FF007F000000FFFFFC0000003FFFF000000003FF80000>
+48 41 -4 40 50] 67 dc
+[<FFC07F0000FFC1FFC000FFC787E0000FCE07F0000FDC03F8000FF803F8000FF003F800
+0FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
+E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
+03F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80>
+40 27 -3 26 38] 110 dc
+[<0001FF0000001FFFC000007F80F00000FE00F80003FC01FC0003F803FC0007F003FC00
+07F003FC0007F003FC0007F001F80007F000F00007F000000007F000000007F000000007
+F0000000FFFFFFFC00FFFFFFFC00FFFFFFFC0007F001FC0007F001FC0007F001FC0007F0
+01FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001
+FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC
+0007F001FC0007F001FC0007F001FC007FFF1FFFC07FFF1FFFC07FFF1FFFC0>
+40 42 -1 41 38] 12 dc
+[<00FF81F003FFE7FC0FC1FE7C1F80FC7C3F80FE7C3F007E107F007F007F007F007F007F
+007F007F007F007F007F007F003F007E003F80FE001F80FC000FC1F8001FFFE00018FF80
+00380000003C0000003C0000003E0000003FFFF8003FFFFF001FFFFFC00FFFFFE007FFFF
+F01FFFFFF07E0007F87C0001F8F80001F8F80000F8F80000F8F80000F8FC0001F87E0003
+F03F0007E00FC01F8003FFFE00007FF000>
+32 40 -2 26 34] 103 dc
+[<FFE03FF800FFE03FF800FFE03FF8000FE003F8000FE003F8000FE003F8000FE003F800
+0FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
+E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE007F8000FE0
+07F8000FE00FF80007E01FF80003F03BFF8001FFF3FF80003FC3FF80>
+40 27 -3 26 38] 117 dc
+[<00700000700000700000700000F00000F00000F00001F00003F00003F00007F0001FFF
+F0FFFFF0FFFFF007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
+0007F00007F00007F00007F03807F03807F03807F03807F03807F03807F03803F87001F8
+F000FFE0001F80>
+24 38 -1 37 27] 116 dc
+[<FFFFF01FFFFEFFFFF01FFFFEFFFFF01FFFFE03FC00007F8003FC00007F8003FC00007F
+8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F
+8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F
+8003FFFFFFFF8003FFFFFFFF8003FFFFFFFF8003FC00007F8003FC00007F8003FC00007F
+8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F
+8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F
+8003FC00007F8003FC00007F80FFFFF01FFFFEFFFFF01FFFFEFFFFF01FFFFE>
+48 41 -3 40 54] 72 dc
+[<003FE00001FFF80003F07E000FE03F001FC01F803F800FC03F800FC07F000FC07F0007
+E0FF0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF000000FF0000
+007F0000007F8000003F8000E03F8001E01FC001C00FE003C003F81F8000FFFE00001FF0
+00>
+32 27 -2 26 32] 101 dc
+[<00003FF80000003FF80000003FF800000003F800000003F800000003F800000003F800
+000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
+0003F800001FE3F80000FFFBF80003F03FF8000FE00FF8001FC007F8003F8003F8003F80
+03F8007F8003F8007F0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003
+F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8003F8003F8
+003F8007F8001FC00FF8000FE01FF80003F03FFF8000FFF3FF80003FC3FF80>
+40 42 -2 41 38] 100 dc
+[<FFFC0000FFFEFFFE0000FFFEFFFF0000FFFE03FF8000038003FFC000038003FFE00003
+8003BFE0000380039FF0000380038FF80003800387FC0003800387FE0003800383FE0003
+800381FF0003800380FF80038003807FC0038003807FE0038003803FF0038003801FF003
+8003800FF80380038007FC0380038003FE0380038003FF0380038001FF8380038000FF83
+800380007FC3800380003FE3800380001FF3800380001FFB800380000FFB8003800007FF
+8003800003FF8003800001FF8003800001FF8003800000FF80038000007F80038000003F
+80038000001F80038000000F80FFFE00000F80FFFE00000780FFFE00000380>
+48 41 -3 40 54] 78 dc
+[<001FF80000FFFE0003F01F000FE03F801FC03F803F803F803F803F807F801F007F0000
+00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
+007F0000007F8000003F8001C03FC001C01FC003C00FE0078003F01F0000FFFC00001FE0
+00>
+32 27 -2 26 31] 99 dc
+cmsl10.300 sf
+[<003F0400C0CC0180380300380600180E00180E00180E00181E00101E00001F00000F80
+000FF80007FF0003FF8001FFC0003FE00003E00001E00000E00000E04000E04000E04000
+E04000C06001C0E00180F00300CC0E0083F800>
+24 30 -2 28 23] 83 dc
+[<0FC78003D86001E03003C03803803803801803801C03801C03801C0700380700380700
+380700700700700700E00F01C00EC3000E3C000E00000E00000E00001C00001C00001C00
+001C0000FF8000>
+24 26 0 17 23] 112 dc
+[<01F8070C0C061C073803300370037FFF7000E000E000E00060006002300430081C3007
+C0>
+16 18 -2 17 18] 101 dc
+[<01F8071C0C1E181C38183000700070007000E000E000E000600060047008301018200F
+C0>
+16 18 -3 17 18] 99 dc
+[<00C001C001C0018000000000000000000000000000001F800780038007000700070007
+00070007000E000E000E000E000E000E001C001E00FF80>
+16 29 -1 28 12] 105 dc
+[<0007E0001C1000703800E07801C07801C03001C00001C0000380000380000380003FFF
+F00380F00380700700E00700E00700E00700E00700E00700E00E01C00E01C00E01C00E01
+C00E01C00E01C01C03801C03C0FF8FF0>
+24 29 -1 28 23] 12 dc
+[<07F0001C18001E0C001C0E00180E00000E00000E0001FE000F0E001C1C00301C00701C
+00E01C40E01C40E03C40E05C80709D803F0E00>
+24 18 -3 17 21] 97 dc
+[<020002000200060006000C001C003C00FFE01C001C0038003800380038003800380070
+0070407040704070407080708031001E00>
+16 26 -4 25 16] 116 dc
+[<00FC000307000E01801C01C03800C03000C07000E07000E07000E0E001C0E001C0E001
+C0600180600380700700380E001C180007E000>
+24 18 -2 17 21] 111 dc
+[<1F8F8007B0C003C0E00780E00780E00700E00700E00700E00700E00E01C00E01C00E01
+C00E01C00E01C00E01C01C03801E03C0FF9FF0>
+24 18 -1 17 23] 110 dc
+[<07E001E001C001C001C001C001C001C003800380038003800380038007000700070007
+00070007000E000E000E000E000E000E001C001E00FF80>
+16 29 -1 28 12] 108 dc
+[<0FFF8000F80000F00000F00000F00000F00000F00001E00001E00001E00001E00001E0
+0001E00003C00003C00003C00003C00003C00003C0000780000780000780000780000780
+000780000F00000F8000FFF800>
+24 28 -1 27 15] 73 dc
+[<1F8FC0FC00079061060003E07607000780780700078078070007007007000700700700
+070070070007007007000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E
+00E00E001C01C01C001E01E01E00FF8FF8FF80>
+40 18 -1 17 36] 109 dc
+[<1FFFFFF03C07C0F03007803020078020600780204007802040078020400F0020800F00
+20000F0000000F0000000F0000000F0000001E0000001E0000001E0000001E0000001E00
+00001E0000003C0000003C0000003C0000003C0000003C0000003C000000780000007C00
+001FFFE000>
+32 28 -4 27 30] 84 dc
+[<03F20C0E18061004300438043E001FE00FF007F8003C401C400C400C6018E010D0608F
+C0>
+16 18 -1 17 16] 115 dc
+[<1F9C07EE03CF078E078C07000700070007000E000E000E000E000E000E001C001E00FF
+C0>
+16 18 -1 17 16] 114 dc
+[<000038003CCC00C69C018308038380070380070380070380070380070700030600038C
+0004F0000400000C00000C00000FFE0007FF800FFFC01801C02000C06000E0C000C0C000
+C0600180200300180E0007F000>
+24 28 0 18 21] 103 dc
+[<0007F010001C0C300070026000C001E0038000E0070000E00E0000600E0000601C0000
+403C00004038000040780000007800000078000000F0000000F0000000F0000000F00000
+00F0000000F0000080F0000100700001007000010038000200380004001C0004000C0018
+00060020000380C000007F0000>
+32 30 -4 28 30] 67 dc
+[<FC1F803C07801C0380380700380700380700380700380700380700700E00700E00700E
+00700E00701E00701E00703C00305E001F9F80>
+24 18 -4 17 23] 117 dc
+[<07E00001E00001C00001C00001C00001C00001C00001C000038000038000038000038F
+8003B0C003C0E00780E00780E00700E00700E00700E00700E00E01C00E01C00E01C00E01
+C00E01C00E01C01C03801E03C0FF9FF0>
+24 29 -1 28 23] 104 dc
+[<0003F00000F00000E00000E00000E00000E00000E00000E00001C00001C00001C000F1
+C0030DC00C03C01C0380380380300380700380700380700380E00700E00700E007006007
+00600700700F00301E00186F00078FC0>
+24 29 -3 28 23] 100 dc
+cmr7.300 sf
+[<7FFFF06070304070104070108070088070088070080070000070000070000070000070
+0000700000700000700000700000700000700000700007FF00>
+24 20 -1 19 24] 84 dc
+[<F00030003000300030003000300033E034303818301830183018301830183018301830
+183018FC7E>
+16 20 -1 19 18] 104 dc
+[<2070200000000000F03030303030303030303030FC>
+8 21 -1 20 9] 105 dc
+[<3E806180C080C080E0007E003F8003C080C080C0C0C0E1809F00>
+16 13 -1 12 13] 115 dc
+[<F3E1F0343218381C0C30180C30180C30180C30180C30180C30180C30180C30180C3018
+0CFC7E3F>
+24 13 -1 12 27] 109 dc
+[<7F00E1C0E0404060006007E038606060C060C064C06461E43E38>
+16 13 -2 12 17] 97 dc
+[<0FE0187020706020C000C000C000C000C0006000201018200FC0>
+16 13 -1 12 15] 99 dc
+[<F3C034E038E0304030003000300030003000300030003000FE00>
+16 13 -1 12 13] 114 dc
+[<0FC0186020106018C00CC00CC00CC00CC00C6018601838700FC0>
+16 13 -1 12 17] 111 dc
+[<10001000100030007000FF80300030003000300030003000300030803080308011000E
+00>
+16 18 -1 17 13] 116 dc
+[<0F80104020206030C010FFF0C000C000C0006000201018200FC0>
+16 13 -1 12 15] 101 dc
+[<00780018001800180018001800180F98187820386018C018C018C018C018C018601820
+3810580F9E>
+16 20 -1 19 18] 100 dc
+[<F3E034303818301830183018301830183018301830183018FC7E>
+16 13 -1 12 18] 110 dc
+[<F078301830183018301830183018301830183018303818580F9E>
+16 13 -1 12 18] 117 dc
+[<F3E034303808300C30063006300630063006300C3808343033E0300030003000300030
+00FC00>
+16 19 -1 12 18] 112 dc
+[<01F8000604000C0E00180E00180000180000180000FFFE001806001806001806001806
+001806001806001806001806001806001806001806007E1F80>
+24 20 0 19 19] 12 dc
+[<F0303030303030303030303030303030303030FC>
+8 20 -1 19 9] 108 dc
+[<40E040>
+8 3 -3 2 9] 46 dc
+cmr10.300 sf
+[<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+C0C0C0C0FEFE>
+8 41 -4 30 12] 91 dc
+[<FEFE060606060606060606060606060606060606060606060606060606060606060606
+06060606FEFE>
+8 41 0 30 12] 93 dc
+cmtt10.300 sf
+[<000180000380000380000700000700000E00000E00001C00001C000038000038000070
+0000700000E00000E00001C00001C0000380000380000700000700000E00000E00001C00
+001C0000380000380000700000700000E00000E00000C00000>
+24 32 -2 28 22] 47 dc
+[<01C00001C00001C00001C00071C700F9CF807FFF001FFC0007F00007F0001FFC007FFF
+00F9CF8071C70001C00001C00001C00001C000>
+24 18 -2 21 22] 42 dc
+[<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F
+801FFF001FFE001FF8001C00001C00001C00001C00001C00001C00001C00007F0000FF80
+007F0000>
+24 25 -1 24 22] 80 dc
+[<1FE0007FF8007FFC00783C00301E00000E00000E0003FE001FFE007E0E00F00E00E00E
+00E00E00F01E00F83E007FFFE03FE7E00F83E0>
+24 18 -2 17 22] 97 dc
+[<03F80FFE1FFE3C1E780C7000F000E000E000E000E000F000700778073E0F1FFE0FFC03
+F0>
+16 18 -3 17 22] 99 dc
+[<7E0000FE00007E00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E
+000E3C000E78000EF0000FF0000FF8000FBC000F1E000E0E000E07000E07807F87F0FFCF
+F07F87F0>
+24 25 0 24 22] 107 dc
+[<03E3C00FFFE01FFFE01E3CC03C1E00380E00380E00380E003C1E001E3C001FFC001FF8
+003BE0003800003800001FFC001FFF003FFFC07803C0F001E0E000E0E000E0E000E0F001
+E07C07C03FFF800FFE0003F800>
+24 28 -1 17 22] 103 dc
+[<03E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03
+F0>
+16 18 -3 17 22] 101 dc
+[<7E3C00FEFF007FFF800F87800F03800F03800E03800E03800E03800E03800E03800E03
+800E03800E03800E03807FC7F0FFE7F87FC7F0>
+24 18 0 17 22] 110 dc
+[<F9C380FFEFC0FFFFE03E7CE03C78E03870E03870E03870E03870E03870E03870E03870
+E03870E03870E03870E0FE7CF8FE7CF8FE3C78>
+24 18 0 17 22] 109 dc
+[<70F8F8F870000000000000000070F8F8F870>
+8 18 -8 17 22] 58 dc
+[<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C001C1C001FFC
+001FFC001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00E07FFFE0FFFF
+E07FFFE0>
+24 25 -1 24 22] 69 dc
+[<7F1FC07F3FC07F1FC00F1C00073C0003B80003F00001F00000E00001E00001F00003B8
+00073C00071C000E0E007F1FC0FF3FE07F1FC0>
+24 18 -1 17 22] 120 dc
+[<7E3E00FEFF807FFFC00F83E00F01E00E00F00E00F00E00700E00700E00700E00700E00
+F00F00E00F01E00F83C00FFFC00EFF000E3C000E00000E00000E00000E00000E00000E00
+007FC000FFE0007FC000>
+24 27 0 17 22] 112 dc
+[<0300000700000700000700000700007FFF00FFFF00FFFF000700000700000700000700
+0007000007000007000007010007038007038007078007878003FF0003FE0000F800>
+24 23 -1 22 22] 116 dc
+[<70F8F8F870>
+8 5 -8 4 22] 46 dc
+[<FE0FE0FF1FE0FE0FE03803801C07001C07001C07001C07000E0E000E0E000E0E000E0E
+00060C00071C00071C00071C00071C0003180003B80003B80003B80001B00001F00001F0
+0000E000>
+24 25 -1 24 22] 86 dc
+[<FF0FC0FF3FE0FF7FE007F04007E00007C0000780000780000700000700000700000700
+00070000070000070000FFFC00FFFC00FFFC00>
+24 18 -1 17 22] 114 dc
+[<0FEC3FFC7FFCF03CE01CE01CF0007F801FF007FC003EE00EE00EF00EF81EFFFCFFF8C7
+E0>
+16 18 -3 17 22] 115 dc
+[<018003C003C0018000000000000000007FC07FC07FC001C001C001C001C001C001C001
+C001C001C001C001C001C07FFFFFFF7FFF>
+16 26 -3 25 22] 105 dc
+[<03E0000FF8001FFC003C1E00780F00700700E00380E00380E00380E00380E00380F007
+80700700780F003C1E001FFC000FF80003E000>
+24 18 -2 17 22] 111 dc
+[<01800380038007800F807F80FF80738003800380038003800380038003800380038003
+8003800380038003807FF87FFC7FF8>
+16 25 -4 24 22] 49 dc
+[<03E0000FF8001FFC001E3C00380E00780F00700700700700E00380E00380E00380E003
+80E00380E00380E00380E00380F00780700700700700780F003C1E001E3C001FFC000FF8
+0003E000>
+24 25 -2 24 22] 48 dc
+[<01F18007FF800FFF801F0F803C0780780780780380700380F00000E00000E00000E000
+00E00000E00000E00000E00000F000007003807803807803803C07801F0F000FFE0007FC
+0001F000>
+24 25 -2 24 22] 67 dc
+[<FFC000FFC000FFC00001C00001C00001C00001C00001C00001C00001C00001C00001C0
+0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF
+80FFFF80>
+24 25 -2 24 22] 108 dc
+[<003F00007F00003F0000070000070000070000070003C7000FF7003FFF003C1F00780F
+00F00700F00700E00700E00700E00700E00700F00700F00F00781F007C3F003FFFE01FF7
+F007C7E0>
+24 25 -1 24 22] 100 dc
+[<00E00001F00001F00001B00001B00003B80003B80003B800031800071C00071C00071C
+00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007F1FC0FF1F
+E07F1FC0>
+24 25 -1 24 22] 65 dc
+[<03E0000FF8003FFC007C1E00780F00F00700E00700E00780E00780E00380F00780F007
+80780F803FFF803FFB800FE380000780000700300F00780E00781E00787C007FF8003FE0
+000F8000>
+24 25 -2 24 22] 57 dc
+[<07E0001FFC007FFE00781F00780F00780700000700000F00000F00003E0007FC0007F8
+0007FC00001E00000700000780000380000380F00380F00780F00700F81F007FFE003FFC
+0007E000>
+24 25 -2 24 22] 51 dc
+[<7FE000FFF8007FFC001C1E001C0F001C07001C07001C07001C07001C0F001C1E001FFC
+001FF8001FFC001C1C001C0E001C0E001C0E001C0E001C0E201C0E701C0E707F07E0FF87
+E07F03C0>
+24 25 -1 24 22] 82 dc
+[<07E0001FF8007FFE00783F00F00F00F00780F00380F003800003800003800007800007
+00000F00001E00003C0000780000F00003E0000780000F00001E03803C03807FFF80FFFF
+807FFF80>
+24 25 -2 24 22] 50 dc
+[<07E3001FFF007FFF00781F00F00F00E00700E00700E00000F000007800007F80001FF0
+0007FC0000FE00000F00000780000380000380E00380E00380F00780F80F00FFFE00FFFC
+00C7F000>
+24 25 -2 24 22] 83 dc
+[<7E0000FE00007E00000E00000E00000E00000E00000E3E000EFF800FFFC00F83E00F01
+E00E00F00E00F00E00700E00700E00700E00700E00F00F00E00F01E00F83C00FFFC00EFF
+00063C00>
+24 25 0 24 22] 98 dc
+[<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001FFC
+001FFC001FFC001C1C001C1C001C00001C00001C00001C00001C00001C0000FF8000FFC0
+00FF8000>
+24 25 -1 24 22] 70 dc
+[<7FFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0E0E000E00000E00000E00000E00000E0
+0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00007FC000FFE
+0007FC00>
+24 25 -1 24 22] 84 dc
+[<7E0000FE00007E00000E00000E00000E00000E00000E3C000EFF000FFF800F87800F03
+800F03800E03800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7
+F87FC7F0>
+24 25 0 24 22] 104 dc
+[<FF1FE0FFBFE0FF1FE038038038038038038038038038E38019F30019F30019B3001DB7
+001DB7001DB7001DB7000F1E000F1E000F1E00>
+24 18 -1 17 22] 119 dc
+[<001F00007F8000FF8001E78001C30001C00001C0007FFF00FFFF00FFFF0001C00001C0
+0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0003FFE007FFF
+003FFE00>
+24 25 -1 24 22] 102 dc
+[<7E1F80FE3F807E1F800E03800E03800E03800E03800E03800E03800E03800E03800E03
+800E03800E07800F0F800FFFF007FFF803E3F0>
+24 18 0 17 22] 117 dc
+[<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C00071C00039C00039C
+0003980001B80001B80000F00000F00000F00000E00000E00000E00001C00079C0007BC0
+007F80003F00003C0000>
+24 27 -1 17 22] 121 dc
+[<7F1FC0FF1FE07F1FC01C07001E0F000E0E000E0E000E0E00071C00071C00071C00071C
+0003B80003B80003B80001F00001F00000E000>
+24 18 -1 17 22] 118 dc
+[<FFFF80FFFF80FFFF80>
+24 3 -2 13 22] 45 dc
+[<FC07E0FE0FE0FC07E07001C07001C07001C030018038038038038038038038E38039F3
+8039F38039B38019B30019B30019B30019B30019B30019B3001913001B1B000F1E000F1E
+000E0E00>
+24 25 -1 24 22] 87 dc
+[<FFFEFFFEFFFE0380038003800380038003800380038003800380038003800380038003
+800380038003800380FFFEFFFEFFFE>
+16 25 -3 24 22] 73 dc
+[<FFFF80FFFF80FFFF80>
+24 3 -2 -2 22] 95 dc
+[<07C7001FF7003FFF007C3F00781F00F00F00F00700E00700E00700E00700E00700F007
+00F00F00781F007C3F003FFF001FF70007C7000007000007000007000007000007000007
+00003FE0007FF0003FE0>
+24 27 -2 17 22] 113 dc
+[<387C7E7E3E0E1E3C7CF860>
+8 11 -7 4 22] 44 dc
+[<7E1FC0FF3FE07F1FC01D07001D87001D87001D87001DC7001DC7001CC7001CC7001CE7
+001CE7001CE7001C67001C67001C77001C77001C37001C37001C37001C17007F1F00FF9F
+007F0F00>
+24 25 -1 24 22] 78 dc
+[<00E001E007C007000F001E003C0038007800700070007000F000E000E000E000E000E0
+00E000E000F000700070007000780038003C001E000F00070007C001E000E0>
+16 33 -6 28 22] 40 dc
+[<00F80003FE000FFF001F0F803E3F803C7F8078FFC071E7C0F1C3C0E3C3C0E381C0E381
+C0E381C0E381C0E381C0E3C3C0F1C38071E78078FF003C7E003E3C001F03C00FFFC003FF
+0000FC00>
+24 25 -2 24 22] 64 dc
+[<E000F0007C001C001E000F000780038003C001C001C001C001E000E000E000E000E000
+E000E000E001E001C001C001C003C0038007800F001E001C007C00F000E000>
+16 33 -4 28 22] 41 dc
+[<03000F803FE0FDF8F0784010>
+16 6 -4 24 22] 94 dc
+[<FFC000FFC000FFC0001C00001C00001C00001C00001C00001C00001C00001C00001C00
+001C00001C00001C00001C00001C00001C00401C00E01C00E01C00E01C00E0FFFFE0FFFF
+E0FFFFE0>
+24 25 -1 24 22] 76 dc
+[<00F80003FE000FFF001F0F003E0F003C0F00780600700000F00000F3F800EFFE00FFFE
+00F80F00F00780F00780E00380F00380F00380700380780780780F003C1F001FFE000FF8
+0003E000>
+24 25 -2 24 22] 54 dc
+[<7F1FC0FFBFE07F1FC01C07001C07001C07001C07001C07001C07001C07001FFF001FFF
+001FFF001C07001C07001C07001C07001C07001C07001C07001C07001C07007F1FC0FFBF
+E07F1FC0>
+24 25 -1 24 22] 72 dc
+[<3FFFC07FFFC07FFFC0700780700F00701E00003C0000780001F00003E0000780000F00
+001E01C03C01C07801C0FFFFC0FFFFC0FFFFC0>
+24 18 -1 17 22] 122 dc
+[<3FFE003FFE003FFE003800003800003800003800003800003800003800003BF0003FFC
+003FFE003C0F00300700000780000380600380F00380F00780F00F00F81F007FFE001FF8
+0007E000>
+24 25 -2 24 22] 53 dc
+[<E038F078F078F078F078F078F078F078E038E0386030>
+16 11 -4 24 22] 34 dc
+[<7FF800FFFE007FFF001C0F001C07801C03C01C01C01C01C01C01E01C00E01C00E01C00
+E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C03C01C07801C0F807FFF00FFFE
+007FF800>
+24 25 0 24 22] 68 dc
+[<1FFC003FFE007FFF00780F00F00780E00380E00380E00380E00380E00380E00380E003
+80E00380E00380E00380E00380E00380E00380E00380F00780F00780780F007FFF003FFE
+001FFC00>
+24 25 -2 24 22] 79 dc
+[<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01
+C01C01C01C01C01C01C01C01C01C01C01C01C01C01C00E03800E038007070007FF0003FE
+0000F800>
+24 25 0 24 22] 85 dc
+[<FE0FE0FF1FE0FE0FE01C07001C07000E0E000E0E00071C00071C00071C0003B80003B8
+0001F00001F00000E00000E00000E00000E00000E00000E00000E00000E00003F80007FC
+0003F800>
+24 25 -1 24 22] 89 dc
+[<387C7C7C380000000000000000387C7C7C3C1C3C38F8F060>
+8 24 -7 17 22] 59 dc
+[<FC07E0FE0FE0FE0FE03A0B803B1B803B1B803B1B803B1B803B1B803BBB8039B38039B3
+8039B38039B38039F38038E38038E380380380380380380380380380380380FE0FE0FE0F
+E0FE0FE0>
+24 25 -1 24 22] 77 dc
+[<7FF800FFFE007FFF001C0F001C07801C03801C03801C03801C07801C07001FFF001FFE
+001FFE001C1F001C03801C03C01C01C01C01C01C01C01C01C01C03C01C07807FFF80FFFF
+007FFC00>
+24 25 -1 24 22] 66 dc
+4 @bop1
+cmbx10.518 sf
+0 50(1)s
+28(Ov)h
+-2(erview)h
+cmsy10.300 sf
+233 461(\021)s
+62 511(f)s
+83 560(g)s
+227 710(\021)s
+62 760(f)s
+83 809(g)s
+234 959(\021)s
+62 1009(f)s
+83 1059(g)s
+611 1569(\021)s
+62 1619(f)s
+cmbx10.300 sf
+0 461(except.h)s
+0 710(except.c)s
+0 959(ex)s
+17(test.c)h
+552 1569(M)s
+cmbx10.432 sf
+0 1333(1.1)s
+24(Con\014guration)h
+24(Header)h
+22(Notice)h
+cmsl10.300 sf
+83 511(Sp)s
+1(eci\014cation)h
+14(\014le)h
+83 760(Implem)s
+-1(en)h
+-1(tation)h
+12(\014le)h
+83 1009(T)s
+-3(est)h
+14(program)h
+13(\014le)h
+0 1569(Con\014guration)s
+13(header)h
+15(notice)h
+cmr7.300 sf
+0 610(This)s
+12(macro)h
+10(is)h
+12(attac)h
+-1(hed)h
+10(to)h
+11(an)h
+11(output)h
+12(\014le.)h
+0 859(This)s
+12(macro)h
+10(is)h
+12(attac)h
+-1(hed)h
+10(to)h
+11(an)h
+11(output)h
+12(\014le.)h
+0 1108(This)s
+12(macro)h
+10(is)h
+12(attac)h
+-1(hed)h
+10(to)h
+11(an)h
+11(output)h
+12(\014le.)h
+cmr10.300 sf
+0 137(This)s
+14(o)h
+-1(v)h
+-1(erview)h
+14(section)h
+14(pro)h
+-1(vides)h
+14(general)h
+14(informatio)h
+-1(n)h
+12(ab)h
+1(out)h
+14(this)h
+14(pac)h
+-1(k)h
+-2(age.)h
+0 212(Pro)s
+1(cessing)h
+17(this)h
+16(\014le)h
+16(using)h
+15(F)h
+-3(unnelW)h
+-3(eb)h
+16(will)h
+14(result)h
+17(in)h
+15(the)h
+17(pro)h
+1(duction)h
+16(of)h
+15(the)h
+16(sp)h
+1(eci\014cation)h
+17(and)h
+15(implem)h
+-1(en)h
+-1(tation)h
+0 262(\014les)s
+15(de\014ned)h
+16(b)h
+1(elo)h
+-1(w.)h
+21(In)h
+14(addition)h
+14(a)h
+15(test)h
+16(program)h
+13(for)h
+14(testing)h
+15(this)h
+15(pac)h
+-1(k)h
+-2(age)h
+15(will)h
+13(b)h
+1(e)h
+16(generated.)h
+22(This)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+0 311(source)s
+13(\014le)h
+12(and)h
+11(the)h
+12(\014les)h
+13(that)h
+11(it)h
+12(generates)h
+13(are)h
+12(Cop)h
+-1(yrigh)h
+-1(t)h
+11(\(C\))h
+12(Ross)h
+11(William)h
+-1(s)h
+10(1993.)h
+16(See)h
+12(the)h
+13(con\014guration)h
+11(header)h
+0 361(notice)s
+14(b)h
+1(elo)h
+-1(w.)h
+176 461([1])s
+381 511([18])s
+170 710([2])s
+438 760([31])s
+177 959([3])s
+396 1009([74])s
+0 1183(The)s
+14(remainder)h
+14(of)h
+13(this)h
+14(o)h
+-1(v)h
+-1(erview)h
+14(section)h
+14(con)h
+-1(tains)h
+14(only)h
+13(descriptions.)h
+19(It)h
+14(do)h
+1(es)h
+15(not)h
+14(con)h
+-1(tain)h
+13(an)h
+-1(y)h
+13(co)h
+1(de.)h
+0 1420(The)s
+13(follo)h
+-1(wing)h
+11(notice)h
+13(applies)h
+13(to)h
+13(this)h
+13(F)h
+-3(unnelW)h
+-3(eb)h
+13(source)h
+14(\014le)h
+13(as)h
+13(w)h
+-1(ell)h
+12(as)h
+14(to)h
+12(the)h
+14(F)h
+-3(unnelW)h
+-3(eb)h
+13(output)h
+13(\014les)h
+13(to)h
+13(whic)h
+-1(h)h
+0 1469(it)s
+14(is)h
+13(written.)h
+507 1569([4])s
+965 2770(4)s
+cmtt10.300 sf
+83 1669(/************)s
+-1(*****)h
+-1(****)h
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(****)h
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(***/)h
+83 1719(/*)s
+21(Package)h
+21(name)h
+43(:)h
+21(Except.)h
+1023(*/)h
+83 1768(/*)s
+21(Version)h
+152(:)h
+21(1.0)h
+1111(*/)h
+83 1818(/*)s
+21(Completed)h
+108(:)h
+21(April)h
+21(1993.)h
+936(*/)h
+83 1868(/*)s
+21(Released)h
+130(:)h
+21(29)h
+21(September)h
+20(1993.)h
+784(*/)h
+83 1918(/*)s
+21(First)h
+21(created)h
+21(:)h
+21(This)h
+21(package)h
+20(was)h
+22(first)h
+20(created)h
+21(in)h
+21(April)h
+21(1993.)h
+195(*/)h
+83 1968(/*)s
+21(Summary)h
+152(:)h
+21(This)h
+21(package)h
+20(provides)h
+21(Ada-like)h
+20(exceptions)h
+19(for)h
+22(C.)h
+130(*/)h
+83 2017(/*)s
+21(Components)h
+86(:)h
+21(except.fw)h
+42(-)h
+21(FunnelWeb)h
+20(source)h
+21(file.)h
+413(*/)h
+83 2067(/*)s
+370(except.h)h
+64(-)h
+21(Exported)h
+21(header)h
+20(file.)h
+435(*/)h
+83 2117(/*)s
+370(except.c)h
+64(-)h
+21(Implementation)h
+19(file.)h
+457(*/)h
+83 2167(/*)s
+370(ex_test.c)h
+42(-)h
+21(C)h
+22(test)h
+21(program.)h
+565(*/)h
+83 2217(/*)s
+21(Requires)h
+130(:)h
+21(style.h,)h
+20(as.h,)h
+21(as.c.)h
+740(*/)h
+83 2267(/*)s
+21(Author)h
+174(:)h
+21(Ross)h
+21(N.)h
+21(Williams)h
+21(\(ross@guest)h
+-1(.ade)h
+-1(laide)h
+-1(.edu.)h
+-1(au\))h
+194(*/)h
+83 2316(/*)s
+370(Rocksoft^tm)h
+20(Pty)h
+21(Ltd)h
+762(*/)h
+83 2366(/*)s
+370(16)h
+21(Lerwick)h
+21(Avenue,)h
+20(Hazelwood)h
+20(Park)h
+21(5066,)h
+21(Australia.)h
+85(*/)h
+83 2416(/*)s
+21(FTP)h
+22(Archive)h
+64(:)h
+21(This)h
+21(file)h
+21(can)h
+21(be)h
+22(found)h
+20(in)h
+632(*/)h
+83 2466(/*)s
+370("ftp.adelaide)h
+-1(.edu.)h
+-1(au/pu)h
+-1(b/fun)h
+-1(nelw)h
+-1(eb/ex)h
+-1(ample)h
+-1(s/")h
+194(*/)h
+83 2516(/*)s
+21(Disclaimer)h
+86(:)h
+21(This)h
+21(program)h
+20(is)h
+22(distributed)h
+19(WITHOUT)h
+21(ANY)h
+21(WARRANTY;)h
+107(*/)h
+83 2565(/*)s
+370(without)h
+20(even)h
+21(the)h
+22(implied)h
+20(warranty)h
+20(of)h
+21(MERCHANTABILITY)h
+41(*/)h
+83 2615(/*)s
+370(or)h
+21(FITNESS)h
+21(FOR)h
+21(A)h
+22(PARTICULAR)h
+19(PURPOSE.)h
+391(*/)h
+83 2665(/*)s
+21(Copyright)h
+108(:)h
+21(Copyright)h
+20(\(C\))h
+21(Ross)h
+21(Williams)h
+20(1993.)h
+457(*/)h
+15 2 50 959 r
+4 @eop
+5 @bop0
+/cmti10.300 127 @newfont
+cmti10.300 sf
+[<01E007100C1018083810701070607F80E000E000E000E000E000E0086010602030C01F
+00>
+16 18 -5 17 19] 101 dc
+[<070E0019910010E38020E38041C30041C00001C00001C0000380000380000380000380
+00070200670200E70400CB04008B080070F000>
+24 18 -3 17 19] 120 dc
+[<01F007080C08181C3838300070007000E000E000E000E000E000E008E010602030C01F
+00>
+16 18 -5 17 19] 99 dc
+[<07870004D98008E0C008E0C011C0E011C0E001C0E001C0E00381C00381C00381C00381
+800703800703000707000706000E8C000E70000E00000E00001C00001C00001C00001C00
+003C0000FF8000>
+24 26 -1 17 21] 112 dc
+[<00C001C001C001C00380038003800380FFE00700070007000E000E000E000E001C001C
+001C001C00384038403840388019000E00>
+16 26 -3 25 14] 116 dc
+[<01800380010000000000000000000000000000001C002600470047008E008E000E001C
+001C001C0038003800710071007100720072003C00>
+16 28 -4 27 13] 105 dc
+[<01E007180C0C180C380C300E700E700EE01CE01CE01CE018E038E030E06060C031801E
+00>
+16 18 -5 17 21] 111 dc
+[<3C3C002646004687004707008E07008E07000E07000E07001C0E001C0E001C0E001C1C
+00381C40381C40383840383880701900300E00>
+24 18 -4 17 23] 110 dc
+[<01F006080C080C1C18181C001F001FC00FF007F0007800386030E030C030806060C01F
+00>
+16 18 -3 17 17] 115 dc
+[<0FC00001C00001C0000380000380000380000380000700000700000700000700000E78
+000E8C000F0E000E0E001C0E001C0E001C0E001C0E00381C00381C00381C003838007038
+80703880707080707100E03200601C00>
+24 29 -3 28 21] 104 dc
+[<03CC063C0C3C181C3838303870387038E070E070E070E070E0E2C0E2C0E261E462643C
+38>
+16 18 -5 17 21] 97 dc
+[<001F80000380000380000700000700000700000700000E00000E00000E00000E0003DC
+00063C000C3C00181C00383800303800703800703800E07000E07000E07000E07000E0E2
+00C0E200C0E20061E4006264003C3800>
+24 29 -5 28 21] 100 dc
+[<1F800380038007000700070007000E000E000E000E001C001C001C001C003800380038
+0038007000700070007000E400E400E400E40068003800>
+16 29 -4 28 11] 108 dc
+[<3C3C26C2468747078E068E000E000E001C001C001C001C003800380038003800700030
+00>
+16 18 -4 17 18] 114 dc
+cmbx10.432 sf
+[<00FF800003FFF0000FFFFC003F03FF007C00FF807C007FC0FE007FC0FF003FE0FF003F
+E0FF003FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F8000007F
+800000FF000001FE000001FC000003F0000007E000000FC000001F0000003E0000007C00
+E0007800E000F000E001E001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFF
+C0FFFFFF80FFFFFF80FFFFFF80>
+32 39 -3 38 34] 50 dc
+[<FFFE0000001FFFC0FFFE0000001FFFC0FFFF0000003FFFC003FF0000003FF00003FF00
+00003FF00003BF80000077F00003BF80000077F000039FC00000E7F000039FC00000E7F0
+00038FE00001C7F000038FE00001C7F0000387F0000387F0000387F0000387F0000387F0
+000387F0000383F8000707F0000383F8000707F0000381FC000E07F0000381FC000E07F0
+000380FE001C07F0000380FE001C07F0000380FF003807F00003807F003807F00003807F
+003807F00003803F807007F00003803F807007F00003801FC0E007F00003801FC0E007F0
+0003800FE1C007F00003800FE1C007F00003800FE1C007F000038007F38007F000038007
+F38007F000038003FF0007F000038003FF0007F000038001FE0007F000038001FE0007F0
+00038000FC0007F000038000FC0007F000FFFE00FC01FFFFC0FFFE007801FFFFC0FFFE00
+7801FFFFC0>
+64 41 -3 40 65] 77 dc
+[<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F000700007F800F00003F800E000
+03FC01E00001FC01C00001FC01C00000FE03800000FE038000007F070000007F07000000
+7F8F0000003F8E0000003FDE0000001FDC0000001FDC0000000FF80000000FF80000000F
+F800000007F000000007F000000003E000000003E000000001C00000>
+40 27 -1 26 36] 118 dc
+cmr7.300 sf
+[<F87C301830101820182018200C400C4006800680078003000300>
+16 13 -1 12 17] 118 dc
+[<F00030003000300030003000300030F8306030403080330037003B80318030C0306030
+703030FC7C>
+16 20 -1 19 17] 107 dc
+[<0C001C00EC000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C
+00FFC0>
+16 19 -3 18 17] 49 dc
+[<0FC0003000084008600870083C103F600F800FE031F06078C01CC00CC00CC00C601830
+300FC0>
+16 19 -1 18 17] 56 dc
+[<40E060202020404080>
+8 9 -3 2 9] 44 dc
+[<0FC030707038703870380038003000E00FC0007000380018001C601CF01CF018E03860
+701FC0>
+16 19 -1 18 17] 51 dc
+[<40007FFC7FF8401080108020004000800100010003000200060006000E000E000E000E
+000E000400>
+16 20 -2 19 17] 55 dc
+[<006000E000E00160026006600C600860106020606060C060FFFC006000600060006000
+6003FC>
+16 19 -1 18 17] 52 dc
+cmtt10.300 sf
+[<000180000780001F80003E0000F80001F00007C0000F80003E0000FC0000F00000FC00
+003E00000F800007C00001F00000F800003E00001F80000780000180>
+24 21 -2 22 22] 60 dc
+[<C00000F00000FC00003E00000F800007C00001F00000F800003E00001F80000780001F
+80003E0000F80001F00007C0000F80003E0000FC0000F00000C00000>
+24 21 -2 22 22] 62 dc
+[<0FE03FF87FFCF01EF00EF00E601E007C00F801F003E003C00380038003800380030000
+000000000000000300078007800300>
+16 25 -3 24 22] 63 dc
+[<7F1F807F3F807F1F800E1E000E1C00073C0007380003B80003F00001F00001E00000E0
+0001E00001F00003F00003B80007B800071C00071C000E0E000E0E001C07007F1FC0FF1F
+E07F1FC0>
+24 25 -1 24 22] 88 dc
+[<003000780078003000000000000000001FF81FF81FF800380038003800380038003800
+380038003800380038003800380038003800380038003800386070F0F0FFE07FC03F80>
+16 35 -2 25 22] 106 dc
+cmr10.300 sf
+[<007FC001C1C00303C00703C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFF
+C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
+C00E01C00E01C00E01C00E01C07FCFF8>
+24 29 0 28 23] 13 dc
+[<60F0F8680808081010204080>
+8 12 -4 28 12] 39 dc
+[<00C001E001E000C000000000000000000000000000000FE000E000E000E000E000E000
+E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0C0F1C061
+803E00>
+16 37 3 28 13] 106 dc
+[<03C1000C3300180B00300F00700700700700E00700E00700E00700E00700E00700E007
+00600700700700300F00180F000C370007C7000007000007000007000007000007000007
+00000700003FE0>
+24 26 -2 17 22] 113 dc
+[<003F07E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E00000
+0E00E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E
+00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00
+E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FC
+FF80>
+40 29 0 28 35] 14 dc
+[<60F0F0F0F0F0F0F060606060606060606060606060000000000060F0F060>
+8 30 -4 29 12] 33 dc
+[<60F0F0600000000000000000000060F0F060>
+8 18 -4 17 12] 58 dc
+[<01800180018001804182F18F399C0FF003C003C00FF0399CF18F418201800180018001
+80>
+16 18 -2 30 21] 42 dc
+[<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01C0000E01C0
+000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0
+000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0
+000E01C0007F87FC00>
+32 29 0 28 24] 11 dc
+5 @bop1
+cmsy10.300 sf
+83 739(g)s
+cmti10.300 sf
+476 1025(exc)s
+-2(eptions)h
+959 1125(hand)s
+2(ler)h
+1848 1175(r)s
+-2(aises)h
+cmbx10.432 sf
+0 938(1.2)s
+24(Abstract)h
+0 1424(1.3)s
+24(Motiv)h
+-4(ation)h
+cmr7.300 sf
+0 789(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nitions)h
+13(18,)h
+10(31,)h
+11(and)h
+11(74.)h
+cmtt10.300 sf
+83 42(/*)s
+370(However,)h
+20(permission)h
+20(is)h
+21(granted)h
+21(for)h
+21(anyone)h
+20(to)h
+22(copy,)h
+86(*/)h
+83 91(/*)s
+370(modify,)h
+20(and)h
+22(distribute)h
+19(this)h
+21(work)h
+21(for)h
+21(any)h
+22(purpose,)h
+107(*/)h
+83 141(/*)s
+370(commercial)h
+20(or)h
+21(non-commercial)h
+-1(,)h
+20(so)h
+21(long)h
+21(as)h
+22(this)h
+21(notice)h
+42(*/)h
+83 191(/*)s
+370(is)h
+21(included)h
+21(verbatim,)h
+20(and)h
+21(so)h
+21(long)h
+21(as)h
+21(all)h
+305(*/)h
+83 241(/*)s
+370(modifications)h
+19(are)h
+21(recorded)h
+21(in)h
+21(the)h
+21(change)h
+21(log)h
+21(below.)h
+64(*/)h
+83 291(/*)s
+21(Changes)h
+152(:)h
+21(Please)h
+21(log)h
+21(any)h
+21(changes)h
+20(to)h
+22(this)h
+21(software)h
+20(either)h
+20(in)h
+22(the)h
+21(*/)h
+83 340(/*)s
+370(originating)h
+20(FunnelWeb)h
+20(source)h
+20(file,)h
+21(or,)h
+21(if)h
+21(you)h
+22(must,)h
+64(*/)h
+83 390(/*)s
+370(in)h
+21(the)h
+22(C)h
+21(source)h
+21(files)h
+21(produced)h
+20(from)h
+21(the)h
+21(FunnelWeb)h
+107(*/)h
+83 440(/*)s
+370(file.)h
+1067(*/)h
+83 490(/*)s
+21(--<Start)h
+21(of)h
+21(Change)h
+20(Log>--)h
+980(*/)h
+83 540(/*)s
+21(??-Apr-93:)h
+20(RNW:)h
+21(Created)h
+20(this)h
+21(package.)h
+718(*/)h
+83 589(/*)s
+21(29-Sep-93:)h
+20(RNW:)h
+21(Released)h
+20(this)h
+21(package.)h
+696(*/)h
+83 639(/*)s
+21(--<End)h
+21(of)h
+21(Change)h
+21(Log>--)h
+1023(*/)h
+83 689(/************)s
+-1(*****)h
+-1(****)h
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(****)h
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(*****)h
+-1(***/)h
+551 1225(EX)s
+15(RAISE)h
+943 1561(setjmp)s
+359(longjmp)h
+1312 1760(jmpbuf)s
+518 1885(jmpbuf)s
+1700 2059(jmpbuf)s
+346 2183(setjmp)s
+96(longjmp)h
+cmr10.300 sf
+0 1025(This)s
+15(pac)h
+-1(k)h
+-2(age)h
+15(pro)h
+-1(vides)h
+15(an)h
+213(facilit)h
+-1(y)h
+14(for)h
+15(C)h
+15(that)h
+15(is)h
+15(v)h
+-1(ery)h
+15(simila)h
+-1(r)h
+14(to)h
+15(the)h
+15(exceptions)h
+16(facilit)h
+-1(y)h
+14(in)h
+14(the)h
+16(Ada)h
+0 1075(programm)s
+-1(ing)h
+14(language.)h
+25(An)h
+17(exception)h
+17(is)h
+17(a)h
+16(con)h
+-1(trol-\015o)h
+-1(w)h
+16(ev)h
+-1(en)h
+-1(t)h
+17(that)h
+16(causes)h
+18(con)h
+-1(trol)h
+17(to)h
+16(b)h
+1(e)h
+17(transferred)h
+19(up)h
+16(the)h
+0 1125(stac)s
+-1(k)h
+17(\(with)h
+17(the)h
+18(stac)h
+-1(k)h
+17(un)h
+-1(winding)h
+16(as)h
+17(it)h
+16(go)h
+1(es\))h
+18(un)h
+-1(til)h
+16(a)h
+170(for)h
+16(the)h
+18(particular)h
+16(exception)h
+18(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+16(is)h
+17(found.)h
+0 1175(The)s
+15(exception)h
+15(facilit)h
+-1(y)h
+12(is)h
+14(totally)h
+13(under)h
+15(the)h
+15(clien)h
+-1(t's)h
+14(con)h
+-1(trol.)h
+19(The)h
+14(clien)h
+-1(t)h
+14(de\014nes)h
+16(a)h
+14(set)h
+15(of)h
+14(exceptions,)h
+15(and)h
+0 1225(an)s
+15(exception)h
+17(ev)h
+-1(en)h
+-1(t)h
+16(b)h
+-1(y)h
+16(calling)h
+183(.)h
+14(Other)h
+17(functions)h
+16(de\014ned)h
+17(b)h
+-1(y)h
+15(the)h
+16(clien)h
+-1(t)h
+16(can)h
+16(catc)h
+-1(h)h
+16(the)h
+16(exceptions)h
+17(b)h
+-1(y)h
+0 1274(name.)s
+17(The)h
+14(exception)h
+15(facilit)h
+-1(y)h
+12(is)h
+14(useful)h
+14(for)h
+13(error)h
+15(handling)h
+13(and)h
+13(pac)h
+-1(k)h
+-2(age)h
+14(in)h
+-1(terface)h
+14(de\014nition.)h
+0 1511(The)s
+16(motiv)h
+-3(atio)h
+-1(n)h
+13(for)h
+15(creating)h
+16(this)h
+15(pac)h
+-1(k)h
+-2(age)h
+15(w)h
+-1(as)h
+15(to)h
+15(pro)h
+-1(vide)h
+14(a)h
+15(simpler,)h
+14(safer,)h
+15(and)h
+15(more)h
+14(sophisticated)h
+16(non-lo)h
+1(cal)h
+0 1561(jump)s
+9(facilit)h
+-1(y)h
+9(than)h
+11(is)h
+11(pro)h
+-1(vided)h
+11(b)h
+-1(y)h
+10(the)h
+12(standard)h
+11(ANSI)h
+153(\(ANSI)h
+11(7.6.1.1\))h
+9(and)h
+174(\(7.6.2.1)h
+-1(\))h
+9(primitiv)h
+-1(es.)h
+0 1611(In)s
+12(particular,)h
+12(the)h
+13(biggest)h
+12(problem)h
+11(with)h
+12(the)h
+13(ANSI)h
+12(functions)h
+12(is)h
+13(that)h
+12(they)h
+13(require)h
+13(that)h
+12(the)h
+13(thro)h
+-1(w)h
+-1(er)h
+13(and)h
+12(catc)h
+-1(her)h
+0 1660(of)s
+18(the)h
+19(con)h
+-1(trol)h
+19(ev)h
+-1(en)h
+-1(t)h
+19(b)h
+1(e)h
+19(su\016cien)h
+-1(tly)h
+19(co)h
+1(ordinated)h
+19(to)h
+18(share)h
+20(a)h
+18(single)h
+18(global)h
+17(v)h
+-2(ariable)h
+18(con)h
+-1(taining)h
+17(the)h
+20(catc)h
+-1(her's)h
+0 1710(con)s
+-1(text.)h
+26(The)h
+17(requiremen)h
+-1(t)h
+17(for)h
+16(this)h
+16(link)h
+15(is)h
+17(unacceptable)h
+17(b)h
+1(ecause)h
+18(it)h
+16(precludes)h
+18(the)h
+17(use)h
+18(of)h
+15(non-lo)h
+1(cal)h
+16(jumps)h
+15(as)h
+0 1760(an)s
+13(elemen)h
+-1(t)h
+13(of)h
+12(the)h
+14(in)h
+-1(terface)h
+14(of)h
+12(pac)h
+-1(k)h
+-2(ages)h
+13(ha)h
+-1(ving)h
+12(an)h
+13(abstract)h
+14(clien)h
+-1(t)h
+14(\(unless)h
+146(s)h
+12(are)h
+14(passed)h
+14(as)h
+13(parameters)h
+13(-)h
+0 1810(yuk!\).)s
+18(This)h
+13(lac)h
+-1(k)h
+14(of)h
+13(abstraction)h
+14(results)h
+15(in)h
+14(the)h
+14(follo)h
+-1(wing)h
+11(disadv)h
+-2(an)h
+-1(tages:)h
+0 1885(*)s
+17(A)h
+17(global)h
+16(v)h
+-2(ariable)h
+16(of)h
+16(t)h
+-1(yp)h
+1(e)h
+166(m)h
+-1(ust)h
+16(b)h
+1(e)h
+17(agreed)h
+18(up)h
+1(on)h
+17(b)h
+1(et)h
+-1(w)h
+-1(een)h
+19(thro)h
+-1(w)h
+-1(er)h
+18(and)h
+17(catc)h
+-1(her)h
+18(for)h
+17(eac)h
+-1(h)h
+18(p)h
+1(oten)h
+-1(tial)h
+0 1934(thro)s
+-1(w.)h
+25(The)h
+16(result)h
+17(is)h
+16(a)h
+16(proliferation)h
+15(of)h
+15(global)h
+15(con)h
+-1(text)h
+17(v)h
+-2(ariables,)h
+15(whose)h
+17(v)h
+-2(alidit)h
+-1(y)h
+14(at)h
+16(an)h
+-1(y)h
+15(particular)h
+16(instan)h
+-1(t)h
+16(is)h
+0 1984(often)s
+14(unclear.)h
+0 2059(*)s
+14(If)h
+13(the)h
+14(programm)h
+-1(er)h
+13(wishes)h
+14(to)h
+14(set)h
+15(up)h
+14(a)h
+13(nest)h
+15(of)h
+13(handlers)h
+15(for)h
+13(a)h
+14(particular)h
+13(condition,)h
+13(the)h
+14(global)h
+157(bu\013er)h
+0 2109(for)s
+14(the)h
+14(condition)h
+13(m)h
+-1(ust)h
+13(b)h
+1(e)h
+15(explicitly)h
+12(and)h
+14(carefully)h
+14(sa)h
+-1(v)h
+-1(ed)h
+14(and)h
+13(restored)h
+16(b)h
+-1(y)h
+14(eac)h
+-1(h)h
+14(function)h
+14(in)h
+13(the)h
+15(nest.)h
+0 2183(*)s
+15(The)h
+16(in)h
+-1(terface)h
+16(to)h
+162(and)h
+183(is)h
+16(a)h
+15(bit)h
+15(ra)h
+-1(w,)h
+15(requiring)h
+16(\014ddling)h
+14(with)h
+15(in)h
+-1(teger)h
+16(v)h
+-2(alues)h
+16(and)h
+15(em)h
+-1(b)h
+1(edding)h
+0 2233(calls)s
+13(in)h
+14(conditional)h
+12(statemen)h
+-1(ts.)h
+0 2308(A)s
+14(b)h
+1(etter)h
+15(solution)h
+14(to)h
+13(the)h
+15(problem)h
+12(of)h
+14(non-lo)h
+1(cal)h
+12(jumps)h
+13(is)h
+14(a)h
+13(system)h
+14(of)h
+13(exceptions.)h
+965 2770(5)s
+14 2 598 1225 r
+5 @eop
+6 @bop0
+cmbx10.300 sf
+[<7FFFFC7FFFFC7E01F87803F87003F0E007E0E007E0C00FC0C01FC0C01F80003F00007F
+00007E0000FC0000FC0001F80003F80603F00607E0060FE0060FC00E1F800E1F801C3F00
+1C7F003C7E00FCFFFFFCFFFFFC>
+24 28 -3 27 29] 90 dc
+cmr7.300 sf
+[<FC01FC1E007017002017802013802011C02010E020107020107020103820101C20100E
+20100F201007201003A01001E01000E01000E0380060FE0020>
+24 20 -1 19 25] 78 dc
+[<FFFF801C03801C00801C00801C00401C00401C08401C08001C18001FF8001C18001C08
+001C08201C00201C00201C00601C00401C00C01C01C0FFFFC0>
+24 20 -1 19 22] 69 dc
+[<FF00FC3C00301C00201C00200E00400E004007008007008007818003810003810001C2
+0001C20000E40000E40000FC00007800007800003000003000>
+24 20 -1 19 25] 86 dc
+[<FFF8001C07001C03801C01C01C01C01C01C01C01C01C03801C07001FF8001C0E001C07
+001C03801C03801C03801C03801C03841C03841C01CCFF80F8>
+24 20 -1 19 24] 82 dc
+cmsl10.300 sf
+[<0FFFFFE000F801E000F000E000F0004000F0004000F0004000F0004001E0004001E040
+4001E0400001E0400001E0C00001E1C00003FF800003C1800003C0800003C0800003C080
+0003C080800780008007800080078001000780010007800300078006000F000E000F003E
+00FFFFFC00>
+32 28 -2 27 28] 69 dc
+[<1FE3FC07C1E003818001C10001C20000E40000EC00007800007000003800007800009C
+00011E00020E000407000C07003C0780FE1FF0>
+24 18 -1 17 22] 120 dc
+[<000F800039C00061C000E3C001C18001C00001C00001C0000380000380000380003FF8
+000380000380000700000700000700000700000700000700000E00000E00000E00000E00
+000E00000E00001C00001E0000FFC000>
+24 29 -1 28 13] 102 dc
+[<000020000000300000007000000070000000F0000000F0000001F00000037800000278
+000006780000047800000C780000087C0000183C0000103C0000203C0000203C0000403C
+0000403E0000FFFE0000801E0001001E0001001E0002001E0002000F0004000F0004000F
+001E001F00FF80FFF0>
+32 29 -1 28 31] 65 dc
+[<3F00000F00000E00000E00000E00000E00000E00000E00001C00001C00001C00001C78
+001D86001E03003C03803801803801803801C03801C03801C07003807003807003807003
+00700700700E00F00C00CC300083C000>
+24 29 -4 28 23] 98 dc
+[<07E00001E00001C00001C00001C00001C00001C00001C0000380000380000380000387
+F80381E003818007020007040007080007100007700007F8000F38000E3C000E1C000E1E
+000E0E000E0F001C07001C0F80FF9FE0>
+24 29 -1 28 22] 107 dc
+cmbx10.432 sf
+[<00000E0000001E0000003E0000007E000000FE000000FE000001FE000003FE0000077E
+00000E7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E0001C07E0003807E
+0007007E000E007E000E007E001C007E0038007E0070007E00E0007E00FFFFFFF8FFFFFF
+F8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE
+00007FFFF8007FFFF8007FFFF8>
+32 39 -2 38 34] 52 dc
+[<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE00000000FE0000000
+0FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
+E00000000FE07F00000FE1FFC0000FE787E0000FEE07F0000FFC03F8000FF803F8000FF0
+03F8000FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
+F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
+000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80>
+40 42 -3 41 38] 104 dc
+[<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC001FE003FC0007F003FC0001F003FC0001F0
+03FC0000F003FC00007003FC00007003FC00007003FC01C07803FC01C03803FC01C03803
+FC01C03803FC03C00003FC03C00003FC0FC00003FFFFC00003FFFFC00003FFFFC00003FC
+0FC00003FC03C00003FC03C00003FC01C00E03FC01C00E03FC01C00E03FC01C01C03FC00
+001C03FC00001C03FC00001C03FC00003C03FC00003803FC00007803FC0000F803FC0001
+F803FC0003F803FC001FF8FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0>
+40 41 -3 40 45] 69 dc
+[<FFFC0FFF00FFFC0FFF00FFFC0FFF0007F003C00003F807800001FC07800000FE0F0000
+00FF1E0000007F3C0000003FF80000001FF00000000FF00000000FF000000007F0000000
+07F80000000FFC0000001FFE0000001EFE0000003C7F000000783F800000F01FC00001E0
+1FE00001C00FE00003C007F000FFF01FFF80FFF01FFF80FFF01FFF80>
+40 27 -1 26 36] 120 dc
+[<01FF000FFFE03E03F87803FC7801FCFE01FEFE01FEFE01FEFE01FE7C01FE3803FC0003
+FC0007F0000FE0000F80001F00001E00003C00003C000078000078000070000070000070
+0000700000700000700000000000000000000000000000000000000000700001FC0003FE
+0003FE0003FE0003FE0003FE0001FC00007000>
+24 42 -4 41 32] 63 dc
+[<0C0003000F803F000FFFFE000FFFFE000FFFFC000FFFF8000FFFE0000FFFC0000FFE00
+000E0000000E0000000E0000000E0000000E0000000E0000000E7FC0000FFFF8000F80FE
+000E007F000C003F8000003F8000001FC000001FC000001FE000001FE018001FE07E001F
+E0FE001FE0FE001FE0FE001FE0FE001FE0FE001FC078003FC078003F803C007F001F01FE
+000FFFFC0003FFF00000FF8000>
+32 39 -3 38 34] 53 dc
+[<007F806003FFF0E00FFFFFE01F807FE03F001FE07E0007E07E0003E07C0003E0FC0001
+E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFE00007FFFE0003FFFFC
+003FFFFF001FFFFF8007FFFFC003FFFFE000FFFFF00007FFF000007FF000000FF8000007
+F8000003F8E00003F8E00001F8E00001F8E00001F8F00001F8F00001F0F80003F0FC0003
+E0FF0007E0FFE01FC0FFFFFF00E0FFFE00C01FF000>
+32 41 -4 40 38] 83 dc
+cmti10.300 sf
+[<1E03270747074707870E870E0E0E0E0E1C1C1C1C1C1C1C1C38383838183818381C7007
+F00070007000E0E0C0E1C0818047003C00>
+16 26 -4 17 20] 121 dc
+[<3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701
+C01C0701C01C0701C01C070380380E0388380E0388380E0708380E0710701C0320300C01
+C0>
+32 18 -4 17 34] 109 dc
+[<0003F020001E0C60003002E000E003C001C001C0038001C0070000C00E0000801E0000
+801C0000803C0000803C000000780000007800000078000000F0000000F0000000F001FF
+C0F0001E00F0001C00F0001C00F0001C00F0001C00700038007000380038003800180078
+000C0090000707100001F80000>
+32 30 -6 28 32] 71 dc
+[<1E0300270700470700470700870E00870E000E0E000E0E001C1C001C1C001C1C001C1C
+003838803838801838801839001C5900078E00>
+24 18 -4 17 22] 117 dc
+[<3F00070007000E000E000E000E001C001C001C001C0039C03E60383038307038703870
+387038E070E070E070E060E0E0C0C0C1C0618063003C00>
+16 29 -5 28 19] 98 dc
+[<0006000E0006000000000000000000000000000000F001180218021804380438003800
+38007000700070007000E000E000E000E001C001C001C001C003800380C300E700CE0078
+00>
+16 36 1 27 13] 106 dc
+[<1E06270E470E4706870287020E020E021C041C041C041C0818083808181018200C4007
+80>
+16 18 -4 17 19] 118 dc
+[<0001FC000703000C03001C07001C0300180000380000380000380000380000700007FF
+FC00701C00701C00701C00E03800E03800E03800E03800E07001C07001C07001C07001C0
+E201C0E201C0E20380E4038064038038038000030000070000060000C60000E40000CC00
+00700000>
+24 37 1 28 23] 12 dc
+[<0003C0000670000C70001C60001C00001C0000380000380000380000380000380003FF
+8000700000700000700000700000700000E00000E00000E00000E00000E00001C00001C0
+0001C00001C00001C000038000038000038000030000030000070000C60000E60000CC00
+00780000>
+24 37 1 28 13] 102 dc
+[<1E01832703874703874703838707018707010E07010E07011C0E021C0E021C0E021C0E
+04180C04181C04181C081C1C100C263007C3C0>
+24 18 -4 17 28] 119 dc
+[<183878380808101020404080>
+8 12 -3 3 13] 44 dc
+[<0FC00001C00001C0000380000380000380000380000700000700000700000700000E0F
+000E11000E23800E43801C83001C80001D00001E00003F800039C00038E00038E00070E2
+0070E20070E20070E400E06400603800>
+24 29 -3 28 19] 107 dc
+[<00F3018F030F06070E0E0C0E1C0E1C0E381C381C381C381C383830383038187818F00F
+700070007000E000E0C0C0E1C0C3007E00>
+16 26 -3 17 19] 103 dc
+[<3078F060>
+8 4 -4 3 13] 46 dc
+cmtt10.300 sf
+[<7FFF00FFFF80FFFF80000000000000000000000000000000FFFF80FFFF807FFF00>
+24 11 -2 17 22] 61 dc
+[<01C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF8001C0
+0001C00001C00001C00001C00001C00001C00001C000>
+24 19 -2 21 22] 43 dc
+cmr10.300 sf
+[<7FFC70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FF
+F8>
+16 18 -1 17 18] 122 dc
+[<FFFFFFFFFF80>
+48 1 0 11 42] 124 dc
+6 @bop1
+cmbx10.300 sf
+866 552(Z)s
+cmsy10.300 sf
+907 552(\021)s
+62 602(f)s
+83 1100(g)s
+cmr7.300 sf
+0 1150(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+cmsl10.300 sf
+0 552(Example)s
+12(of)h
+14(an)h
+13(Ada)h
+14(exception)h
+15(handling)h
+12(blo)h
+1(c)h
+-1(k)h
+cmbx10.432 sf
+0 42(1.4)s
+24(What)h
+23(is)h
+22(an)h
+24(Exception?)h
+0 1947(1.5)s
+24(Exceptions)h
+22(as)h
+23(Activ)h
+-2(e)h
+21(Statuses)h
+cmti10.300 sf
+1094 178(r)s
+-2(aises)h
+266 1548(dynamic)s
+-2(al)h
+2(ly)h
+0 2208(Gr)s
+-2(adual)h
+2(ly)h
+21(these)h
+20(obje)h
+-2(ctives)h
+21(have)h
+21(b)h
+-2(e)h
+-2(en)h
+21(sacri\014c)h
+-2(e)h
+-2(d)h
+20(in)h
+21(favour)h
+21(of)h
+20(p)h
+-2(ower,)h
+21(supp)h
+-2(ose)h
+-2(d)h
+2(ly)h
+22(achieve)h
+-2(d)h
+21(by)h
+21(a)h
+21(plethor)h
+-2(a)h
+20(of)h
+0 2258(fe)s
+-2(atur)h
+-2(es)h
+16(and)h
+17(notational)h
+18(c)h
+-2(onventions,)h
+17(many)h
+18(of)h
+16(them)h
+17(unnc)h
+-2(essary)h
+17(and)h
+18(some)h
+17(of)h
+16(them,)h
+17(like)h
+16(exc)h
+-2(eption)h
+17(hand)h
+2(ling,)h
+0 2308(even)s
+15(danger)h
+-2(ous.)h
+1475 2433(actively)s
+934 2482(p)s
+-2(assively)h
+cmtt10.300 sf
+719 129(goto)s
+904 178(goto)s
+849(raise)h
+196 228(raise)s
+20(sloth)h
+15(exception;)h
+524 278(sloth)s
+15(exception)h
+83 652(declare)s
+148 702(n)s
+22(:)h
+22(integer)h
+20(:=)h
+21(2*x+y;)h
+83 751(begin)s
+148 801(sloth_action\(n\))s
+-1(;)h
+148 851(walrus_action\(n)s
+-1(*n\);)h
+83 901(exception)s
+148 951(when)s
+21(sloth_exceptio)h
+-1(n)h
+85(=>)h
+22(PUT\("The)h
+20(sloth)h
+86(exception)h
+20(went)h
+21(off."\);)h
+148 1000(when)s
+21(aardvark_excep)h
+-1(tion)h
+19(=>)h
+22(PUT\("The)h
+20(aardvark)h
+20(exception)h
+20(went)h
+21(off."\);)h
+83 1050(end)s
+731 1225(declare)s
+89(exception)h
+482 1274(exception)s
+87(end)h
+0 1324(sloth)s
+15(exception)h
+97(aardvark)h
+14(exception)h
+0 1374(sloth)s
+15(action)h
+63(walrus)h
+15(action)h
+842 1698(raise)s
+cmr10.300 sf
+0 129(An)s
+16(exception)h
+16(is)h
+16(essen)h
+-1(tially)h
+16(a)h
+15(non-lo)h
+1(cal)h
+118(to)h
+15(the)h
+17(nearest)h
+17(dynamicall)h
+-1(y)h
+14(enclosing)h
+15(target)h
+17(lab)h
+1(el)h
+15(in)h
+15(the)h
+17(stac)h
+-1(k)h
+0 178(of)s
+14(susp)h
+1(ended)h
+17(functions.)h
+21(T)h
+-3(o)h
+14(execute)h
+17(an)h
+14(exception)h
+104(,)h
+13(one)h
+132(the)h
+16(exception,)h
+15(for)h
+15(example)h
+13(with)h
+15(a)h
+0 228(statemen)s
+-1(t)h
+492(.)h
+24(Con)h
+-1(trol)h
+16(is)h
+17(then)h
+17(imm)h
+-1(ediately)h
+15(transferred)h
+18(to)h
+16(the)h
+18(nearest)h
+18(dynamicall)h
+-1(y)h
+0 278(enclosing)s
+14(handler)h
+14(\(lab)h
+1(el\))h
+13(for)h
+337(.)h
+0 353(In)s
+14(fact)h
+13(handlers)h
+15(are)h
+14(not)h
+13(simply)h
+12(lab)h
+1(els,)h
+13(but)h
+14(blo)h
+1(c)h
+-1(k-structured)h
+15(constructs)h
+16(that)h
+14(de\014ne)h
+14(an)h
+14(execution)h
+14(zone)h
+15(within)h
+0 403(whic)s
+-1(h)h
+14(the)h
+15(set)h
+15(of)h
+13(exceptions)h
+16(that)h
+14(they)h
+15(handle)h
+14(will)h
+12(b)h
+1(e)h
+15(caugh)h
+-1(t.)h
+19(F)h
+-3(or)h
+14(example,)h
+12(the)h
+15(follo)h
+-1(wi)h
+-1(ng)h
+12(exception)h
+15(handling)h
+0 452(anon)s
+-1(ymous)h
+12(blo)h
+1(c)h
+-1(k)h
+14(mig)h
+-1(h)h
+-1(t)h
+12(app)h
+1(ear)h
+15(in)h
+13(a)h
+14(program)h
+12(written)h
+14(in)h
+14(the)h
+14(Ada)h
+14(programm)h
+-1(ing)h
+11(language:)h
+821 552([5])s
+0 1225(In)s
+12(the)h
+13(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+12(example,)h
+10(the)h
+13(co)h
+1(de)h
+13(b)h
+1(et)h
+-1(w)h
+-1(een)h
+178(and)h
+220(is)h
+12(the)h
+13(co)h
+1(de)h
+13(within)h
+11(whic)h
+-1(h)h
+12(exceptions)h
+14(will)h
+10(b)h
+1(e)h
+0 1274(caugh)s
+-1(t.)h
+17(The)h
+11(co)h
+1(de)h
+12(b)h
+1(et)h
+-1(w)h
+-1(een)h
+219(and)h
+87(con)h
+-1(tains)h
+11(t)h
+-1(w)h
+-1(o)h
+10(exception)h
+12(handlers)h
+11(that)h
+11(will)h
+10(catc)h
+-1(h)h
+11(the)h
+12(exceptions)h
+337 1324(and)s
+419(should)h
+16(they)h
+16(b)h
+1(e)h
+17(raised)h
+17(b)h
+-1(y)h
+16(the)h
+17(execution)h
+17(of)h
+16(the)h
+17(declarations)h
+16(or)h
+269 1374(or)s
+293(.)h
+17(An)h
+-1(y)h
+14(other)h
+15(exception)h
+15(that)h
+14(is)h
+14(raised)h
+14(within)h
+13(the)h
+15(con)h
+-1(trolled)h
+14(zone)h
+14(will)h
+13(simply)h
+0 1424(propagate)s
+14(further)h
+15(up)h
+14(the)h
+14(call)h
+13(c)h
+-1(hain)h
+14(to)h
+13(the)h
+15(nearest)h
+15(handler)h
+14(that)h
+14(can)h
+14(handle)h
+14(it.)h
+0 1499(A)s
+11(most)h
+10(imp)h
+1(ortan)h
+-1(t)h
+10(asp)h
+1(ect)h
+12(of)h
+11(the)h
+11(exceptions)h
+13(pro)h
+-1(vided)h
+11(b)h
+-1(y)h
+11(Ada)h
+11(and)h
+11(this)h
+11(pac)h
+-1(k)h
+-2(age)h
+11(is)h
+11(that)h
+11(an)h
+11(exception)h
+12(propagates)h
+0 1548(to)s
+14(the)h
+15(nearest)h
+244(enclosing)h
+14(exception)h
+15(handler.)h
+19(This)h
+14(means)h
+13(that,)h
+14(apart)h
+14(from)h
+12(the)h
+15(shared)h
+15(kno)h
+-1(wledge)h
+0 1598(of)s
+14(the)h
+15(de\014nition)h
+15(of)h
+14(the)h
+15(exception,)h
+15(there)h
+16(is)h
+15(not)h
+15(necessarily)h
+16(an)h
+-1(y)h
+14(static)h
+15(relationship)h
+14(b)h
+1(et)h
+-1(w)h
+-1(een)h
+16(the)h
+15(function)h
+15(that)h
+0 1648(raises)s
+16(an)h
+15(exception)h
+16(and)h
+15(the)h
+16(function)h
+15(that)h
+15(catc)h
+-1(hes)h
+17(it.)h
+22(This)h
+15(mak)h
+-1(es)h
+14(exceptions)h
+17(b)h
+1(oth)h
+15(dangerous)h
+16(and)h
+15(p)h
+1(o)h
+-1(w)h
+-1(erful.)h
+0 1698(Dangerous)s
+15(b)h
+1(ecause)h
+16(a)h
+15(programm)h
+-1(er)h
+14(can)h
+15(co)h
+1(de)h
+15(a)h
+138(statemen)h
+-1(t)h
+15(with)h
+15(no)h
+14(kno)h
+-1(wledge)h
+15(of)h
+14(the)h
+15(function)h
+15(catc)h
+-1(hing)h
+0 1748(the)s
+12(exception.)h
+18(P)h
+-1(o)h
+-1(w)h
+-1(erful,)h
+11(b)h
+1(ecause)h
+13(this)h
+11(v)h
+-1(ery)h
+11(abstraction)h
+12(allo)h
+-1(ws)h
+10(pac)h
+-1(k)h
+-2(ages)h
+11(to)h
+11(raise)h
+12(exceptions)h
+12(that)h
+12(can)h
+11(b)h
+1(e)h
+12(caugh)h
+-1(t)h
+0 1797(b)s
+-1(y)h
+14(abstract)h
+14(clien)h
+-1(ts.)h
+0 2034(Ov)s
+-1(er)h
+11(the)h
+10(y)h
+-1(ears,)h
+11(exceptions)h
+11(ha)h
+-1(v)h
+-1(e)h
+10(receiv)h
+-1(ed)h
+11(a)h
+9(lot)h
+10(of)h
+9(bad)h
+10(press)h
+11(and)h
+10(ha)h
+-1(v)h
+-1(e)h
+9(generally)h
+10(b)h
+1(een)h
+11(considered)h
+11(to)h
+10(b)h
+1(e)h
+10(dangerous)h
+0 2084(things.)s
+29(F)h
+-3(or)h
+17(example,)h
+16(T)h
+-3(on)h
+-1(y)h
+17(Hoare,)h
+18(in)h
+17(his)h
+18(T)h
+-3(uring)h
+16(Aw)h
+-1(ard)h
+18(lecture)h
+18(of)h
+17(1980,)h
+17(when)h
+18(co)h
+-1(v)h
+-1(ering)h
+18(the)h
+18(programm)h
+-1(i)h
+-1(ng)h
+0 2134(language)s
+13(Ada,)h
+13(remark)h
+-1(ed:)h
+306 2308(|)s
+14(Charles)h
+14(An)h
+-1(ton)h
+-1(y)h
+14(Ric)h
+-1(hard)h
+13(Hoare,)h
+14(T)h
+-3(uring)h
+13(Aw)h
+-1(ard)h
+14(Sp)h
+1(eec)h
+-1(h,)h
+15(1980.)h
+0 2383(Certainly)s
+19(exceptions)h
+20(can)h
+19(b)h
+1(e)h
+20(dangerous)h
+19(things.)h
+34(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+20(I)h
+19(b)h
+1(eliev)h
+-1(e)h
+20(that,)h
+20(on)h
+19(balance,)h
+19(exceptions)h
+21(enhance)h
+0 2433(reliabilit)s
+-1(y)h
+9(rather)h
+11(than)h
+10(deteriorating)h
+11(it.)h
+16(The)h
+11(reason)h
+11(for)h
+10(this)h
+11(b)h
+1(elief)h
+10(is)h
+11(that)h
+10(exceptions)h
+158(indicate)h
+10(problems,)h
+0 2482(whereas)s
+15(their)h
+14(alternativ)h
+-1(e)h
+14(in)h
+14(this)h
+13(capacit)h
+-1(y)h
+-3(,)h
+13(statuses,)h
+185(indicate)h
+14(problems.)h
+0 2557(T)s
+-3(o)h
+13(see)h
+14(this,)h
+14(consider)h
+14(the)h
+14(simple)h
+12(example)h
+12(case)h
+15(of)h
+13(a)h
+13(function)h
+13(that)h
+13(is)h
+14(supp)h
+1(osed)h
+15(to)h
+13(write)h
+14(its)h
+13(argumen)h
+-1(t)h
+13(c)h
+-1(haracter)h
+0 2607(to)s
+16(its)h
+17(argumen)h
+-1(t)h
+15(device.)h
+26(This)h
+16(is)h
+17(a)h
+16(straigh)h
+-1(tforw)h
+-1(ard)h
+15(op)h
+1(eration,)h
+17(unless)h
+17(the)h
+17(device)h
+17(fails)h
+15(in)h
+16(some)h
+16(w)h
+-1(a)h
+-1(y)h
+-3(,)h
+15(in)h
+16(whic)h
+-1(h)h
+965 2770(6)s
+14 2 439 228 r
+14 2 637 278 r
+14 2 113 1324 r
+14 2 599 1324 r
+14 2 113 1374 r
+14 2 455 1374 r
+6 @eop
+7 @bop0
+cmti10.300 sf
+[<038207C20FEC08381008001000200040008001000200040008081008383067F043E081
+C0>
+16 18 -3 17 17] 122 dc
+cmsl10.300 sf
+[<FF3FCFE03C0F038038060300380E02001C0F02001C1704001C1704001C2708001C2308
+001C4310000E4390000E83A0000E83A0000F03C0000F01C0000E01800006018000040100
+00>
+32 18 -4 17 30] 119 dc
+cmtt10.300 sf
+[<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600000000060F0F060>
+8 25 -9 24 22] 33 dc
+[<183C3E1E0E0E0E1E1C3C78F060>
+8 13 -7 24 22] 39 dc
+[<C00000E00000E000007000007000003800003800001C00001C00000E00000E00000700
+0007000003800003800001C00001C00000E00000E000007000007000003800003800001C
+00001C00000E00000E00000700000700000380000380000180>
+24 32 -2 28 22] 92 dc
+7 @bop1
+cmbx10.300 sf
+789 191(Z)s
+881 614(Z)s
+1237 1038(Z)s
+869 1636(Z)s
+cmsy10.300 sf
+831 191(\021)s
+62 241(f)s
+83 390(g)s
+923 614(\021)s
+62 664(f)s
+83 814(g)s
+1280 1038(\021)s
+62 1088(f)s
+83 1187(g)s
+911 1636(\021)s
+62 1685(f)s
+83 1835(g)s
+cmti10.300 sf
+1262 1959(by)s
+15(default)h
+1005 2283(by)s
+17(default)h
+1217 2333(le)s
+-2(gitimizes)h
+cmr7.300 sf
+0 440(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+0 863(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+0 1237(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+0 1885(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+cmsl10.300 sf
+0 191(Example)s
+12(of)h
+14(a)h
+13(function)h
+14(returning)h
+14(a)h
+14(status)h
+0 614(Example)s
+12(of)h
+14(call)h
+13(to)h
+14(function)h
+13(returning)h
+15(a)h
+13(status)h
+0 1038(Example)s
+12(of)h
+14(call)h
+13(without)h
+13(c)h
+-1(hec)h
+-1(king)h
+14(to)h
+14(a)h
+14(function)h
+13(returning)h
+15(a)h
+13(status)h
+0 1636(Example)s
+12(of)h
+14(a)h
+13(function)h
+14(that)h
+14(uses)h
+15(an)h
+14(exception)h
+cmtt10.300 sf
+83 291(EXPORT)s
+21(bool)h
+21(writdev)h
+20(P_\(\(dev_t,ch)h
+-1(ar\)\);)h
+83 340(/*)s
+21(Returns)h
+21(TRUE)h
+21(upon)h
+21(success,)h
+20(FALSE)h
+21(if)h
+21(the)h
+21(write)h
+21(failed.)h
+20(*/)h
+83 714(if)s
+21(\(!writdev\(sloth)h
+-1(dev,)h
+-1('x'\)\))h
+127 764(bomb\("Sloth)s
+19(device)h
+21(failed)h
+20(-)h
+22(aborting.\\n")h
+-1(\);)h
+83 1137(writdev\(sloth)s
+-1(dev,')h
+-1(x'\);)h
+343 1536(writdev)s
+83 1735(EXPORT)s
+21(void)h
+21(writdev)h
+20(P_\(\(dev_t,ch)h
+-1(ar\)\);)h
+83 1785(/*)s
+21(Raises)h
+21(writedev_ex)h
+19(exception)h
+20(if)h
+22(the)h
+21(write)h
+21(fails.)h
+20(*/)h
+983 2109(main\(\))s
+cmr10.300 sf
+0 42(case)s
+16(this)h
+15(fact)h
+15(m)h
+-1(ust)h
+14(b)h
+1(e)h
+16(indicated)h
+15(to)h
+15(the)h
+15(caller.)h
+22(The)h
+15(traditional)h
+14(w)h
+-1(a)h
+-1(y)h
+14(of)h
+14(de\014ning)h
+15(suc)h
+-1(h)h
+16(a)h
+15(function)h
+15(is)h
+15(to)h
+14(ha)h
+-1(v)h
+-1(e)h
+15(it)h
+0 91(return)s
+15(a)h
+14(status)h
+14(indicating)h
+13(whether)h
+15(the)h
+15(call)h
+13(succeede)h
+1(d.)h
+744 191([6])s
+0 515(This)s
+14(results)h
+15(in)h
+13(calling)h
+13(co)h
+1(de)h
+14(that)h
+14(should)h
+14(lo)h
+1(ok)h
+13(something)h
+13(lik)h
+-1(e)h
+13(this:)h
+836 614([7])s
+0 938(but)s
+14(often)h
+14(lo)h
+1(oks)h
+13(lik)h
+-1(e)h
+13(this:)h
+1192 1038([8])s
+0 1312(Co)s
+1(de)h
+17(suc)h
+-1(h)h
+18(as)h
+17(this)h
+17(is)h
+17(extremely)h
+16(dangerous)h
+18(b)h
+1(ecause)h
+18(a)h
+17(program)h
+15(written)h
+18(in)h
+16(this)h
+17(w)h
+-1(a)h
+-1(y)h
+16(migh)h
+-1(t)h
+15(op)h
+1(erate)h
+18(correctly)h
+0 1362(for)s
+16(y)h
+-1(ears,)h
+17(but)h
+17(then)h
+17(suddenly)h
+17(start)h
+17(b)h
+1(eha)h
+-1(ving)h
+16(in)h
+16(o)h
+1(dd)h
+17(w)h
+-1(a)h
+-1(ys)h
+16(when)h
+17(undetected)h
+19(errors)h
+17(o)h
+1(ccur.)h
+27(Unfortunately)h
+-3(,)h
+16(it)h
+0 1411(is)s
+16(extremely)h
+16(easy)h
+16(to)h
+16(write)h
+17(co)h
+1(de)h
+16(suc)h
+-1(h)h
+17(as)h
+16(this,)h
+17(as)h
+16(is)h
+16(easy)h
+16(to)h
+16(forget)h
+16(that)h
+16(a)h
+16(particular)h
+16(function)h
+16(ev)h
+-1(en)h
+17(returns)h
+17(a)h
+0 1461(status!)s
+19(Co)h
+1(de)h
+14(suc)h
+-1(h)h
+15(as)h
+14(this)h
+14(is)h
+13(quite)h
+14(commo)h
+-1(n.)h
+0 1536(No)s
+-1(w)h
+14(consider)h
+14(ho)h
+-1(w)h
+180(lo)h
+1(oks)h
+14(if)h
+13(it)h
+13(is)h
+14(de\014ned)h
+15(using)h
+13(an)h
+14(exception)h
+15(to)h
+13(tak)h
+-1(e)h
+14(care)h
+15(of)h
+13(the)h
+15(error)h
+15(case:)h
+824 1636([9])s
+0 1959(By)s
+14(casting)h
+14(the)h
+15(error)h
+14(condition)h
+14(in)h
+13(terms)h
+14(of)h
+13(an)h
+14(exception,)h
+14(the)h
+14(function)h
+203(ensures)h
+16(that)h
+14(something)h
+12(will)h
+0 2009(happ)s
+1(en)h
+15(if)h
+14(an)h
+15(error)h
+15(arises.)h
+21(In)h
+15(fact,)h
+14(one)h
+15(of)h
+14(t)h
+-1(w)h
+-1(o)h
+15(things)h
+14(m)h
+-1(ust)h
+14(happ)h
+1(en)h
+15(if)h
+14(the)h
+15(exception)h
+16(is)h
+14(ev)h
+-1(er)h
+16(raised:)h
+20(either)h
+15(the)h
+0 2059(programm)s
+-1(er)h
+16(co)h
+1(des)h
+18(a)h
+17(catc)h
+-1(her)h
+18(for)h
+17(the)h
+18(exception)h
+18(and)h
+17(deals)h
+17(with)h
+17(it)h
+16(\(in)h
+17(whic)h
+-1(h)h
+17(case,)h
+19(it)h
+16(will)h
+16(probably)h
+16(b)h
+1(e)h
+18(dealt)h
+0 2109(with)s
+14(prop)h
+1(erly\))h
+16(or)h
+14(the)h
+15(exception)h
+16(propagates)h
+15(up)h
+15(out)h
+14(of)h
+160(where)h
+16(it)h
+14(will)h
+13(cause)h
+16(the)h
+15(exceptions)h
+16(pac)h
+-1(k)h
+-2(age)h
+14(to)h
+0 2159(initiate)s
+15(a)h
+15(con)h
+-1(trolled)h
+16(program)h
+14(b)h
+1(om)h
+-1(b)h
+15(describing)h
+16(the)h
+16(unhandled)h
+16(exception.)h
+25(Both)h
+16(of)h
+15(these)h
+17(alternativ)h
+-1(es)h
+16(ensure)h
+0 2208(that)s
+14(the)h
+14(condition)h
+14(is)h
+13(explicitly)h
+13(handled)h
+14(whic)h
+-1(h)h
+14(is)h
+14(the)h
+14(imp)h
+1(ortan)h
+-1(t)h
+12(thing.)h
+0 2283(By)s
+16(using)h
+15(exceptions,)h
+17(the)h
+17(programm)h
+-1(er)h
+14(can)h
+16(ensure)h
+17(that)h
+209(an)h
+-1(y)h
+15(error)h
+16(condition)h
+15(that)h
+16(arises)h
+17(will)h
+14(cause)h
+0 2333(a)s
+14(program)h
+14(b)h
+1(om)h
+-1(b.)h
+19(This)h
+14(is)h
+15(suc)h
+-1(h)h
+16(a)h
+14(strong)h
+15(safet)h
+-1(y)h
+15(net)h
+15(that)h
+15(it)h
+15(actually)h
+214(the)h
+15(no-error)h
+16(c)h
+-1(hec)h
+-1(king)h
+15(st)h
+-1(yle)h
+15(of)h
+0 2383(programm)s
+-1(ing)h
+12(so)h
+14(criticized)h
+15(earlier.)h
+19(If)h
+14(y)h
+-1(ou)h
+14(are)h
+14(in)h
+14(a)h
+14(h)h
+-1(urry)h
+15(to)h
+14(write)h
+14(a)h
+14(program)h
+13(and)h
+14(do)h
+14(not)h
+14(wish)h
+14(to)h
+14(b)h
+1(other)h
+15(with)h
+0 2433(error)s
+18(c)h
+-1(hec)h
+-1(king,)h
+18(the)h
+18(use)h
+18(of)h
+17(functions)h
+17(that)h
+17(raise)h
+18(exceptions)h
+18(up)h
+1(on)h
+18(errors)h
+18(ensures)h
+20(that)h
+17(if)h
+16(the)h
+18(co)h
+1(de)h
+18(terminates)h
+0 2482(normall)s
+-1(y)h
+-3(,)h
+15(then)h
+17(it)h
+17(has)h
+16(terminated)h
+17(error-free)h
+18(|)h
+16(ev)h
+-1(en)h
+17(though)h
+17(the)h
+17(programm)h
+-1(er)h
+16(did)h
+16(not)h
+17(co)h
+1(de)h
+17(an)h
+-1(y)h
+17(c)h
+-1(hec)h
+-1(king)h
+17(of)h
+0 2532(return)s
+15(conditions.)h
+0 2607(Another)s
+14(adv)h
+-2(an)h
+-1(tage)h
+12(of)h
+12(exceptions)h
+14(is)h
+12(that)h
+13(they)h
+13(allo)h
+-1(w)h
+12(whole)h
+12(classes)h
+14(of)h
+12(errors)h
+14(that)h
+13(migh)h
+-1(t)h
+11(arise)h
+13(in)h
+12(a)h
+13(span)h
+13(of)h
+12(co)h
+1(de)h
+0 2657(to)s
+14(b)h
+1(e)h
+14(handled)h
+14(at)h
+14(one)h
+14(p)h
+1(oin)h
+-1(t.)h
+17(F)h
+-3(or)h
+14(example:)h
+965 2770(7)s
+7 @eop
+8 @bop0
+cmbx10.432 sf
+[<0007F000003FFC0000FFFF0001FC0F0007F01F800FE03F800FC03F801FC03F803F803F
+803F801F007F8000007F0000007F0000007F000000FF000000FF0FC000FF3FF800FF70FE
+00FFE03F00FFC03F80FF801FC0FF801FC0FF801FC0FF001FE0FF001FE0FF001FE0FF001F
+E07F001FE07F001FE07F001FE07F001FE03F801FC03F801FC01F803F800FC03F8007E0FF
+0003FFFC0000FFF000003FC000>
+32 39 -3 38 34] 54 dc
+[<FFFE7FFC0FFEFFFE7FFC0FFEFFFE7FFC0FFE0FE007E000E007F003F001C007F003F001
+C007F807F803C003F807F8038003F807F8038001FC0EFC070001FC0EFC070001FE1EFC0F
+0000FE1C7E0E0000FE1C7E0E0000FF383F1E00007F383F1C00007F783F3C00003FF01FB8
+00003FF01FB800003FF01FF800001FE00FF000001FE00FF000000FC007E000000FC007E0
+00000FC007E00000078003C00000078003C000>
+48 27 -1 26 50] 119 dc
+[<FFFFF001FFFCFFFFF001FFFCFFFFF001FFFC03FC0000070003FC0000070003FC000007
+0003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC000007
+0003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC000007
+0003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC000007
+0003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC000007
+0003FC00000F0001FC00000E0001FE00000E0000FE00001E0000FF00003C00007F800078
+00003FC000F800001FF007E0000007FFFFC0000001FFFF000000001FF80000>
+48 41 -3 40 53] 85 dc
+[<7FFFFFFFFFC07FFFFFFFFFC07FFFFFFFFFC07F803FC03FC07E003FC007C078003FC003
+C078003FC003C070003FC001C0F0003FC001E0F0003FC001E0E0003FC000E0E0003FC000
+E0E0003FC000E0E0003FC000E0E0003FC000E000003FC0000000003FC0000000003FC000
+0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000
+0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000
+0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000
+0000003FC00000007FFFFFE000007FFFFFE000007FFFFFE000>
+48 40 -2 39 48] 84 dc
+[<FFFFFFF800FFFFFFFF00FFFFFFFFC003FC003FE003FC000FF003FC0007F803FC0007FC
+03FC0003FC03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03
+FC0003FE03FC0003FC03FC0007FC03FC0007F803FC000FF003FC003FE003FFFFFF8003FF
+FFFE0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00
+000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
+0003FC00000003FC000000FFFFF00000FFFFF00000FFFFF00000>
+40 41 -3 40 47] 80 dc
+[<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE000000FE000
+000FE000000FE000000FE000000FE000000FE000000FE000000FE01FFC0FE01FFC0FE01F
+FC0FE007C00FE00F800FE01E000FE07C000FE0F8000FE1F0000FE3E0000FE7C0000FEFE0
+000FFFF0000FFFF0000FFFF8000FF3FC000FE1FE000FC0FE000FC0FF000FC07F800FC03F
+800FC03FC00FC01FE00FC00FF0FFFC3FFEFFFC3FFEFFFC3FFE>
+32 42 -2 41 36] 107 dc
+cmsl10.300 sf
+[<7FF0FFE0>
+16 2 -1 9 14] 45 dc
+cmti10.300 sf
+[<000F8400304C00403C0080180100180300180300180600100600100600000700000700
+0003E00003FC0001FF00007F800007C00001C00001C00000C00000C02000C02000C06001
+80600180600300600200F00400CC180083E000>
+24 30 -3 28 23] 83 dc
+[<060F0F06000000000000000000003078F060>
+8 18 -4 17 13] 58 dc
+[<1FFFFFC01C0701C0300E00C0200E0080600E0080400E0080401C0080801C0080801C00
+80001C000000380000003800000038000000380000007000000070000000700000007000
+0000E0000000E0000000E0000000E0000001C0000001C0000001C0000001C0000003C000
+007FFE0000>
+32 28 -7 27 30] 84 dc
+[<01FFFFE0003C00E0003800600038004000380040003800400070004000700040007020
+400070200000E0400000E0400000E0C00000FFC00001C0800001C0800001C0800001C080
+0003810100038001000380020003800200070004000700040007000C00070018000E0078
+00FFFFF000>
+32 28 -3 27 28] 69 dc
+[<01FFFC00003C070000380380003801C0003801C0003801C0007003C0007003C0007003
+C00070038000E0078000E0070000E00E0000E0380001FFE00001C0000001C0000001C000
+0003800000038000000380000003800000070000000700000007000000070000000F0000
+00FFE00000>
+32 28 -3 27 28] 80 dc
+[<00020006000C001C007C039C0038003800380038007000700070007000E000E000E000
+E001C001C001C001C003800380038003800780FFF0>
+16 28 -4 27 21] 49 dc
+[<01FFFE00003C0780003801C0003801C0003800E0003800E0007000F000700070007000
+70007000F000E000F000E000F000E000F000E000F001C001E001C001E001C001E001C001
+C0038003C003800380038007800380070007000E0007001C0007003800070070000E01C0
+00FFFF0000>
+32 28 -3 27 31] 68 dc
+cmtt10.300 sf
+[<03E30007FF001FFF003E1F003C0F00780F00780700700700F00000E00000E00000E000
+00E00000E03F80E07FC0E03F80F00700700700780F00780F003C0F003E1F001FFF0007FF
+0003E700>
+24 25 -2 24 22] 71 dc
+[<FFF0FFF0FFF0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
+00E000E000E000E000E000E000E000E000E000E000E000FFF0FFF0FFF0>
+16 32 -8 28 22] 91 dc
+[<FFF0FFF0FFF00070007000700070007000700070007000700070007000700070007000
+7000700070007000700070007000700070007000700070FFF0FFF0FFF0>
+16 32 -1 28 22] 93 dc
+[<001F80007F8001FF8001E00001C00001C00001C00001C00001C00001C00001C00001C0
+0001C00003C0007F8000FF0000FF00007F800003C00001C00001C00001C00001C00001C0
+0001C00001C00001C00001C00001E00001FF80007F80001F80>
+24 32 -2 28 22] 123 dc
+[<FC0000FF0000FFC00003C00001C00001C00001C00001C00001C00001C00001C00001C0
+0001C00001E00000FF00007F80007F8000FF0001E00001C00001C00001C00001C00001C0
+0001C00001C00001C00001C00003C000FFC000FF0000FC0000>
+24 32 -2 28 22] 125 dc
+8 @bop1
+cmbx10.300 sf
+772 42(Z)s
+595 2345(Z)s
+cmsy10.300 sf
+813 42(\021)s
+62 91(f)s
+215 1137(g)s
+636 2345(\021)s
+62 2395(f)s
+83 2495(g)s
+cmbx10.432 sf
+0 1885(1.6)s
+24(Ho)h
+-2(w)h
+23(to)h
+23(Use)h
+22(This)h
+22(P)h
+-2(ac)h
+-2(k)h
+-4(age)h
+cmr7.300 sf
+0 1187(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+0 2545(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+cmsl10.300 sf
+0 42(Example)s
+12(of)h
+14(single-p)h
+1(oin)h
+-1(t)h
+13(error)h
+14(handling)h
+0 2345(Example)s
+12(exception)h
+15(de\014nition)h
+cmti10.300 sf
+0 1486(Summary:)s
+1814 1536(actively)s
+1102 1586(something)s
+1450 1636(active)s
+13(statuses)h
+0 2046(STEP)s
+17(1:)h
+22(De\014ne)h
+18(the)h
+16(exc)h
+-2(eption.)h
+486 2619(exc)s
+-2(eption)h
+19(identi\014er)h
+621(exc)h
+-2(eption)h
+19(description)h
+cmtt10.300 sf
+83 141(EX_BEGIN)s
+148 191(f_file_t)s
+21(file1,)h
+20(file2;)h
+148 241(char)s
+21(line[1000];)h
+148 291(f_open\(file1,re)s
+-1(ad,")h
+-1(sloth)h
+-1(.dat")h
+-1(\);)h
+148 340(f_open\(file2,wr)s
+-1(ite,)h
+-1("walr)h
+-1(us.da)h
+-1(t"\);)h
+148 390(while)s
+21(\(!f_eof\(file1)h
+-1(\)\))h
+192 440({)s
+214 490(f_readline)s
+20(\(file1,lin)h
+-1(e,100)h
+-1(0\);)h
+214 540(f_writeline\()s
+-1(file)h
+-1(2,lin)h
+-1(e,100)h
+-1(0\);)h
+192 589(})s
+148 639(fclose\(file1\);)s
+148 689(fclose\(file2\);)s
+83 739(EX_FORGET)s
+148 789(EX_WHEN\(f_open_)s
+-1(ex)h
+20(\))h
+21(goto)h
+21(f_handle;)h
+148 839(EX_WHEN\(f_read_)s
+-1(ex)h
+20(\))h
+21(goto)h
+21(f_handle;)h
+148 888(EX_WHEN\(f_write)s
+-1(_ex\))h
+19(goto)h
+21(f_handle;)h
+148 938(EX_WHEN\(f_close)s
+-1(_ex\))h
+148 988(f_handle:)s
+214 1038(f_delete\(fil)s
+-1(e2\);)h
+214 1088(printf\("Erro)s
+-1(r)h
+20(performing)h
+20(copy."\);)h
+83 1137(EX_END)s
+473 2246(EX)s
+16(LOCAL)h
+83 2445(EX_LOCAL\(buf_)s
+-1(full,)h
+-1("buf)h
+-1(_full)h
+-1(:)h
+20(Buffer)h
+21(is)h
+21(full)h
+21(exception."\))h
+-1(;)h
+0 2669(EX)s
+15(LOCAL)h
+1334(buf)h
+15(full)h
+cmr10.300 sf
+707 42([10])s
+0 1262(In)s
+13(the)h
+14(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+12(co)h
+1(de,)h
+14(a)h
+12(single)h
+13(exception)h
+14(handler)h
+13(handles)h
+13(all)h
+12(the)h
+13(error)h
+14(conditions)h
+13(that)h
+13(migh)h
+-1(t)h
+11(arise)h
+13(during)h
+13(all)h
+11(the)h
+0 1312(\014le)s
+13(op)h
+1(erations.)h
+18(The)h
+14(resultan)h
+-1(t)h
+14(co)h
+1(de)h
+14(is)h
+13(far)h
+13(cleaner)h
+14(than)h
+13(the)h
+14(co)h
+1(de)h
+14(that)h
+14(w)h
+-1(ould)h
+12(b)h
+1(e)h
+14(necessary)h
+15(if)h
+13(the)h
+14(status)h
+14(of)h
+12(eac)h
+-1(h)h
+0 1362(call)s
+14(had)h
+15(to)h
+15(b)h
+1(e)h
+16(c)h
+-1(hec)h
+-1(k)h
+-1(ed)h
+17(indep)h
+1(enden)h
+-1(tly)h
+-3(.)h
+22(Using)h
+15(exceptions,)h
+16(the)h
+16(normal)h
+13(and)h
+15(the)h
+16(exceptional)h
+15(cases)h
+16(can)h
+16(eac)h
+-1(h)h
+15(b)h
+1(e)h
+0 1411(expressed)s
+16(clearly)h
+-3(.)h
+215 1486(There)s
+21(is)h
+19(no)h
+20(doubt)h
+19(that,)h
+21(when)h
+20(misused,)h
+20(exceptions)h
+21(can)h
+20(b)h
+1(e)h
+20(an)h
+19(extremely)h
+20(dangerous)h
+20(language)h
+0 1536(construct.)s
+19(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(they)h
+13(also)h
+13(ha)h
+-1(v)h
+-1(e)h
+13(the)h
+14(outstanding)h
+13(qualit)h
+-1(y)h
+11(of)h
+13(enabling)h
+12(functions)h
+13(to)h
+14(b)h
+1(e)h
+13(written)h
+14(that)h
+0 1586(indicate)s
+12(errors,)h
+12(th)h
+-1(us)h
+12(ensuring)h
+13(either)h
+12(that)h
+12(the)h
+12(clien)h
+-1(t)h
+11(co)h
+1(de)h
+13(do)h
+1(es)h
+205(ab)h
+1(out)h
+11(the)h
+13(error,)h
+12(or)h
+12(that)h
+11(the)h
+13(program)h
+0 1636(will)s
+11(b)h
+1(om)h
+-1(b)h
+10(with)h
+12(an)h
+12(unhandled)h
+12(exception)h
+13(error.)h
+18(In)h
+13(this)h
+12(capacit)h
+-1(y)h
+12(exceptions)h
+13(act)h
+12(as)h
+272(.)h
+17(In)h
+13(addition,)h
+0 1685(exceptions)s
+13(allo)h
+-1(w)h
+11(error)h
+13(handling)h
+11(to)h
+12(b)h
+1(e)h
+13(separated)h
+13(from)h
+11(ordinary)h
+11(execution.)h
+18(These)h
+14(t)h
+-1(w)h
+-1(o)h
+12(prop)h
+1(erties)h
+13(of)h
+12(exceptions)h
+0 1735(mean)s
+13(that,)h
+13(in)h
+14(m)h
+-1(y)h
+12(opinion,)h
+12(they)h
+14(impro)h
+-1(v)h
+-1(e)h
+12(reliabilit)h
+-1(y)h
+12(on)h
+14(balance,)h
+13(and)h
+14(are)h
+14(a)h
+14(w)h
+-1(orth)h
+-1(y)h
+14(programm)h
+-1(i)h
+-1(ng)h
+12(to)h
+1(ol.)h
+0 1972(Using)s
+14(this)h
+14(pac)h
+-1(k)h
+-2(age)h
+13(is)h
+14(easy)h
+14(-)h
+14(just)h
+14(follo)h
+-1(w)h
+12(the)h
+14(follo)h
+-1(wing)h
+12(steps!)h
+589 2046(Before)s
+16(raising)h
+15(or)h
+16(catc)h
+-1(hing)h
+16(an)h
+15(exception,)h
+16(y)h
+-1(ou)h
+16(ha)h
+-1(v)h
+-1(e)h
+15(to)h
+16(de\014ne)h
+16(it)h
+16(and)h
+15(mak)h
+-1(e)h
+14(it)h
+0 2096(visible)s
+15(to)h
+15(ev)h
+-1(ery)h
+16(en)h
+-1(tit)h
+-1(y)h
+15(that)h
+16(needs)h
+17(to)h
+15(refer)h
+16(to)h
+16(the)h
+16(exception.)h
+23(T)h
+-3(o)h
+15(de\014ne)h
+16(it,)h
+15(y)h
+-1(ou)h
+15(need)h
+16(to)h
+16(think)h
+15(of)h
+14(an)h
+16(iden)h
+-1(ti\014er)h
+0 2146(that)s
+14(will)h
+13(b)h
+1(e)h
+15(used)h
+15(to)h
+14(represen)h
+-1(t)h
+17(the)h
+14(exception,)h
+15(and)h
+14(y)h
+-1(ou)h
+14(need)h
+15(to)h
+14(think)h
+14(of)h
+14(a)h
+14(short)h
+14(\(one-line\))h
+15(description)h
+14(for)h
+14(the)h
+0 2196(exception.)s
+25(Ha)h
+-1(ving)h
+14(done)h
+16(this,)h
+16(if)h
+15(y)h
+-1(ou)h
+16(w)h
+-1(an)h
+-1(t)h
+15(the)h
+17(exception)h
+16(to)h
+16(b)h
+1(e)h
+16(visible)h
+15(only)h
+15(within)h
+15(the)h
+17(curren)h
+-1(t)h
+17(program)h
+14(\014le,)h
+0 2246(insert)s
+15(a)h
+13(call)h
+13(to)h
+14(the)h
+15(macro)h
+194(in)h
+14(the)h
+14(v)h
+-2(ariable)h
+13(section.)h
+19(F)h
+-3(or)h
+13(example:)h
+529 2345([11])s
+0 2619(The)s
+18(\014rst)h
+17(argumen)h
+-1(t)h
+16(is)h
+17(the)h
+383(and)h
+17(the)h
+17(second)h
+19(argumen)h
+-1(t)h
+16(is)h
+17(the)h
+401(.)h
+28(The)h
+189 2669(macro)s
+19(translates)h
+21(in)h
+-1(to)h
+20(a)h
+20(string)h
+20(constan)h
+-1(t)h
+21(declaration)h
+20(ha)h
+-1(ving)h
+20(the)h
+21(name)h
+207(and)h
+21(the)h
+21(v)h
+-2(alue)h
+965 2770(8)s
+14 2 520 2246 r
+14 2 47 2669 r
+14 2 1572 2669 r
+8 @eop
+9 @bop0
+cmti10.300 sf
+[<003C0000C3000101800201800201C00441C00441C00841C00841C00841C01083801083
+801107000E0600000C0000180000300000C0000100000600000800001001001002002002
+004006007E0C00C7F80083F80080E000>
+24 29 -4 27 21] 50 dc
+[<01FFF800003C0E00003807000038038000380380003803800070078000700780007007
+8000700F0000E00E0000E01C0000E0700000FFC00001C0C00001C0600001C0700001C070
+00038070000380700003807000038070000700F0000700F0400700F0400700F0800F0078
+80FFE0790000001E00>
+32 29 -3 27 30] 82 dc
+[<003E0000C1800101800200C00400C00440C00841C00841C00841C00883800703800007
+00000E0001F800003800000C00000C00000E00000E00000E00000E00700E00E01C00801C
+0080380080300040600021C0001F0000>
+24 29 -4 27 21] 51 dc
+[<0003F020001E0C60003002E000E003C001C001C0038001C0070000C00E0000801E0000
+801C0000803C0000803C000000780000007800000078000000F0000000F0000000F00000
+00F0000000F0000400F0000400F0000400F0000800700008007000100038002000180040
+000C0180000706000001F80000>
+32 30 -6 28 30] 67 dc
+cmsl10.300 sf
+[<0FF0FE03C03801C03001C02001C06001C04001E08000E08000E10000E10000E2000072
+00007400007C00007800007000003000002000002000004000004000708000F10000F100
+00E60000780000>
+24 26 0 17 22] 121 dc
+9 @bop1
+cmbx10.300 sf
+625 465(Z)s
+648 988(Z)s
+493 1885(Z)s
+cmsy10.300 sf
+666 465(\021)s
+62 515(f)s
+83 614(g)s
+691 988(\021)s
+62 1038(f)s
+83 1237(g)s
+534 1885(\021)s
+62 1934(f)s
+83 2482(g)s
+cmti10.300 sf
+0 739(STEP)s
+14(2:)h
+18(R)h
+-2(aise)h
+14(the)h
+13(exc)h
+-2(eption.)h
+0 1636(STEP)s
+11(3:)h
+17(Catch)h
+11(the)h
+11(exc)h
+-2(eption.)h
+1783 1685(exc)s
+-2(eption)h
+0 1735(blo)s
+-2(ck)h
+cmr7.300 sf
+0 664(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+0 1287(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+0 2532(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+cmsl10.300 sf
+0 465(Example)s
+12(exception)h
+15(declaration)h
+0 988(Example)s
+12(of)h
+14(raising)h
+13(an)h
+13(exception)h
+0 1885(Exception)s
+14(blo)h
+1(c)h
+-1(k)h
+14(syn)h
+-1(tax)h
+cmtt10.300 sf
+0 42("buf)s
+15(full:)h
+42(Buff...")h
+1664 266(EX)s
+16(LOCAL)h
+97 315(EX)s
+15(EXPORT)h
+384(EX)h
+15(EXCEPT)h
+654(EX)h
+15(EXCEPT)h
+83 565(EX_EXCEPT\(buf)s
+-1(_full)h
+-1(\);)h
+583 789(.c)s
+258(EX)h
+15(LOCAL)h
+70(EX)h
+15(EXPORT)h
+192(.c)h
+467 839(EX)s
+15(EXCEPT)h
+342(EX)h
+15(RAISE)h
+138(EX)h
+15(RAISE)h
+83 1088(/*)s
+21(If)h
+22(the)h
+21(buffer)h
+21(is)h
+21(full,)h
+21(raise)h
+20(the)h
+22(full)h
+21(buffer)h
+20(exception.)h
+20(*/)h
+83 1137(if)s
+21(\(bufsiz)h
+21(>)h
+21(BUF_MAX\))h
+148 1187(EX_RAISE\(buf_fu)s
+-1(l\);)h
+380 1362(EX)s
+16(RAISE)h
+919 1461(buf)s
+15(ful)h
+586 1735(EX)s
+171(EX)h
+15(BEGIN)h
+25(EX)h
+15(FORGET)h
+25(EX)h
+15(WHEN)h
+95(EX)h
+15(END)h
+83 1984(EX_BEGIN)s
+148 2034(<Code)s
+21(that)h
+21(might)h
+21(raise)h
+21(an)h
+21(exception>)h
+83 2084(EX_FORGET)s
+148 2134(EX_WHEN\(<name)s
+20(of)h
+21(exception)h
+20(1>\))h
+214 2183(<Code)s
+21(to)h
+21(handle)h
+20(exception)h
+20(1>)h
+148 2233(EX_WHEN\(<name)s
+20(of)h
+21(exception)h
+20(2>\))h
+214 2283(<Code)s
+21(to)h
+21(handle)h
+20(exception)h
+20(2>)h
+148 2333(EX_WHEN\(<name)s
+20(of)h
+21(exception)h
+20(3>\))h
+214 2383(<Code)s
+21(to)h
+21(handle)h
+20(exception)h
+20(3>)h
+83 2433(EX_END)s
+478 2607(EX)s
+16(BEGIN)h
+71(EX)h
+15(END)h
+1035({})h
+cmr10.300 sf
+431 42(.)s
+32(It)h
+19(is)h
+19(imp)h
+1(ortan)h
+-1(t)h
+17(that)h
+19(the)h
+19(exception)h
+20(iden)h
+-1(tifer)h
+19(b)h
+1(e)h
+19(unique)h
+19(within)h
+19(its)h
+18(scop)h
+1(e)h
+21(as)h
+19(it)h
+18(is)h
+0 91(implem)s
+-1(en)h
+-1(ted)h
+16(b)h
+-1(y)h
+17(an)h
+17(ordinary)h
+17(constan)h
+-1(t.)h
+28(It)h
+17(is)h
+18(also)h
+16(v)h
+-1(ery)h
+18(imp)h
+1(ortan)h
+-1(t)h
+15(that)h
+17(the)h
+18(description)h
+18(of)h
+17(the)h
+17(exception)h
+18(b)h
+1(e)h
+0 141(unique)s
+9(within)h
+9(the)h
+10(set)h
+10(of)h
+9(exceptions)h
+10(in)h
+9(the)h
+10(program.)h
+15(If)h
+9(eac)h
+-1(h)h
+10(exception)h
+10(has)h
+9(a)h
+9(unique)h
+10(description,)h
+10(then)h
+10(unhandled)h
+0 191(exceptions)s
+15(\(see)h
+15(later\))h
+14(can)h
+14(b)h
+1(e)h
+15(easily)h
+13(iden)h
+-1(ti\014ed.)h
+0 266(If)s
+13(y)h
+-1(ou)h
+14(w)h
+-1(an)h
+-1(t)h
+13(the)h
+15(exception)h
+14(to)h
+14(b)h
+1(e)h
+14(visible)h
+13(within)h
+13(all)h
+13(clien)h
+-1(ts)h
+14(of)h
+13(the)h
+15(mo)h
+1(dule)h
+12(declaring)h
+14(it,)h
+13(replace)h
+196(ab)h
+1(o)h
+-1(v)h
+-1(e)h
+0 315(with)s
+222(and)h
+16(insert)h
+17(a)h
+16(call)h
+15(to)h
+222(in)h
+16(the)h
+17(header)h
+17(\014le)h
+16(for)h
+16(the)h
+17(mo)h
+1(dule.)h
+229(requires)h
+18(just)h
+0 365(the)s
+14(v)h
+-2(ariable)h
+13(name.)h
+559 465([12])s
+551 739(Ha)s
+-1(ving)h
+12(completed)h
+11(step)h
+14(1,)h
+12(y)h
+-1(ou)h
+11(can)h
+13(no)h
+-1(w)h
+12(raise)h
+12(the)h
+13(exception)h
+13(in)h
+12(an)h
+-1(y)h
+12(mo)h
+1(dule)h
+11(that)h
+0 789(can)s
+17(see)h
+18(the)h
+17(exception)h
+18(\(i.e.)h
+26(the)h
+78(\014le)h
+17(with)h
+17(the)h
+202(or)h
+208(,)h
+15(and)h
+17(an)h
+-1(y)h
+76(\014le)h
+17(that)h
+17(includes)h
+17(the)h
+0 839(header)s
+13(\014le)h
+12(con)h
+-1(taining)h
+11(the)h
+204(\))h
+11(simply)h
+10(b)h
+1(e)h
+12(calling)h
+180(.)h
+11(Note:)h
+197(is)h
+12(syn)h
+-1(tactically)h
+12(equiv)h
+-2(alen)h
+-1(t)h
+0 888(to)s
+14(a)h
+13(comp)h
+1(ound)h
+13(statemen)h
+-1(t.)h
+582 988([13])s
+0 1362(The)s
+10(e\013ect)h
+12(of)h
+10(a)h
+9(call)h
+10(to)h
+188(is)h
+10(that)h
+10(con)h
+-1(trol)h
+9(will)h
+9(lea)h
+-1(v)h
+-1(e)h
+10(the)h
+10(curren)h
+-1(t)h
+12(function,)h
+10(and)h
+10(the)h
+10(stac)h
+-1(k)h
+11(will)h
+8(un)h
+-1(wind)h
+10(un)h
+-1(til)h
+9(a)h
+0 1411(function)s
+11(is)h
+12(encoun)h
+-1(tered)h
+14(whose)h
+12(con)h
+-1(text)h
+12(con)h
+-1(tains)h
+12(an)h
+11(activ)h
+-1(e)h
+12(exception)h
+13(handler)h
+12(construct)h
+13(that)h
+12(sp)h
+1(eci\014es)h
+13(a)h
+12(catc)h
+-1(her)h
+0 1461(for)s
+12(the)h
+13(exception)h
+13(that)h
+12(has)h
+12(b)h
+1(een)h
+13(raised)h
+13(\(in)h
+12(this)h
+12(case)h
+160(.)h
+17(If)h
+12(no)h
+12(suc)h
+-1(h)h
+13(handler)h
+12(exists,)h
+13(the)h
+12(exception)h
+13(pac)h
+-1(k)h
+-2(age)h
+0 1511(will)s
+13(b)h
+1(om)h
+-1(b)h
+12(the)h
+15(program,)h
+12(prin)h
+-1(ting)h
+13(out)h
+14(an)h
+14(error)h
+15(message)h
+14(stating)h
+13(that)h
+15(an)h
+13(exception)h
+15(has)h
+14(not)h
+14(b)h
+1(een)h
+16(handled,)h
+13(and)h
+0 1561(giving)s
+12(the)h
+15(description)h
+14(of)h
+14(the)h
+14(exception.)h
+549 1636(Catc)s
+-1(hing)h
+9(exceptions)h
+11(is)h
+9(a)h
+10(little)h
+9(tric)h
+-1(k)h
+-1(er)h
+10(than)h
+9(raising)h
+9(them.)h
+16(T)h
+-3(o)h
+9(catc)h
+-1(h)h
+10(an)h
+10(exception,)h
+0 1685(y)s
+-1(ou)h
+14(need)h
+15(to)h
+15(sp)h
+1(ecify)h
+15(so)h
+14(in)h
+14(adv)h
+-2(ance)h
+15(b)h
+-1(y)h
+14(enclosing)h
+14(the)h
+15(co)h
+1(de)h
+16(that)h
+14(migh)h
+-1(t)h
+12(raise)h
+15(the)h
+15(exception)h
+15(within)h
+14(an)h
+101 1735(construct)s
+16(pro)h
+-1(vided)h
+15(b)h
+-1(y)h
+14(the)h
+88(macros)h
+183(,)h
+204(,)h
+173(and)h
+140(.)h
+13(Here)h
+16(is)h
+14(an)h
+14(abstract)h
+0 1785(example:)s
+427 1885([14])s
+0 2607(The)s
+18(en)h
+-1(tire)h
+18(con)h
+-1(text)h
+18(\(from)h
+202(to)h
+143(\))h
+17(is)h
+17(syn)h
+-1(tactically)h
+17(equiv)h
+-2(alen)h
+-1(t)h
+17(to)h
+17(a)h
+18(comp)h
+1(ound)h
+16(statemen)h
+-1(t)h
+18(\()h
+44(\).)h
+0 2657(Its)s
+16(seman)h
+-1(tics)h
+14(are)h
+16(that)h
+15(the)h
+16(co)h
+1(de)h
+15(that)h
+16(mig)h
+-1(h)h
+-1(t)h
+14(raise)h
+15(an)h
+15(exception)h
+16(is)h
+15(executed,)h
+16(and,)h
+15(if)h
+14(no)h
+15(exceptions)h
+17(are)h
+15(raised,)h
+965 2770(9)s
+14 2 91 42 r
+14 2 1711 266 r
+14 2 144 315 r
+14 2 719 315 r
+14 2 1564 315 r
+14 2 932 789 r
+14 2 1171 789 r
+14 2 514 839 r
+14 2 1047 839 r
+14 2 1354 839 r
+14 2 427 1362 r
+14 2 988 1461 r
+14 2 633 1735 r
+14 2 848 1735 r
+14 2 1042 1735 r
+14 2 1258 1735 r
+14 2 1500 1735 r
+14 2 525 2607 r
+14 2 766 2607 r
+9 @eop
+10 @bop0
+10 @bop1
+cmr10.300 sf
+0 42(terminates.)s
+17(If)h
+11(an)h
+11(exception)h
+13(is)h
+11(raised,)h
+12(the)h
+12(co)h
+1(de)h
+12(ab)h
+1(orts)h
+12(to)h
+11(the)h
+12(corresp)h
+1(onding)h
+13(handler,)h
+11(or)h
+12(is)h
+11(propagated)h
+12(up)h
+-1(w)h
+-1(ards)h
+0 91(if)s
+16(no)h
+17(matc)h
+-1(hing)h
+15(handler)h
+18(is)h
+17(presen)h
+-1(t.)h
+29(F)h
+-3(or)h
+16(a)h
+17(more)h
+16(detailed)h
+17(description)h
+18(of)h
+17(the)h
+17(seman)h
+-1(tics,)h
+17(see)h
+19(the)h
+17(sp)h
+1(eci\014cation)h
+0 141(section.)s
+954 2770(10)s
+10 @eop
+11 @bop0
+cmsl10.300 sf
+[<07FF87FE00FE01F0007C01C0003C0180003E0100001E0200001E0400001F0800000F18
+00000F90000007A0000007C0000003C0000003E0000003E0000003F0000004F0000008F0
+000010F8000030780000207C0000403C0000803E0001001E0003001F0006000F001F001F
+80FFC0FFF0>
+32 28 -1 27 31] 88 dc
+[<0FFFFFC000F803C000F001C000F0008000F0008000F0008000F0008001E0008001E040
+8001E0400001E0400001E0C00001E1C00003FF800003C1800003C0800003C0800003C080
+0003C080000780000007800000078000000780000007800000078000000F0000000F8000
+00FFF80000>
+32 28 -2 27 27] 70 dc
+[<0FFF9FFE00F803E000F003C000F003C000F003C000F003C000F003C001E0078001E007
+8001E0078001E0078001E0078001E0078003FFFF0003C00F0003C00F0003C00F0003C00F
+0003C00F0007801E0007801E0007801E0007801E0007801E0007801E000F003C000F803E
+00FFF3FFC0>
+32 28 -2 27 31] 72 dc
+[<0FFFF80000F80E0000F0078000F003C000F001C000F001E000F001E001E003C001E003
+C001E0038001E0070001E00E0001E03C0003FFE00003C0700003C0380003C03C0003C01C
+0003C01E0007803C0007803C0007803C0007803C0007803C0007803C080F003C100F801C
+10FFF01C20000007C0>
+32 29 -2 27 31] 82 dc
+[<0FFFFC0000F8078000F001C000F000E000F0007000F0007000F0007801E0003801E000
+3801E0003801E0003801E0003C01E0003803C0003803C0007803C0007803C0007803C000
+7003C000F0078000E0078000E0078001C0078003800780078007800E000F001C000F0070
+00FFFFC000>
+32 28 -2 27 32] 68 dc
+cmbx10.518 sf
+[<003FF00001FFFE0007FFFF801FC07FE03F003FF07C001FF87F000FFCFF8007FEFFC007
+FEFFC003FFFFC003FFFFC003FFFFC003FF7F8003FF3F0003FF000003FF000003FF000007
+FE000007FE000007FC00000FF800001FF800001FF000003FE000007F8000007F000000FE
+000001FC000003F0000007E000000FC007001F8007003E0007007C000F00F8000E01F000
+0E01E0001E03FFFFFE07FFFFFE0FFFFFFE1FFFFFFE3FFFFFFE7FFFFFFCFFFFFFFCFFFFFF
+FCFFFFFFFC>
+32 46 -4 45 41] 50 dc
+[<001FF0038000FFFF078003FFFFCF8007F00FFF801FC001FF801F80007F803F00003F80
+7F00001F807E00000F807E00000F80FE00000780FE00000780FF00000380FF00000380FF
+80000380FFC0000000FFE0000000FFFC0000007FFFE000007FFFFE00003FFFFFC0003FFF
+FFF0001FFFFFFC000FFFFFFE0007FFFFFF0001FFFFFF00007FFFFF80001FFFFFC00000FF
+FFC0000007FFC0000000FFE00000007FE00000003FE00000001FE0E000001FE0E000000F
+E0E000000FE0E000000FE0F000000FE0F000000FC0F800000FC0F800001F80FC00001F80
+FF00003F00FFC0007E00FFFC01FC00F9FFFFF800F03FFFE000E007FF0000>
+40 49 -5 48 46] 83 dc
+[<00380000380000380000380000380000780000780000780000F80000F80001F80003F8
+0007F8001FF800FFFFFEFFFFFEFFFFFE07F80007F80007F80007F80007F80007F80007F8
+0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80707F80707F8
+0707F80707F80707F80707F80707FC0F03FC0E03FE1E01FFFC007FF8000FE0>
+24 46 -2 45 32] 116 dc
+[<007FF8000003FFFF00000FFFFFC0001FE01FF0001FF007F8001FF007FC001FF003FC00
+1FF001FE000FE001FE0007C001FE00010001FE00000001FE00000001FE000001FFFE0000
+3FFFFE0001FFF1FE0007FE01FE001FF001FE003FE001FE007FC001FE007F8001FE00FF80
+01FE00FF0001FE00FF0001FE00FF0001FE00FF8003FE00FF8007FE007FC00FFE003FF03E
+FF001FFFF87FF807FFF03FF800FF800FF8>
+40 32 -2 31 40] 97 dc
+[<0007FF00007FFFE001FFFFF803FC03FC07F807FC0FF007FC1FE007FC3FC007FC3FC003
+F87FC001F07F800040FF800000FF800000FF800000FF800000FF800000FF800000FF8000
+00FF800000FF800000FF8000007FC000007FC000003FC0000E3FE0000E1FE0001E0FF000
+3C07F8007803FF01F001FFFFE0007FFF800007FC00>
+32 32 -3 31 37] 99 dc
+[<FFFFFFFFE000FFFFFFFFFE00FFFFFFFFFF8000FFC001FFE000FFC0003FF000FFC0001F
+F800FFC0000FFC00FFC0000FFC00FFC00007FE00FFC00007FE00FFC00007FF00FFC00007
+FF00FFC00007FF00FFC00007FF00FFC00007FF00FFC00007FF00FFC00007FF00FFC00007
+FE00FFC00007FE00FFC0000FFC00FFC0000FFC00FFC0001FF800FFC0003FF000FFC001FF
+E000FFFFFFFF8000FFFFFFFE0000FFFFFFE00000FFC000000000FFC000000000FFC00000
+0000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC00000
+0000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC00000
+0000FFC000000000FFC000000000FFC000000000FFC0000000FFFFFFC00000FFFFFFC000
+00FFFFFFC00000>
+48 49 -2 48 56] 80 dc
+[<03F007F8000FF000FFF03FFF007FFE00FFF07FFF80FFFF00FFF1F03FC3E07F800FF3C0
+1FE7803FC007F7801FEF003FC007F7000FFE001FE007FE000FFC001FE007FC000FF8001F
+E007FC000FF8001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F800
+0FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001F
+E007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F800
+0FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001F
+E007F8000FF0001FE007F8000FF0001FE0FFFFC1FFFF83FFFFFFFFC1FFFF83FFFFFFFFC1
+FFFF83FFFF>
+64 32 -3 31 71] 109 dc
+[<00FF870007FFEF001FFFFF003F007F007C001F007C000F00F8000F00F8000700FC0007
+00FC000700FF000000FFF800007FFFC0007FFFF0003FFFFC001FFFFE0007FFFF0001FFFF
+80001FFF800000FFC000001FC0E0000FC0E0000FC0F00007C0F00007C0F80007C0FC000F
+80FE001F80FF803F00FFFFFE00F3FFF800E07FC000>
+32 32 -3 31 33] 115 dc
+[<0007FE0000003FFFC00000FFFFF00003FC03FC0007F000FE000FE0007F001FC0003F80
+3FC0003FC03FC0003FC07F80001FE07F80001FE07F80001FE0FF80001FF0FF80001FF0FF
+80001FF0FF80001FF0FF80001FF0FF80001FF0FF80001FF0FF80001FF07F80001FE07F80
+001FE07F80001FE03FC0003FC03FC0003FC01FE0007F800FE0007F0007F801FE0003FE07
+FC0001FFFFF800003FFFC0000007FE0000>
+40 32 -2 31 41] 111 dc
+[<0000FF000007FFC0001FFFF0007FC7F000FF0FF801FF0FF801FE0FF803FE0FF803FC0F
+F803FC07F003FC01C003FC000003FC000003FC000003FC000003FC000003FC000003FC00
+00FFFFF800FFFFF800FFFFF80003FC000003FC000003FC000003FC000003FC000003FC00
+0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00
+0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00
+0003FC000003FC00007FFFF0007FFFF0007FFFF000>
+32 50 -2 49 25] 102 dc
+[<01F800000000FFF800000000FFF800000000FFF8000000000FF80000000007F8000000
+0007F80000000007F80000000007F80000000007F80000000007F80000000007F8000000
+0007F80000000007F80000000007F80000000007F80000000007F80000000007F8000000
+0007F807F8000007F83FFF000007F87FFF800007F9F03FC00007FBC01FE00007FF801FE0
+0007FF000FF00007FE000FF00007FC000FF00007FC000FF00007F8000FF00007F8000FF0
+0007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF0
+0007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF0
+0007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000FFFFC1FFFF
+80FFFFC1FFFF80FFFFC1FFFF80>
+48 50 -3 49 46] 104 dc
+[<01F8000000FFF8000000FFF8000000FFF80000000FF800000007F800000007F8000000
+07F800000007F800000007F800000007F800000007F800000007F800000007F800000007
+F800000007F800000007F800000007F800000007F8007FFC07F8007FFC07F8007FFC07F8
+001FC007F8001F0007F8003E0007F800780007F801F00007F803E00007F807800007F81F
+000007F83E000007F87C000007F9FE000007FBFF000007FFFF800007FF7FC00007FE3FE0
+0007F81FE00007F01FF00007F00FF80007F007FC0007F003FE0007F001FF0007F000FF00
+07F000FF8007F0007FC007F0003FE007F0003FF0FFFF80FFFFFFFF80FFFFFFFF80FFFF>
+40 50 -2 49 44] 107 dc
+[<001FF007E000FFFE3FF003FFFFFFF807F83FF1F80FE00FE1F81FE00FF1F81FC007F060
+3FC007F8003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8001F
+C007F0001FE00FF0000FE00FE00007F83FC00007FFFF80000EFFFE00000E1FF000000E00
+0000001E000000001E000000001F000000001F800000001FFFFFC0000FFFFFF8000FFFFF
+FE0007FFFFFF8007FFFFFFC007FFFFFFE01FFFFFFFE03F00007FE07E00000FF0FE000007
+F0FC000003F0FC000003F0FC000003F0FE000007F07E000007E07F00000FE03FC0003FC0
+1FF801FF8007FFFFFE0000FFFFF000001FFF8000>
+40 47 -2 31 41] 103 dc
+cmbx10.432 sf
+[<FFFFFCFFFFFCFFFFFC01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
+0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
+0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
+0001FE0001FE00FFFFFCFFFFFCFFFFFC>
+24 41 -2 40 26] 73 dc
+cmr7.300 sf
+[<1F0060C06060F070F030603000700070006000C001C00180020004000810101020207F
+E0FFE0>
+16 19 -2 18 17] 50 dc
+cmtt10.300 sf
+[<0387000387000387000387000387000387007FFFC0FFFFE0FFFFE0070E00070E00070E
+000E1C000E1C000E1C000E1C00FFFFE0FFFFE07FFFC01C38001C38001C38001C38001C38
+001C3800>
+24 25 -1 24 22] 35 dc
+cmr10.300 sf
+[<00030003000700060006000E000C001C0018001800380030003000700060006000E000
+C000C001C001800380030003000700060006000E000C000C001C00180018003800300070
+0060006000E000C000C000>
+16 41 -2 30 21] 47 dc
+11 @bop1
+cmsy10.300 sf
+426 903(\021)s
+62 953(f)s
+83 1102(g)s
+442 1862(\021)s
+62 1912(f)s
+83 2111(g)s
+cmsl10.300 sf
+0 903(Sym)s
+-1(b)h
+1(ol)h
+27(EX)h
+15(F)h
+-5(AST)h
+0 1862(Sym)s
+-1(b)h
+1(ol)h
+27(EX)h
+15(THRD)h
+cmbx10.518 sf
+0 50(2)s
+28(Static)h
+27(P)h
+-2(arameters)h
+25(of)h
+28(this)h
+26(P)h
+-2(ac)h
+-2(k)h
+-5(age)h
+cmbx10.432 sf
+0 293(2.1)s
+24(Inline)h
+21(Switc)h
+-2(h)h
+21(P)h
+-2(aramete)h
+-1(r)h
+0 1575(2.2)s
+24(Threading)h
+23(P)h
+-2(aramete)h
+-1(r)h
+cmr7.300 sf
+0 1152(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(32.)h
+0 2161(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(32.)h
+cmtt10.300 sf
+757 654(EX)s
+16(FAST)h
+74(FALSE)h
+954 704(EX)s
+15(FAST)h
+74(TRUE)h
+395 803(FALSE)s
+1278(TRUE)h
+83 1002(#define)s
+20(_EX_FAST)h
+21(FALSE)h
+83 1052(/*)s
+21(Set)h
+22(_EX_FAST)h
+20(to)h
+21(TRUE)h
+21(to)h
+21(turn)h
+21(on)h
+22(inlining)h
+20(and)h
+21(turn)h
+21(off)h
+21(checking.)h
+20(*/)h
+765 1227(link)s
+291 1663(EX)s
+16(THRD)h
+1408(TRUE)h
+1249 1712(TRUE)s
+83 1961(#define)s
+20(_EX_THRD)h
+21(FALSE)h
+83 2011(/*)s
+21(To)h
+22(configure)h
+20(this)h
+21(package)h
+20(to)h
+21(work)h
+21(under)h
+21(a)h
+22(multi-threa)h
+-1(ded)h
+20(environment)h
+-1(,)h
+20(*/)h
+83 2061(/*)s
+21(set)h
+22(_EX_THRD)h
+20(to)h
+21(TRUE)h
+21(and)h
+21(modify)h
+21(the)h
+21(k_var)h
+21(calls)h
+20(later)h
+21(on)h
+22(in)h
+21(the)h
+21(file.)h
+21(*/)h
+cmr10.300 sf
+0 137(This)s
+14(pac)h
+-1(k)h
+-2(age)h
+13(has)h
+14(a)h
+14(few)h
+14(static)h
+14(\(compile-tim)h
+-1(e\))h
+12(parameters)h
+14(whic)h
+-1(h)h
+14(can)h
+14(b)h
+1(e)h
+14(used)h
+15(to)h
+14(mo)h
+1(dify)h
+11(its)h
+14(b)h
+1(eha)h
+-1(vior.)h
+0 380(Exceptions)s
+20(are)h
+20(tric)h
+-1(ky)h
+19(constructs,)h
+22(particularly)h
+18(in)h
+19(a)h
+19(programm)h
+-1(i)h
+-1(ng)h
+17(language)h
+18(lik)h
+-1(e)h
+19(C,)h
+18(and)h
+19(it)h
+19(mak)h
+-1(es)h
+18(sense)h
+21(to)h
+0 430(incorp)s
+1(orate)h
+13(lots)h
+12(of)h
+11(c)h
+-1(hec)h
+-1(king)h
+13(in)h
+-1(to)h
+12(a)h
+12(pac)h
+-1(k)h
+-2(age)h
+11(suc)h
+-1(h)h
+13(as)h
+13(this)h
+12(one.)h
+18(A)h
+-1(t)h
+12(the)h
+13(same)h
+11(time,)h
+11(exceptions)h
+13(are)h
+13(a)h
+12(fundamen)h
+-1(tal)h
+0 479(language)s
+13(construct)h
+16(that)h
+15(are)h
+15(lik)h
+-1(ely)h
+13(to)h
+14(b)h
+1(e)h
+15(used)h
+15(extensiv)h
+-1(ely)h
+-3(,)h
+14(and)h
+14(it)h
+14(should)h
+15(b)h
+1(e)h
+15(p)h
+1(ossible)h
+14(to)h
+14(con\014gure)h
+16(them)h
+13(to)h
+14(b)h
+1(e)h
+0 529(as)s
+14(e\016cien)h
+-1(t)h
+14(as)h
+14(p)h
+1(ossible.)h
+0 604(T)s
+-3(o)h
+17(satisfy)h
+18(these)h
+20(t)h
+-1(win)h
+17(needs,)h
+20(this)h
+19(pac)h
+-1(k)h
+-2(age)h
+17(pro)h
+-1(vides)h
+19(a)h
+17(b)h
+1(o)h
+1(olean)h
+18(parameter)h
+18(whic)h
+-1(h)h
+18(can)h
+18(b)h
+1(e)h
+19(used)h
+19(to)h
+18(select)h
+19(t)h
+-1(w)h
+-1(o)h
+0 654(di\013eren)s
+-1(t)h
+20(kinds)h
+19(of)h
+19(impl)h
+-1(em)h
+-1(en)h
+-1(tation.)h
+32(Set)h
+201(to)h
+147(if)h
+18(y)h
+-1(ou)h
+19(w)h
+-1(an)h
+-1(t)h
+18(the)h
+20(exp)h
+1(orted)h
+20(macros)h
+19(to)h
+19(generate)h
+0 704(function)s
+18(calls)h
+19(and)h
+18(to)h
+19(p)h
+1(erform)h
+18(lots)h
+18(of)h
+18(c)h
+-1(hec)h
+-1(ks.)h
+34(Set)h
+200(to)h
+125(if)h
+17(y)h
+-1(ou)h
+19(w)h
+-1(an)h
+-1(t)h
+18(the)h
+19(exp)h
+1(orted)h
+20(macros)h
+18(to)h
+0 753(generate)s
+16(inline)h
+15(co)h
+1(de)h
+16(that)h
+15(runs)h
+15(as)h
+16(fast)h
+15(as)h
+15(p)h
+1(ossible)h
+15(with)h
+15(no)h
+15(c)h
+-1(hec)h
+-1(king)h
+15(at)h
+15(all.)h
+21(It)h
+15(is)h
+15(strongly)h
+15(recommended)h
+14(that)h
+0 803(this)s
+14(sym)h
+-1(b)h
+1(ol)h
+12(b)h
+1(e)h
+15(set)h
+14(to)h
+137(unless)h
+15(p)h
+1(erformance)h
+13(requiremen)h
+-1(ts)h
+15(absolutely)h
+13(demand)h
+13(that)h
+14(it)h
+13(b)h
+1(e)h
+15(set)h
+15(to)h
+101(.)h
+347 903([15])s
+0 1227(Note:)s
+25(Some)h
+16(other)h
+18(pac)h
+-1(k)h
+-2(ages)h
+17(\(suc)h
+-1(h)h
+18(as)h
+17(the)h
+122(pac)h
+-1(k)h
+-2(age\))h
+17(allo)h
+-1(w)h
+15(parameters)h
+17(lik)h
+-1(e)h
+17(this)h
+17(to)h
+17(b)h
+1(e)h
+17(set)h
+18(b)h
+-1(y)h
+17(the)h
+18(clien)h
+-1(t)h
+0 1276(pac)s
+-1(k)h
+-2(age,)h
+12(th)h
+-1(us)h
+13(enabling)h
+12(di\013eren)h
+-1(t)h
+13(clien)h
+-1(t)h
+13(mo)h
+1(dules)h
+11(to)h
+13(sp)h
+1(ecify)h
+13(di\013eren)h
+-1(t)h
+13(safet)h
+-1(y/e\016ciency)h
+14(trade-o\013s.)h
+18(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+13(this)h
+0 1326(lev)s
+-1(el)h
+13(of)h
+13(parameterization)h
+12(gran)h
+-1(ularit)h
+-1(y)h
+13(could)h
+13(not)h
+13(b)h
+1(e)h
+14(ac)h
+-1(hiev)h
+-1(ed)h
+14(in)h
+13(this)h
+14(pac)h
+-1(k)h
+-2(age)h
+13(as)h
+13(some)h
+13(of)h
+13(the)h
+14(c)h
+-1(hec)h
+-1(king)h
+14(is)h
+13(magic)h
+0 1376(n)s
+-1(um)h
+-1(b)h
+1(er)h
+13(c)h
+-1(hec)h
+-1(king)h
+14(whic)h
+-1(h)h
+14(m)h
+-1(ust)h
+12(b)h
+1(e)h
+15(emplo)h
+-1(y)h
+-1(ed)h
+12(globally)h
+11(or)h
+14(not)h
+13(at)h
+14(all.)h
+17(The)h
+14(problem)h
+12(is)h
+14(that)h
+14(a)h
+13(mo)h
+1(dule)h
+12(with)h
+14(c)h
+-1(hec)h
+-1(ks)h
+0 1426(on)s
+14(migh)h
+-2(t)h
+12(complain)h
+12(ab)h
+1(out)h
+14(incorrect)h
+15(magic)h
+12(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+13(that)h
+14(w)h
+-1(ere)h
+15(not)h
+14(set)h
+15(b)h
+-1(y)h
+13(another)h
+15(mo)h
+1(dule)h
+12(with)h
+14(c)h
+-1(hec)h
+-1(ks)h
+15(o\013.)h
+0 1663(The)s
+10(parameter)h
+182(tells)h
+10(the)h
+10(pac)h
+-1(k)h
+-2(age)h
+9(whether)h
+12(it)h
+9(is)h
+10(op)h
+1(erating)h
+10(within)h
+9(a)h
+9(m)h
+-1(ulti-threaded)h
+9(en)h
+-1(vironmen)h
+-1(t)h
+9(\()h
+88(\))h
+0 1712(\(th)s
+-1(us)h
+15(prohibiting)h
+13(single-instance)h
+15(global)h
+13(v)h
+-2(ariables\).)h
+19(If)h
+14(y)h
+-1(ou)h
+14(set)h
+15(this)h
+15(to)h
+102(,)h
+13(y)h
+-1(ou)h
+14(will)h
+13(also)h
+14(need)h
+15(to)h
+14(mo)h
+1(dify)h
+12(the)h
+0 1762(macros)s
+13(for)h
+14(global)h
+12(v)h
+-2(ariables)h
+13(in)h
+13(the)h
+15(next)h
+14(section.)h
+364 1862([16])s
+954 2770(11)s
+14 2 744 654 r
+14 2 804 654 r
+14 2 941 704 r
+14 2 1001 704 r
+13 2 151 903 r
+13 2 225 903 r
+14 2 278 1663 r
+14 2 338 1663 r
+13 2 151 1862 r
+13 2 225 1862 r
+11 @eop
+12 @bop0
+cmsl10.300 sf
+[<0FF80007FC00F8000FC000BC000F8000BC00178000BC00178000BC00278000BC002780
+011E004F00011E004F00011E008F00011E008F00011E010F00010F010F00020F021E0002
+0F021E00020F041E00020F041E000207881E000207901E000407903C000407A03C000407
+A03C000407C03C000403C03C000403803C000C038078001E03007C00FF8307FF80>
+40 28 -2 27 38] 77 dc
+[<FF0FE03C03801C03001C02001C06001C04001E08000E08000E10000E10000E20000720
+0007400007C000078000070000030000020000>
+24 18 -4 17 22] 118 dc
+cmbx10.432 sf
+[<0007F0003FFC00FE3E01FC7F03F87F03F87F07F07F07F03E07F00007F00007F00007F0
+0007F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F0
+0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
+0007F00007F00007F0007FFF807FFF807FFF80>
+24 42 -2 41 21] 102 dc
+[<00007FE003000003FFFC0F00001FFFFF1F00007FF00FFF0000FF8001FF0003FE0000FF
+0007FC00007F000FF800003F000FF000001F001FE000001F003FE000000F003FC000000F
+007FC0000007007FC0000007007FC000000700FF8000000000FF8000000000FF80000000
+00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
+00FF8001FFFFF8FF8001FFFFF87FC001FFFFF87FC00000FF007FC00000FF003FC00000FF
+003FE00000FF001FE00000FF000FF00000FF000FF80000FF0007FC0000FF0003FE0001FF
+0000FF8001FF00007FF007FF00001FFFFFBF000003FFFE0F0000007FF00300>
+48 41 -4 40 54] 71 dc
+[<FFFFF0003FFF80FFFFF0003FFF80FFFFF0003FFF8003FE000001E00001FE000001C000
+01FF000003C00000FF000003800000FF0000038000007F8000070000007F800007000000
+7FC0000F0000003FC0000E0000003FE0001E0000001FE0001C0000001FF0001C0000000F
+F000380000000FF0003800000007F8007000000007F8007000000007FC00F000000003FC
+00E000000003FE01E000000001FE01C000000001FF01C000000000FF038000000000FF03
+8000000000FF8780000000007F8700000000007FCF00000000003FCE00000000003FFE00
+000000001FFC00000000001FFC00000000000FF800000000000FF800000000000FF80000
+00000007F0000000000007F0000000000003E0000000000003E0000000000001C0000000>
+56 41 -1 40 52] 86 dc
+12 @bop1
+cmsy10.300 sf
+569 652(\021)s
+62 702(f)s
+83 1548(g)s
+cmsl10.300 sf
+0 652(Macros)s
+14(for)h
+14(global)h
+12(v)h
+-2(ariables)h
+cmbx10.432 sf
+0 42(2.3)s
+24(Macros)h
+24(for)h
+23(Global)h
+22(V)h
+-6(ariables)h
+cmr7.300 sf
+0 1598(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(32.)h
+cmtt10.300 sf
+837 129(ex)s
+15(curr)h
+46(ex)h
+15(id)h
+130(ex)h
+16(info)h
+83 751(#if)s
+21(!_EX_THRD)h
+83 801(/*)s
+21(Non-threaded)h
+20(system)h
+20(macros)h
+21(simply)h
+20(point)h
+21(to)h
+22(variables.)h
+19(*/)h
+83 851(#define)s
+20(_EX_CURR)h
+21(_ex_curr)h
+83 901(#define)s
+42(EX_ID)h
+65(\(\(p_ex_t\))h
+19(_ex_id\))h
+83 951(#define)s
+20(_EX_ID)h
+65(_ex_id)h
+83 1000(#define)s
+42(EX_INFO)h
+21(_ex_info)h
+83 1050(#else)s
+83 1100(/*)s
+21(Threaded)h
+21(system)h
+20(macros)h
+21(translate)h
+20(to)h
+21(kernel)h
+21(calls.)h
+216(*/)h
+83 1150(/*)s
+21(To)h
+22(make)h
+21(this)h
+21(package)h
+20(work)h
+21(in)h
+21(a)h
+22(multi-threade)h
+-1(d)h
+20(environment,)h
+19(*/)h
+83 1200(/*)s
+21(set)h
+22(_EX_THRD)h
+20(to)h
+21(TRUE)h
+21(and)h
+21(modify)h
+21(these)h
+21(definition)h
+-1(s.)h
+194(*/)h
+83 1249(/*)s
+21(Note:)h
+21(The)h
+21(kernel)h
+21(should)h
+20(initialize)h
+20(_EX_CURR)h
+20(to)h
+22(NULL.)h
+151(*/)h
+83 1299(#define)s
+20(_EX_CURR)h
+238(\(*)h
+22(\(\(_ex_cx_t)h
+20(*\))h
+21(k_var\(51\)\)\))h
+83 1349(#define)s
+42(EX_ID)h
+65(\(\(p_ex_t\))h
+19(\(*)h
+22(\(\(p_ex_t)h
+64(*\))h
+21(k_var\(52\)\)\)\))h
+83 1399(#define)s
+20(_EX_ID)h
+282(\(*)h
+22(\(\(p_ex_t)h
+64(*\))h
+21(k_var\(52\)\)\))h
+83 1449(#define)s
+42(EX_INFO)h
+238(\(*)h
+22(\(\(ptrint)h
+64(*\))h
+21(k_var\(53\)\)\))h
+83 1499(#endif)s
+172 1723(ptrint)s
+376 1797(ex)s
+16(curr)h
+1243(EX)h
+16(ID)h
+0 1847(EX)s
+15(INFO)h
+1569(EX)h
+15(ID)h
+1135 1897(EX)s
+15(ID)h
+494(EX)h
+15(ID)h
+224 1947(EX)s
+15(ID)h
+1648 2071(EX)s
+16(CURR)h
+48 2121(NULL)s
+cmr10.300 sf
+0 129(This)s
+18(pac)h
+-1(k)h
+-2(age)h
+17(uses)h
+19(three)h
+20(global)h
+16(v)h
+-2(ariables)h
+17(|)h
+180(,)h
+137(,)h
+18(and)h
+198(|)h
+17(whic)h
+-1(h)h
+18(ro)h
+1(ot)h
+18(the)h
+18(exception)h
+0 178(con)s
+-1(text)h
+10(stac)h
+-1(k,)h
+11(and)h
+9(store)h
+11(informa)h
+-1(tion)h
+7(ab)h
+1(out)h
+10(the)h
+10(most)h
+8(recen)h
+-1(tly)h
+11(raised)h
+10(exception.)h
+17(Unfortunately)h
+-3(,)h
+10(global)h
+8(v)h
+-2(ariables)h
+0 228(suc)s
+-1(h)h
+15(as)h
+15(these)h
+16(cause)h
+16(problems)h
+14(on)h
+14(m)h
+-1(ulti-threaded)h
+14(systems)h
+14(whic)h
+-1(h)h
+15(require)h
+16(that)h
+14(separate)h
+16(instances)h
+16(of)h
+14(all)h
+14(global)h
+0 278(v)s
+-2(ariables)h
+13(b)h
+1(e)h
+15(main)h
+-2(tained)h
+12(for)h
+14(eac)h
+-1(h)h
+14(thread.)h
+0 353(The)s
+15(solution)h
+14(to)h
+15(this)h
+14(problem)h
+14(is)h
+14(to)h
+15(de\014ne)h
+16(the)h
+15(global)h
+13(v)h
+-2(ariables)h
+14(as)h
+15(usual,)h
+14(but)h
+15(to)h
+14(refer)h
+16(to)h
+15(them)h
+14(only)h
+13(through)h
+15(a)h
+0 403(set)s
+17(of)h
+15(lv)h
+-2(alue-yielding)h
+13(macros.)h
+23(These)h
+18(macros)h
+15(can)h
+16(then)h
+16(b)h
+1(e)h
+17(con\014gured)h
+16(to)h
+16(p)h
+1(oin)h
+-1(t)h
+15(either)h
+17(directly)h
+16(to)h
+16(a)h
+16(single)h
+15(set)h
+0 452(of)s
+17(global)h
+15(v)h
+-2(ariables)h
+17(\(non-threaded)h
+18(system\),)h
+18(or)h
+17(to)h
+18(thread-instance)h
+18(v)h
+-2(ariables)h
+17(\(threaded)h
+19(system\).)h
+28(This)h
+17(is)h
+17(the)h
+0 502(approac)s
+-1(h)h
+16(that)h
+17(has)h
+17(b)h
+1(een)h
+17(tak)h
+-1(en)h
+17(in)h
+16(this)h
+16(pac)h
+-1(k)h
+-2(age.)h
+25(Accordingly)h
+17(the)h
+17(macros)h
+15(ha)h
+-1(v)h
+-1(e)h
+17(b)h
+1(een)h
+17(de\014ned)h
+18(in)h
+16(this)h
+16(pac)h
+-1(k)h
+-2(age)h
+0 552(static)s
+14(parameter)h
+14(section.)h
+19(Both)h
+14(un)h
+-1(threaded)h
+15(and)h
+14(threaded)h
+15(v)h
+-1(ersions)h
+14(app)h
+1(ear)h
+14(b)h
+1(elo)h
+-1(w.)h
+491 652([17])s
+0 1673(\(The)s
+13(51,)h
+12(52)h
+12(and)h
+13(so)h
+13(on)h
+12(are)h
+13(just)h
+13(example)h
+11(v)h
+-2(ariable)h
+12(n)h
+-1(um)h
+-1(b)h
+1(ers.)h
+17(By)h
+13(the)h
+14(w)h
+-1(a)h
+-1(y)h
+-3(,)h
+11(eac)h
+-1(h)h
+13(of)h
+12(the)h
+13(three)h
+14(global)h
+11(v)h
+-2(ariables)h
+12(will)h
+0 1723(\014t)s
+14(in)h
+-1(to)h
+13(a)h
+146(.\).)h
+0 1797(The)s
+13(global)h
+12(v)h
+-2(ariable)h
+187(is)h
+12(not)h
+13(supp)h
+1(osed)h
+15(to)h
+12(b)h
+1(e)h
+14(used)h
+14(b)h
+-1(y)h
+13(the)h
+13(clien)h
+-1(t)h
+13(so)h
+13(its)h
+13(sym)h
+-1(b)h
+1(ol)h
+11(starts)h
+14(with)h
+29(.)h
+133(and)h
+160 1847(are)s
+14(in)h
+-1(tended)h
+15(to)h
+13(b)h
+1(e)h
+15(visible)h
+13(to)h
+13(the)h
+15(clien)h
+-1(t.)h
+18(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(the)h
+14(clien)h
+-1(t)h
+14(is)h
+13(not)h
+14(allo)h
+-1(w)h
+-1(ed)h
+12(to)h
+14(write)h
+14(to)h
+130(and)h
+14(so)h
+0 1897(t)s
+-1(w)h
+-1(o)h
+15(forms)h
+15(ha)h
+-1(v)h
+-1(e)h
+16(b)h
+1(een)h
+17(pro)h
+-1(vided,)h
+15(one)h
+16(hidden)h
+16(read/write)h
+17(form)h
+14(\()h
+119(\))h
+16(and)h
+15(one)h
+16(read-only)h
+16(form)h
+14(\()h
+103(\).)h
+16(The)h
+0 1947(t)s
+-1(yp)h
+1(e)h
+13(cast)h
+14(in)h
+128(is)h
+12(there)h
+14(solely)h
+13(to)h
+12(con)h
+-1(v)h
+-1(ert)h
+14(the)h
+13(v)h
+-2(alue)h
+12(from)h
+11(an)h
+13(lv)h
+-2(alue)h
+12(to)h
+12(an)h
+13(rv)h
+-2(alue)h
+12(\(ANSI)h
+13(6.3.4)h
+11(\(fo)h
+1(otnote)h
+13(44\)\))h
+0 1997(so)s
+14(that)h
+14(the)h
+14(clien)h
+-1(t)h
+14(can't)h
+14(write)h
+14(to)h
+14(it.)h
+0 2071(If)s
+13(these)h
+15(macros)h
+12(are)h
+14(c)h
+-1(hanged)h
+14(to)h
+13(p)h
+1(oin)h
+-1(t)h
+13(to)h
+13(thread)h
+14(instance)h
+15(v)h
+-2(ariables,)h
+12(b)h
+1(e)h
+14(sure)h
+14(to)h
+14(initiali)h
+-1(ze)h
+13(the)h
+189(v)h
+-2(ariable)h
+0 2121(to)s
+109(\(b)h
+1(efore)h
+12(p)h
+1(erforming)h
+10(an)h
+-1(y)h
+10(exception)h
+12(actions\))h
+11(if)h
+11(y)h
+-1(ou)h
+10(w)h
+-1(an)h
+-1(t)h
+11(unhandled)h
+11(exceptions)h
+12(to)h
+11(b)h
+1(e)h
+12(correctly)h
+12(detected.)h
+0 2171(The)s
+14(other)h
+15(t)h
+-1(w)h
+-1(o)h
+13(v)h
+-2(ariables)h
+13(don't)h
+14(need)h
+15(to)h
+13(b)h
+1(e)h
+15(initiali)h
+-1(zed.)h
+0 2246(Because)s
+17(these)h
+16(macros)h
+14(can)h
+15(translate)h
+15(to)h
+15(function)h
+14(calls,)h
+15(an)h
+14(attempt)h
+14(has)h
+15(b)h
+1(een)h
+16(made)h
+14(in)h
+14(the)h
+16(rest)h
+16(of)h
+14(the)h
+15(pac)h
+-1(k)h
+-2(age)h
+0 2296(to)s
+13(minim)h
+-2(ize)h
+12(reference)h
+1(s)h
+15(to)h
+13(them)h
+13(\(e.g.)h
+17(assign)h
+13(their)h
+14(v)h
+-2(alues)h
+13(to)h
+13(temp)h
+1(orary)h
+13(v)h
+-2(ariables)h
+12(and)h
+13(manipulate)h
+12(them)h
+12(rather)h
+0 2345(than)s
+14(using)h
+13(the)h
+15(macro)h
+13(itself)h
+13(m)h
+-1(ultipl)h
+-1(e)h
+13(times\).)h
+954 2770(12)s
+14 2 824 129 r
+14 2 884 129 r
+14 2 1017 129 r
+14 2 1077 129 r
+14 2 1250 129 r
+14 2 1310 129 r
+14 2 363 1797 r
+14 2 423 1797 r
+14 2 1725 1797 r
+14 2 1814 1797 r
+14 2 47 1847 r
+14 2 1763 1847 r
+14 2 1122 1897 r
+14 2 1182 1897 r
+14 2 1779 1897 r
+14 2 271 1947 r
+14 2 1635 2071 r
+14 2 1695 2071 r
+12 @eop
+13 @bop0
+cmbx10.518 sf
+[<000FFC0000007FFF800001F01FE00003C00FF00007800FF8000FE007FC001FF007FE00
+1FF807FE001FF807FE001FF807FE001FF807FE001FF807FE000FF007FE0007E007FC0001
+800FFC0000000FF80000000FF80000001FF00000003FE00000007F8000001FFE0000001F
+FC0000001FFF800000001FF00000000FF800000007FE00000003FF00000003FF00000001
+FF80000001FF800E0001FFC03F8001FFC07FC001FFC0FFE001FFC0FFE001FFC0FFE001FF
+C0FFE001FFC0FFE001FF80FFE003FF807FC003FF007F0007FE003F000FFC001FE01FF800
+07FFFFE00001FFFF8000001FFC0000>
+40 46 -3 45 41] 51 dc
+[<01F80FF000FFF87FFE00FFF9FFFF80FFFFE07FE00FFF001FF007FE000FF807FC0007F8
+07F80007FC07F80003FE07F80003FE07F80003FE07F80001FF07F80001FF07F80001FF07
+F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80003FF07F8
+0003FE07F80003FE07F80003FC07FC0007FC07FC000FF807FE000FF007FF801FE007FFE0
+7FC007F9FFFF8007F87FFE0007F81FE00007F800000007F800000007F800000007F80000
+0007F800000007F800000007F800000007F800000007F800000007F800000007F8000000
+FFFFC00000FFFFC00000FFFFC00000>
+40 46 -2 31 46] 112 dc
+[<00001FFC00000001FFFF00000007FFFFC000001FF807E000007FC007F00000FF000FF0
+0001FF000FF00001FE000FF00003FC001FF80003FC000FF00003FC000FF00003FC0007E0
+0003FC0001800003FC0000000003FC0000000003FC0000000003FC0000000003FC00FFF8
+00FFFFFFFFF800FFFFFFFFF800FFFFFFFFF80003FC0007F80003FC0007F80003FC0007F8
+0003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F8
+0003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F8
+0003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F8
+0003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F8007FFFE0FFFF
+C07FFFE0FFFFC07FFFE0FFFFC0>
+48 50 -1 49 46] 12 dc
+[<03F007F80000FFF03FFF0000FFF07FFF8000FFF1F03FC0000FF3C01FE00007F7801FE0
+0007F7000FF00007FE000FF00007FC000FF00007FC000FF00007F8000FF00007F8000FF0
+0007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF0
+0007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF0
+0007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000FFFFC1FFFF
+80FFFFC1FFFF80FFFFC1FFFF80>
+48 32 -3 31 46] 110 dc
+cmr10.300 sf
+[<FFF8000F80000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
+000F00000F00000F00000F00000F00000F00000F00080F00080F00080F00180F00180F00
+100F00300F00700F01F0FFFFF0>
+24 28 -2 27 26] 76 dc
+13 @bop1
+cmsy10.300 sf
+377 511(\021)s
+62 560(f)s
+83 1158(g)s
+469 1644(\021)s
+62 1694(f)s
+83 1843(g)s
+cmbx10.518 sf
+0 50(3)s
+28(Sp)h
+2(eci\014cation)h
+cmbx10.432 sf
+0 1357(3.1)s
+24(Sp)h
+2(eci\014cati)h
+-1(on)h
+22(Includes)h
+0 2042(3.2)s
+24(Exception)h
+22(T)h
+-2(yp)h
+2(e)h
+cmr7.300 sf
+0 1208(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(1.)h
+0 1893(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(18.)h
+cmtt10.300 sf
+1181 137(.h)s
+83 660(#ifndef)s
+20(_EX_DONE)h
+83 710(#define)s
+20(_EX_DONE)h
+21(1)h
+83 1108(#endif)s
+1164 1445(style.h)s
+476 1494(setjmp.h)s
+1167(setjmp)h
+81 1544(longjmp)s
+83 1743(#include)s
+20("style.h")h
+83 1793(#include)s
+20(<setjmp.h>)h
+1649 2279(p)s
+16(ex)h
+15(t)h
+786 2329(ex)s
+15(t)h
+cmsl10.300 sf
+0 511(Sp)s
+1(eci\014cation)h
+14(\014le)h
+83 610(Con\014guration)s
+13(header)h
+15(notice)h
+83 760(Sp)s
+1(eci\014cation)h
+14(includes)h
+83 809(Exception)s
+14(t)h
+-1(yp)h
+1(e)h
+83 859(Hidden)s
+14(de\014nitions)h
+83 909(Macro)s
+14(EX)h
+15(RAISE)h
+83 959(Macros)s
+15(for)h
+13(constructing)h
+15(exception)h
+15(blo)h
+1(c)h
+-1(ks)h
+83 1009(F)s
+-3(unction)h
+14(sp)h
+1(ec)h
+15(ex)h
+15(str)h
+83 1059(Hidden)s
+14(function)h
+14(sp)h
+1(ecs)h
+0 1644(Sp)s
+1(eci\014cation)h
+14(includes)h
+cmr10.300 sf
+0 137(Because)s
+21(this)h
+20(pac)h
+-1(k)h
+-2(age)h
+19(exp)h
+1(orts)h
+20(lots)h
+19(of)h
+19(macros,)h
+19(its)h
+19(sp)h
+1(eci\014cation)h
+20(\()h
+44(\))h
+19(\014le)h
+20(con)h
+-1(tains)h
+19(lots)h
+19(of)h
+19(stu\013)h
+20(that)h
+19(should)h
+0 187(really)s
+18(b)h
+1(e)h
+19(in)h
+18(the)h
+19(implem)h
+-1(en)h
+-1(tation)h
+16(\014le)h
+19(out)h
+19(of)h
+17(sigh)h
+-1(t)h
+19(of)h
+18(the)h
+19(clien)h
+-1(t.)h
+32(Luc)h
+-1(kily)h
+-3(,)h
+18(F)h
+-3(unnelW)h
+-3(eb)h
+18(allo)h
+-1(ws)h
+17(most)h
+18(of)h
+18(these)h
+0 237(implem)s
+-1(en)h
+-1(tatio)h
+-1(n)h
+18(details)h
+20(to)h
+19(b)h
+1(e)h
+21(lo)h
+1(cated)h
+20(in)h
+19(the)h
+21(impl)h
+-1(em)h
+-1(en)h
+-1(tation)h
+18(section)h
+20(of)h
+19(this)h
+20(F)h
+-3(unnelW)h
+-3(eb)h
+20(\014le,)h
+20(lea)h
+-1(ving)h
+19(this)h
+0 286(section)s
+19(to)h
+17(describ)h
+1(e,)h
+20(as)h
+18(cleanly)h
+18(as)h
+18(p)h
+1(ossible,)h
+18(only)h
+17(those)h
+19(comp)h
+1(onen)h
+-1(ts)h
+17(in)h
+17(the)h
+19(sp)h
+1(eci\014cation)h
+18(\014le)h
+18(in)h
+-1(tended)h
+19(to)h
+17(b)h
+1(e)h
+0 336(presen)s
+-1(ted)h
+16(to)h
+14(the)h
+14(clien)h
+-1(t.)h
+0 411(In)s
+14(a)h
+13(n)h
+-1(utshell,)h
+14(the)h
+14(pac)h
+-1(k)h
+-2(age)h
+14(exp)h
+1(orts)h
+15(an)h
+14(exception)h
+14(t)h
+-1(yp)h
+1(e,)h
+14(and)h
+14(macros)h
+13(to)h
+14(raise)h
+14(and)h
+13(catc)h
+-1(h)h
+15(exceptions.)h
+298 511([18])s
+590 610([4])s
+473 760([19])s
+359 809([20])s
+416 859([32])s
+415 909([22])s
+829 959([23])s
+454 1009([30])s
+484 1059([33])s
+0 1445(The)s
+17(sp)h
+1(eci\014cation)h
+17(\014le)h
+17(requires)h
+18(just)h
+16(the)h
+17(follo)h
+-1(wing)h
+14(includes.)h
+27(The)h
+186(include)h
+17(\014le)h
+16(con)h
+-1(tains)h
+17(basic)h
+16(C)h
+17(st)h
+-1(yle)h
+0 1494(stu\013.)s
+18(The)h
+12(ANSI)h
+12(standard)h
+199(include)h
+12(\014le)h
+12(\(ANSI)h
+12(Standard)h
+12(Section)h
+12(7.6\))h
+11(is)h
+12(required)h
+12(b)h
+1(ecause)h
+14(the)h
+0 1544(and)s
+180(functions/macros)h
+13(are)h
+14(used)h
+15(to)h
+14(implem)h
+-1(en)h
+-1(t)h
+12(the)h
+14(pac)h
+-1(k)h
+-2(age.)h
+390 1644([19])s
+0 2130(Under)s
+17(this)h
+16(pac)h
+-1(k)h
+-2(age,)h
+16(eac)h
+-1(h)h
+16(exception)h
+17(is)h
+16(represented)h
+18(b)h
+-1(y)h
+16(an)h
+16(explicit)h
+15(ob)h
+2(ject)h
+17(that)h
+16(resides)h
+18(in)h
+15(memory)h
+-4(.)h
+23(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+0 2179(the)s
+12(pac)h
+-1(k)h
+-2(age)h
+12(do)h
+1(es)h
+12(not)h
+12(exp)h
+1(ort)h
+12(this)h
+12(ob)h
+2(ject)h
+12(t)h
+-1(yp)h
+1(e.)h
+18(Lik)h
+-1(e)h
+11(man)h
+-1(y)h
+10(C)h
+12(pac)h
+-1(k)h
+-2(ages)h
+11(that)h
+12(exp)h
+1(ort)h
+12(abstract)h
+13(t)h
+-1(yp)h
+1(es,)h
+13(this)h
+11(pac)h
+-1(k)h
+-2(age)h
+0 2229(exp)s
+1(orts)h
+21(only)h
+19(a)h
+19(p)h
+1(oin)h
+-1(ter-to-ob)h
+2(ject)h
+21(t)h
+-1(yp)h
+1(e,)h
+21(the)h
+21(in)h
+-1(ten)h
+-1(t)h
+19(b)h
+1(eing)h
+20(that)h
+20(the)h
+21(clien)h
+-1(t)h
+19(should)h
+20(only)h
+19(ev)h
+-1(er)h
+21(manipul)h
+-1(ate)h
+18(the)h
+0 2279(abstract)s
+15(ob)h
+2(jects)h
+16(through)h
+14(p)h
+1(oin)h
+-1(ters.)h
+20(Th)h
+-1(us,)h
+14(this)h
+14(pac)h
+-1(k)h
+-2(age)h
+14(exp)h
+1(orts)h
+16(a)h
+14(p)h
+1(oin)h
+-1(ter-to-exception)h
+14(t)h
+-1(yp)h
+1(e)h
+134(,)h
+14(but)h
+14(do)h
+1(es)h
+0 2329(not)s
+14(exp)h
+1(ort)h
+14(a)h
+14(corresp)h
+1(onding)h
+15(exception)h
+14(t)h
+-1(yp)h
+1(e)h
+96(.)h
+0 2403(Most)s
+13(pac)h
+-1(k)h
+-2(ages)h
+13(that)h
+14(exp)h
+1(ort)h
+13(abstract)h
+14(ob)h
+2(jects)h
+15(b)h
+-1(y)h
+12(p)h
+1(oin)h
+-1(ter)h
+14(t)h
+-1(yp)h
+1(e)h
+13(also)h
+13(exp)h
+1(ort)h
+13(functions)h
+14(to)h
+12(dynamically)h
+11(create)h
+14(and)h
+0 2453(destro)s
+-1(y)h
+15(the)h
+15(abstract)h
+15(ob)h
+2(jects.)h
+21(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(in)h
+14(the)h
+15(case)h
+16(of)h
+13(exceptions)h
+16(there)h
+15(is)h
+15(no)h
+14(need)h
+15(for)h
+14(this.)h
+20(In)h
+14(fact)h
+14(there)h
+16(is)h
+14(a)h
+0 2503(p)s
+1(ositiv)h
+-1(e)h
+13(need)h
+15(to)h
+14(create)h
+15(exceptions)h
+15(at)h
+13(compile)h
+12(time)h
+13(and)h
+13(bind)h
+14(them)h
+13(statically)h
+12(\(Dynamic)h
+12(creation)h
+14(w)h
+-1(ould)h
+13(mean)h
+0 2553(that)s
+15(an)h
+15(exception)h
+15(w)h
+-1(ould)h
+14(ha)h
+-1(v)h
+-1(e)h
+15(to)h
+15(b)h
+1(e)h
+15(created)h
+16(b)h
+1(efore)h
+16(b)h
+1(eing)h
+15(raised,)h
+15(whic)h
+-1(h)h
+15(w)h
+-1(ould)h
+14(b)h
+1(e)h
+15(a)h
+-1(wkw)h
+-1(ard)h
+14(to)h
+15(co)h
+1(ordinate)h
+15(at)h
+0 2603(run)s
+12(time\).)h
+16(So,)h
+12(instead)h
+12(of)h
+11(exp)h
+1(orting)h
+12(a)h
+12(function)h
+11(to)h
+12(create)h
+13(an)h
+12(exception,)h
+12(this)h
+12(pac)h
+-1(k)h
+-2(age)h
+12(exp)h
+1(orts)h
+13(macros)h
+11(that)h
+12(allo)h
+-1(w)h
+0 2653(the)s
+17(clien)h
+-1(t)h
+17(to)h
+16(statically)h
+16(create)h
+18(\(i.e.)h
+25(at)h
+16(compile)h
+15(time\))h
+16(a)h
+16(new)h
+17(\(hidden\))h
+17(exception)h
+17(ob)h
+2(ject)h
+17(and,)h
+17(sim)h
+-1(ultaneously)h
+-4(,)h
+954 2770(13)s
+13 2 272 909 r
+13 2 390 1009 r
+14 2 1674 2279 r
+14 2 1734 2279 r
+14 2 833 2329 r
+13 @eop
+14 @bop0
+cmbx10.432 sf
+[<7FFFF81FFFF07FFFF81FFFF07FFFF81FFFF001FF0000780000FF8000F000007FC001E0
+00007FC001C000003FE003C000001FF0078000000FF80F0000000FF80E00000007FC1E00
+000003FE3C00000003FE7800000001FF7000000000FFF0000000007FE0000000007FC000
+0000003FE0000000001FF0000000001FF0000000001FF8000000001FFC000000003FFE00
+0000007BFE00000000F1FF00000000E0FF80000001E0FFC0000003C07FC0000007803FE0
+000007001FF000000F001FF000001E000FF800003C0007FC0000380003FE0000780003FE
+0000F00001FF0000E00000FF80FFFF801FFFFEFFFF801FFFFEFFFF801FFFFE>
+48 41 -2 40 52] 88 dc
+cmsl10.300 sf
+[<0FFFFC0000F80F0000F0038000F003C000F001C000F001C000F001C001E003C001E003
+C001E003C001E0038001E0070001E00E0003C03C0003FFE00003C0000003C0000003C000
+0003C000000780000007800000078000000780000007800000078000000F0000000F8000
+00FFF00000>
+32 28 -2 27 28] 80 dc
+[<0007F00000381C0000E00E0001C0030003800380070001C00E0001C01E0001E01C0000
+E03C0000E0380000E0780000F0780000F0780000F0F00001E0F00001E0F00001E0F00001
+E0F00003C0F00003C0F00003C0700007807000070078000F0038001E003C001C001C0038
+000E00E0000383800000FE0000>
+32 30 -4 28 32] 79 dc
+[<0FFFC000F80000F00000F00000F00000F00000F00001E00001E00001E00001E00001E0
+0001E00003C00003C00003C00003C00003C00003C0040780040780040780040780080780
+080780180F00380F00F0FFFFF0>
+24 28 -2 27 26] 76 dc
+[<000400080030006000C0008001800300060006000C000C001800180038003000300070
+007000600060006000E000E000E000E000E000E000E000E0006000600060006000200030
+003000180008000C0004000200>
+16 42 -4 30 16] 40 dc
+[<0100008000400060002000300010001800180018001C000C000C000C000C000C000C00
+0C000C001C001C001C0018001800380038003000300070006000E000C001C00180030003
+0006000C001800300060008000>
+16 42 0 30 16] 41 dc
+cmr10.300 sf
+[<60F0F0600000000000000000000060F0F0701010101020204080>
+8 26 -4 17 12] 59 dc
+14 @bop1
+cmbx10.300 sf
+643 1187(Z)s
+cmsy10.300 sf
+356 191(\021)s
+62 241(f)s
+83 490(g)s
+684 1187(\021)s
+62 1237(f)s
+83 1536(g)s
+411 2096(\021)s
+62 2146(f)s
+83 2445(g)s
+cmbx10.432 sf
+0 1735(3.3)s
+24(Macro)h
+24(EX)h
+24(RAISE)h
+cmr7.300 sf
+0 540(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(18.)h
+0 1586(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+0 2495(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(18.)h
+cmsl10.300 sf
+0 191(Exception)s
+14(t)h
+-1(yp)h
+1(e)h
+83 291(T)s
+-1(yp)h
+1(e)h
+14(p)h
+15(ex)h
+16(t)h
+715 340(Implem)s
+-1(en)h
+-1(tation)h
+12(of)h
+13(EX)h
+15(EX)h
+-1(CEPT)h
+715 390(Implem)s
+-1(en)h
+-1(tation)h
+12(of)h
+13(EX)h
+15(EXPOR)h
+-3(T)h
+715 440(Implem)s
+-1(en)h
+-1(tation)h
+12(of)h
+13(EX)h
+15(LOCAL)h
+0 1187(Example)s
+12(exception)h
+15(declarations)h
+0 2096(Macro)s
+14(EX)h
+15(RAISE)h
+584 2246(F)s
+-3(ast)h
+14(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+12(of)h
+14(EX)h
+15(RAISE\(P)h
+15(EX\))h
+584 2345(Safe)s
+14(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+12(of)h
+14(EX)h
+15(RAISE\(P)h
+15(EX\))h
+cmtt10.300 sf
+610 42(p)s
+16(ex)h
+15(t)h
+83 340(#define)s
+20(EX_EXCEPT\(NAME)h
+-1(\))h
+83 390(#define)s
+20(EX_EXPORT\(NAME)h
+-1(,DESC)h
+-1(\))h
+83 440(#define)s
+20(EX_LOCAL\(NAME,)h
+-1(DESC\))h
+225 614(EX)s
+15(EXPORT)h
+92(EX)h
+15(LOCAL)h
+1229 664(DESC)s
+378 764(main\(\))s
+801(NAME)h
+0 863(EX)s
+15(EXPORT)h
+93(EX)h
+16(LOCAL)h
+468(EX)h
+15(EXPORT)h
+1347 913(EX)s
+15(LOCAL)h
+244(EX)h
+15(EXPORT)h
+280 1013(EX)s
+16(EXCEPT)h
+83 1287(In)s
+21(sloth.h:)h
+148 1337(EX_EXCEPT\(sloth)s
+-1(_exc)h
+-1(eptio)h
+-1(n\);)h
+83 1436(In)s
+21(sloth.c:)h
+148 1486(EX_EXPORT\(sloth)s
+-1(_exc)h
+-1(eptio)h
+-1(n,"Sl)h
+-1(oth)h
+20(exception"\))h
+-1(;)h
+201 1822(EX)s
+15(RAISE)h
+83 2196(#if)s
+21(_EX_FAST)h
+83 2246(#define)s
+20(EX_RAISE\(P_EX\))h
+83 2296(#else)s
+83 2345(#define)s
+20(EX_RAISE\(P_EX\))h
+83 2395(#endif)s
+cmr10.300 sf
+0 42(de\014ne)s
+13(a)h
+12(constan)h
+-1(t)h
+12(p)h
+1(oin)h
+-1(ter)h
+12(\(of)h
+12(t)h
+-1(yp)h
+1(e)h
+131(\))h
+12(that)h
+12(p)h
+1(oin)h
+-1(ts)h
+12(to)h
+12(the)h
+12(new)h
+13(exception)h
+13(ob)h
+2(ject,)h
+12(and)h
+12(to)h
+12(whic)h
+-1(h)h
+12(an)h
+12(iden)h
+-1(ti\014er)h
+0 91(of)s
+13(the)h
+15(clien)h
+-1(t)h
+14(programm)h
+-1(er's)h
+12(c)h
+-1(ho)h
+1(osing)h
+14(can)h
+14(b)h
+1(e)h
+14(b)h
+1(ound.)h
+18(Here)h
+16(are)h
+14(the)h
+14(macros)h
+13(that)h
+14(do)h
+14(this.)h
+276 191([20])s
+301 291([40])s
+1313 340([41])s
+1316 390([42])s
+1281 440([43])s
+0 614(The)s
+14(macros)h
+215(and)h
+194(eac)h
+-1(h)h
+14(create)h
+15(a)h
+13(brand)h
+13(new)h
+14(exception)h
+14(ob)h
+2(ject.)h
+18(They)h
+14(can)h
+13(b)h
+1(e)h
+14(called)h
+13(only)h
+12(at)h
+0 664(places)s
+15(in)h
+13(a)h
+14(mo)h
+1(dule)h
+12(where)h
+15(v)h
+-2(ariables)h
+13(can)h
+15(b)h
+1(e)h
+14(declared.)h
+19(The)h
+15(argumen)h
+-1(t)h
+114(m)h
+-1(ust)h
+13(b)h
+1(e)h
+14(a)h
+14(one-line)h
+13(constan)h
+-1(t)h
+15(string)h
+0 714(that)s
+14(describ)h
+1(es)h
+16(the)h
+15(exception;)h
+14(it)h
+14(will)h
+12(b)h
+1(e)h
+15(written)h
+15(out)h
+14(if)h
+13(the)h
+14(exception)h
+15(is)h
+14(in)h
+-1(v)h
+-1(olv)h
+-1(ed)h
+13(in)h
+13(some)h
+14(kind)h
+13(of)h
+14(error)h
+14(\(e.g.)h
+19(if)h
+0 764(it)s
+15(propagates)h
+15(out)h
+15(of)h
+161(and)h
+15(has)h
+15(to)h
+15(b)h
+1(e)h
+15(describ)h
+1(ed)h
+17(to)h
+15(the)h
+16(user\).)h
+23(The)h
+118(argumen)h
+-1(t)h
+14(m)h
+-1(ust)h
+14(b)h
+1(e)h
+16(a)h
+15(program)h
+0 814(iden)s
+-1(ti\014er)h
+19(whic)h
+-1(h)h
+19(will)h
+17(b)h
+1(e)h
+20(the)h
+19(name)h
+18(of)h
+18(the)h
+19(p)h
+1(oin)h
+-1(ter)h
+19(constan)h
+-1(t)h
+20(that)h
+19(will)h
+17(p)h
+1(oin)h
+-1(t)h
+18(to)h
+19(the)h
+19(new)h
+20(exception.)h
+33(Macros)h
+204 863(and)s
+195(are)h
+14(iden)h
+-1(tical)h
+13(except)h
+15(that)h
+218(mak)h
+-1(es)h
+12(the)h
+15(constan)h
+-1(t)h
+14(p)h
+1(oin)h
+-1(ter)h
+14(globally)h
+11(visible)h
+13(in)h
+0 913(the)s
+15(program)h
+14(\(i.e.)h
+20(it)h
+15(is)h
+15(presen)h
+-1(t)h
+16(in)h
+14(the)h
+16(sym)h
+-1(b)h
+1(ol)h
+13(table)h
+15(at)h
+14(link)h
+14(time\),)h
+14(whereas)h
+199(do)h
+1(es)h
+16(not.)h
+20(If)h
+0 963(has)s
+17(b)h
+1(een)h
+18(used,)h
+18(the)h
+17(constan)h
+-1(t)h
+18(p)h
+1(oin)h
+-1(ter)h
+17(to)h
+16(the)h
+18(exception)h
+17(can)h
+17(b)h
+1(e)h
+17(made)h
+16(visible)h
+16(in)h
+17(other)h
+17(mo)h
+1(dules)h
+16(b)h
+-1(y)h
+16(adding)h
+16(an)h
+0 1013(instance)s
+15(of)h
+13(the)h
+218(macro)h
+13(in)h
+13(the)h
+15(header)h
+15(\014le)h
+14(of)h
+13(the)h
+14(mo)h
+1(dule)h
+13(con)h
+-1(taining)h
+13(the)h
+14(exception)h
+15(de\014nition.)h
+0 1088(Here)s
+15(is)h
+14(an)h
+14(example)h
+12(of)h
+13(a)h
+14(global)h
+12(exception)h
+15(declaration:)h
+577 1187([21])s
+0 1822(The)s
+10(macro)h
+185(raises)h
+10(its)h
+10(argumen)h
+-1(t)h
+8(exception.)h
+17(The)h
+10(argumen)h
+-1(t)h
+8(exception)h
+10(m)h
+-1(ust)h
+9(b)h
+1(e)h
+10(an)h
+9(expression)h
+10(ev)h
+-2(aluating)h
+0 1872(to)s
+13(a)h
+12(p)h
+1(oin)h
+-1(ter)h
+13(to)h
+13(the)h
+14(exception)h
+13(to)h
+13(b)h
+1(e)h
+14(raised.)h
+18(See)h
+13(a)h
+13(later)h
+13(section)h
+14(for)h
+12(the)h
+14(precise)h
+14(seman)h
+-1(tics)h
+13(of)h
+12(an)h
+12(exception)h
+14(raise.)h
+0 1947(This)s
+14(macro)h
+12(is)h
+14(syn)h
+-1(tactically)h
+13(equiv)h
+-2(alen)h
+-1(t)h
+13(to)h
+14(a)h
+14(comp)h
+1(ound)h
+12(statemen)h
+-1(t.)h
+18(It)h
+14(is)h
+14(guaran)h
+-1(teed)h
+14(that)h
+14(its)h
+14(argumen)h
+-1(t)h
+13(will)h
+12(b)h
+1(e)h
+0 1997(ev)s
+-2(aluated)h
+14(exactly)h
+14(once.)h
+332 2096([22])s
+1356 2246([45])s
+1354 2345([44])s
+954 2770(14)s
+14 2 635 42 r
+14 2 695 42 r
+13 2 215 291 r
+13 2 270 291 r
+13 2 1123 340 r
+13 2 1123 390 r
+13 2 1123 440 r
+14 2 272 614 r
+14 2 555 614 r
+14 2 47 863 r
+14 2 331 863 r
+14 2 969 863 r
+14 2 1394 913 r
+14 2 1807 913 r
+14 2 327 1013 r
+21 2 427 1735 r
+14 2 248 1822 r
+13 2 189 2096 r
+13 2 1080 2246 r
+13 2 1267 2246 r
+13 2 1078 2345 r
+13 2 1265 2345 r
+14 @eop
+15 @bop0
+cmti10.300 sf
+[<01FFFE00003C0780003803C0003801C0003801C0003801C0007001C0007003C0007003
+C00070078000E0070000E00E0000E03C0000FFF80001C01C0001C00E0001C00F0001C00F
+0003800F0003800F0003800F0003800F0007001E0007001C0007003C00070078000E01E0
+00FFFF8000>
+32 28 -3 27 29] 66 dc
+cmbx10.432 sf
+[<FFFFFFF80000FFFFFFFF8000FFFFFFFFC00003F8001FF00003F8000FF80003F80007FC
+0003F80003FC0003F80003FC0003F80003FE0003F80001FE0003F80001FE0003F80001FE
+0003F80003FE0003F80003FC0003F80003FC0003F80007F80003F8000FF00003F8001FE0
+0003F800FFC00003FFFFFE000003FFFFFFE00003F80007F00003F80003FC0003F80001FE
+0003F80001FE0003F80000FF0003F80000FF0003F80000FF8003F80000FF8003F80000FF
+8003F80000FF8003F80000FF8003F80000FF8003F80000FF0003F80001FF0003F80003FE
+0003F80007FC0003F8001FF800FFFFFFFFF000FFFFFFFFC000FFFFFFFE0000>
+48 41 -3 40 49] 66 dc
+[<FFFFFFF80000FFFFFFFF8000FFFFFFFFE00003FC001FF80003FC0007FC0003FC0001FE
+0003FC0000FF0003FC00007F8003FC00003FC003FC00001FC003FC00001FE003FC00001F
+E003FC00000FF003FC00000FF003FC00000FF003FC00000FF003FC00000FF803FC00000F
+F803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000F
+F803FC00000FF803FC00000FF803FC00000FF003FC00000FF003FC00000FF003FC00001F
+E003FC00001FE003FC00001FC003FC00003FC003FC00007F8003FC00007F0003FC0001FE
+0003FC0003FC0003FC001FF800FFFFFFFFE000FFFFFFFF8000FFFFFFFC0000>
+48 41 -3 40 53] 68 dc
+cmsl10.300 sf
+[<0FFFFC0000F8070000F0038000F003C000F001C000F001E000F001E001E001C001E003
+C001E003C001E0078001E00F0001E03C0003FFF80003C01E0003C00F0003C0078003C007
+8003C007800780078007800780078007800780078007800F0007801E000F003C000F0078
+00FFFFE000>
+32 28 -2 27 29] 66 dc
+[<0007F010001C0C300070026000C001E0038000E0070000E00E0000600E0000601C0000
+403C00004038000040780000007800000078000000F0000000F0000000F0000000F000FF
+F0F0000F80F0000780F0000F0070000F0070000F0038000F0038000F001C001F000C001E
+000600660003818200007E0000>
+32 30 -4 28 33] 71 dc
+[<0FF807FE00F800F000FC006000BC004000BE0040009E0040009E0040010F0080010F00
+8001078080010780800103C0800103C0800201E1000201E1000200F1000200F1000200F9
+000200790004007E0004003E0004003E0004001E0004001E0004000E000C000C001E0004
+00FF800400>
+32 28 -2 27 31] 78 dc
+[<FFF0FFE0FF801F001F003C000F001F0018000F000F0010000F001F0010000F001F0020
+000F002F0020000F002F0060000F804F00400007804F8040000780878080000780878080
+0007810781000007810781000007820782000007C20782000003C407C4000003C403C400
+0003C803C8000003C803C8000003D803D0000003D003D0000003F003E0000001E003E000
+0001E001C0000001C001C0000001C001800000018001800000018001800000>
+48 29 -5 27 43] 87 dc
+cmtt10.300 sf
+[<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0>
+8 32 -9 28 22] 124 dc
+15 @bop1
+cmbx10.300 sf
+537 1499(Z)s
+cmsy10.300 sf
+824 328(\021)s
+62 378(f)s
+83 1274(g)s
+578 1499(\021)s
+62 1548(f)s
+83 1847(g)s
+cmti10.300 sf
+506 2022(at)s
+15(most)h
+0 2607(Basic)s
+18(semantics:)h
+0 2657(normal)s
+16(c)h
+-2(o)h
+-2(de)h
+cmbx10.432 sf
+0 42(3.4)s
+24(Exception)h
+22(Blo)h
+2(c)h
+-2(k)h
+22(Construct)h
+0 2246(3.5)s
+24(De\014niti)h
+-1(on)h
+22(of)h
+23(Sem)h
+-1(an)h
+-2(tic)h
+-1(s)h
+cmr7.300 sf
+0 1324(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(18.)h
+0 1897(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+cmsl10.300 sf
+0 328(Macros)s
+14(for)h
+14(constructing)h
+15(exception)h
+15(blo)h
+1(c)h
+-1(ks)h
+83 527(F)s
+-3(ast)h
+14(impl)h
+-1(emen)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(EX)h
+16(BEGIN)h
+584 577(F)s
+-3(ast)h
+14(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+12(of)h
+14(EX)h
+15(F)h
+-1(OR)h
+-1(GET)h
+584 627(F)s
+-3(ast)h
+14(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+12(of)h
+14(EX)h
+15(WHEN\(P)h
+15(EX\))h
+584 677(F)s
+-3(ast)h
+14(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+12(of)h
+14(EX)h
+15(OTHERS)h
+584 726(F)s
+-3(ast)h
+14(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+12(of)h
+14(EX)h
+15(END)h
+584 776(F)s
+-3(ast)h
+14(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+12(of)h
+14(EX)h
+15(POP)h
+83 926(Safe)s
+14(implem)h
+-1(en)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(EX)h
+16(BEGIN)h
+584 976(Safe)s
+14(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+12(of)h
+14(EX)h
+15(F)h
+-1(OR)h
+-1(GET)h
+584 1025(Safe)s
+14(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+12(of)h
+14(EX)h
+15(WHEN\(P)h
+16(EX\))h
+584 1075(Safe)s
+14(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+12(of)h
+14(EX)h
+15(OTHERS)h
+584 1125(Safe)s
+14(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+12(of)h
+14(EX)h
+15(END)h
+584 1175(Safe)s
+14(implem)h
+-1(en)h
+-1(tatio)h
+-1(n)h
+12(of)h
+14(EX)h
+15(POP)h
+0 1499(Syn)s
+-1(tax)h
+14(of)h
+13(exception)h
+14(blo)h
+1(c)h
+-1(k)h
+cmtt10.300 sf
+83 428(#if)s
+21(_EX_FAST)h
+83 477(#define)s
+20(EX_BEGIN)h
+86(\\)h
+83 577(#define)s
+20(EX_FORGET)h
+83 627(#define)s
+20(EX_WHEN\(P_EX\))h
+83 677(#define)s
+20(EX_OTHERS)h
+83 726(#define)s
+20(EX_END)h
+83 776(#define)s
+20(EX_POP)h
+83 826(#else)s
+83 876(#define)s
+20(EX_BEGIN)h
+86(\\)h
+83 976(#define)s
+20(EX_FORGET)h
+83 1025(#define)s
+20(EX_WHEN\(P_EX\))h
+83 1075(#define)s
+20(EX_OTHERS)h
+83 1125(#define)s
+20(EX_END)h
+83 1175(#define)s
+20(EX_POP)h
+83 1225(#endif)s
+83 1598(compound_stat)s
+-1(ement)h
+19(=)h
+22(other_forms)h
+-1(_of_c)h
+-1(ompou)h
+-1(nd_st)h
+-1(atem)h
+-1(ent)h
+20(|)h
+21(exception_bloc)h
+-1(k)h
+497 1648(|)s
+22(EX_POP)h
+83 1698(exception_blo)s
+-1(ck)h
+20(=)h
+21("EX_BEGIN")h
+20(c_code)h
+21("EX_FORGET")h
+19({)h
+22(handler)h
+20(})h
+22("EX_END")h
+83 1748(handler)s
+195(=)h
+21("EX_WHEN\(")h
+20(expression)h
+20("\)")h
+21(c_code)h
+83 1797(handler)s
+195(=)h
+21("EX_OTHERS")h
+705 1972(EX)s
+15(WHEN)h
+493(p)h
+16(ex)h
+15(t)h
+210 2096(EX)s
+15(POP)h
+1399 2607(EX)s
+15(BEGIN)h
+101(EX)h
+15(FORGET)h
+cmr10.300 sf
+0 129(The)s
+12(only)h
+10(w)h
+-1(a)h
+-1(y)h
+11(to)h
+11(catc)h
+-1(h)h
+12(one)h
+11(or)h
+11(more)h
+11(exceptions)h
+12(is)h
+11(to)h
+11(declare)h
+12(a)h
+11(construct)h
+13(that)h
+12(encloses)h
+12(the)h
+12(co)h
+1(de)h
+12(that)h
+12(could)h
+11(raise)h
+0 178(the)s
+13(exceptions,)h
+14(along)h
+12(with)h
+12(the)h
+13(handler)h
+13(co)h
+1(de.)h
+19(This)h
+12(construct)h
+15(is)h
+12(called)h
+13(an)h
+12(exception)h
+14(blo)h
+1(c)h
+-1(k)h
+12(and)h
+13(is)h
+12(implem)h
+-1(en)h
+-1(ted)h
+0 228(using)s
+14(a)h
+13(small)h
+12(set)h
+15(of)h
+13(prepro)h
+1(cess)h
+1(or)h
+15(macros.)h
+18(Here)h
+15(they)h
+14(are:)h
+746 328([23])s
+732 527([52])s
+1275 577([53])s
+1361 627([54])s
+1270 677([55])s
+1186 726([56])s
+1183 776([57])s
+730 926([46])s
+1273 976([47])s
+1360 1025([48])s
+1268 1075([49])s
+1184 1125([50])s
+1181 1175([51])s
+0 1399(These)s
+15(macros)h
+13(m)h
+-1(ust)h
+13(b)h
+1(e)h
+15(used)h
+14(in)h
+14(accordance)h
+15(with)h
+14(the)h
+14(follo)h
+-1(wing)h
+11(syn)h
+-1(tax:)h
+471 1499([24])s
+0 1972(The)s
+14(argumen)h
+-1(t)h
+13(to)h
+13(eac)h
+-1(h)h
+14(instan)h
+-1(tiation)h
+13(of)h
+173(m)h
+-1(ust)h
+13(b)h
+1(e)h
+14(an)h
+13(rv)h
+-2(alue)h
+14(of)h
+13(t)h
+-1(yp)h
+1(e)h
+133(.)h
+18(It)h
+13(is)h
+14(guaran)h
+-1(teed)h
+14(that)h
+14(this)h
+0 2022(argumen)s
+-1(t)h
+13(will)h
+12(b)h
+1(e)h
+15(ev)h
+-2(aluated)h
+163(once.)h
+0 2096(The)s
+14(macro)h
+151(should)h
+14(b)h
+1(e)h
+15(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(only)h
+13(from)h
+12(within)h
+13(the)h
+15(normal)h
+11(co)h
+1(de)h
+15(of)h
+13(an)h
+14(exception)h
+15(blo)h
+1(c)h
+-1(k.)h
+0 2333(This)s
+16(section)h
+17(con)h
+-1(tains)h
+16(a)h
+17(detailed)h
+16(English)h
+16(description)h
+17(of)h
+15(the)h
+17(seman)h
+-1(tics)h
+16(of)h
+16(the)h
+17(exception)h
+17(constructs)h
+18(pro)h
+-1(vided)h
+0 2383(b)s
+-1(y)h
+17(this)h
+18(pac)h
+-1(k)h
+-2(age.)h
+29(Normally)h
+15(this)h
+18(sort)h
+18(of)h
+17(information)h
+15(w)h
+-1(ould)h
+17(b)h
+1(e)h
+18(laced)h
+18(throughout)h
+18(the)h
+18(pac)h
+-1(k)h
+-2(age)h
+18(sp)h
+1(eci\014cation.)h
+0 2433(Ho)s
+-1(w)h
+-1(ev)h
+-1(er,)h
+16(in)h
+14(this)h
+16(pac)h
+-1(k)h
+-2(age,)h
+14(there)h
+17(are)h
+16(so)h
+15(man)h
+-1(y)h
+13(sp)h
+1(ecial)h
+16(cases)h
+17(that)h
+15(it)h
+15(w)h
+-1(as)h
+15(though)h
+-1(t)h
+15(b)h
+1(est)h
+16(to)h
+16(collect)h
+15(all)h
+14(the)h
+16(tric)h
+-1(ky)h
+0 2482(stu\013)s
+15(in)h
+14(one)h
+14(place.)h
+19(The)h
+15(reader)h
+16(is)h
+14(advised)h
+14(to)h
+14(study)h
+15(this)h
+14(section)h
+15(thoroughly)h
+-3(,)h
+13(as)h
+14(a)h
+14(lac)h
+-1(k)h
+14(of)h
+13(kno)h
+-1(wledge)h
+14(ab)h
+1(out)h
+14(the)h
+0 2532(precise)s
+15(seman)h
+-1(tics)h
+14(of)h
+13(the)h
+15(exception)h
+14(construct)h
+16(can)h
+14(b)h
+1(e)h
+14(v)h
+-1(ery)h
+15(dangerous.)h
+333 2607(When)s
+17(con)h
+-1(trol)h
+18(hits)h
+17(an)h
+17(exception)h
+18(blo)h
+1(c)h
+-1(k,)h
+18(the)h
+18(co)h
+1(de)h
+18(b)h
+1(et)h
+-1(w)h
+-1(een)h
+205(and)h
+224(\(the)h
+220 2657(\))s
+16(is)h
+16(executed.)h
+24(If,)h
+15(during)h
+16(the)h
+16(execution)h
+16(of)h
+15(the)h
+16(normal)h
+13(co)h
+1(de,)h
+17(no)h
+15(exceptions)h
+17(propagate)h
+15(up)h
+16(to)h
+15(this)h
+954 2770(15)s
+13 2 578 527 r
+13 2 1080 577 r
+13 2 1080 627 r
+13 2 1272 627 r
+13 2 1080 677 r
+13 2 1080 726 r
+13 2 1080 776 r
+13 2 576 926 r
+13 2 1078 976 r
+13 2 1078 1025 r
+13 2 1270 1025 r
+13 2 1078 1075 r
+13 2 1078 1125 r
+13 2 1078 1175 r
+14 2 752 1972 r
+14 2 1370 1972 r
+14 2 1430 1972 r
+14 2 257 2096 r
+14 2 1446 2607 r
+14 2 1716 2607 r
+15 @eop
+16 @bop0
+cmti10.300 sf
+[<0000180000001800000038000000380000007800000078000000B8000001B800000138
+000002380000023C0000041C0000041C0000081C0000181C0000101C0000201C0000201C
+00007FFC0000401C0000801C0001801C0001001C0002001C0002001C0004000E000C000E
+001C001E00FF00FFC0>
+32 29 -2 28 31] 65 dc
+[<FFC0FFC0FFC0>
+16 3 -3 9 15] 45 dc
+[<03C4062C0C3C181C3838303870387038E070E070E070E070E0E0C0E0C0E061E063C03D
+C001C001C0038003800380038007803FF0>
+16 26 -5 17 19] 113 dc
+[<01FC03FE001C0070003C0060002E0040002E0040002E00400047008000470080004700
+80004380800083810000838100008181000081C1000101C2000101C2000100E2000100E2
+000200E4000200740002007400020074000400380004003800040038000C0018001C0010
+00FF801000>
+32 28 -3 27 31] 78 dc
+cmr10.300 sf
+[<FFF007FC0F8001E00780008007C0018003C0010003E0020001F0020000F0040000F804
+0000780800007C1800003C1000001E2000001F2000000F4000000FC00000078000000780
+000007800000078000000780000007800000078000000780000007800000078000000780
+00007FF800>
+32 28 0 27 31] 89 dc
+[<08081010202040404040808080808080B0B0F8F878783030>
+16 12 -6 28 21] 92 dc
+[<6060F0F0F8F8686808080808080810101010202040408080>
+16 12 -1 28 21] 34 dc
+[<1FFF00F800780078007800780078007800780078007800780078007800780078007800
+780078007800787078F878F878F878F0F040E021C01F00>
+16 29 -1 27 21] 74 dc
+16 @bop1
+cmbx10.300 sf
+1099 1436(Z)s
+751 2557(Z)s
+cmsy10.300 sf
+1140 1436(\021)s
+62 1486(f)s
+83 1934(g)s
+793 2557(\021)s
+62 2607(f)s
+cmr7.300 sf
+0 1984(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+cmsl10.300 sf
+0 1436(Example)s
+12(of)h
+14(a)h
+13(correct)h
+16(direct)h
+15(exit)h
+13(from)h
+13(an)h
+13(exception)h
+15(blo)h
+1(c)h
+-1(k)h
+0 2557(Example)s
+12(of)h
+14(goto)h
+13(in)h
+13(exception)h
+15(handler)h
+cmtt10.300 sf
+857 340(main\(\))s
+0 515(EX)s
+15(FORGET)h
+1328 714(setjmp)s
+97(longjmp)h
+1602 764(auto)s
+0 863(EX)s
+15(FORGET)h
+666 1137(goto)s
+687(return)h
+146 1187(longjmp)s
+315(exit)h
+453 1337(EX)s
+16(POP)h
+83 1536(EX_BEGIN)s
+148 1586(add_char\(buffer)s
+-1(,'x')h
+-1(\);)h
+148 1636(if)s
+22(\(is_full\(buf)h
+-1(fer\))h
+-1(\))h
+20({EX_POP;)h
+20(return)h
+21(TRUE;})h
+83 1685(EX_FORGET)s
+148 1735(EX_WHEN\(buf_ful)s
+-1(\))h
+214 1785(return)s
+20(TRUE;)h
+83 1835(EX_END)s
+83 1885(return)s
+21(FALSE;)h
+0 2059(EX)s
+15(POP)h
+362 2233(return)s
+21(TRUE)h
+985(EX)h
+15(POP)h
+421 2283(return)s
+21(TRUE)h
+83 2657(EX_BEGIN)s
+cmti10.300 sf
+843 191(hand)s
+2(ler)h
+15(c)h
+-2(o)h
+-2(de)h
+0 465(State)s
+23(of)h
+22(the)h
+23(function:)h
+1385 515(A)s
+-1(l)h
+2(l)h
+18(ac)h
+-2(c)h
+-2(essible)h
+19(obje)h
+-2(cts)h
+19(have)h
+19(val-)h
+0 565(ues)s
+14(as)h
+13(of)h
+13(the)h
+14(time)h
+12(longjmp)h
+14(was)h
+13(c)h
+-2(al)h
+2(le)h
+-2(d,)h
+13(exc)h
+-2(ept)h
+13(that)h
+14(the)h
+13(values)h
+14(of)h
+13(obje)h
+-2(cts)h
+13(of)h
+13(automatic)h
+14(stor)h
+-2(age)h
+13(dur)h
+-2(ation)h
+13(that)h
+13(ar)h
+-2(e)h
+0 614(lo)s
+-2(c)h
+-2(al)h
+15(to)h
+16(the)h
+15(function)h
+17(c)h
+-2(ontaining)h
+16(the)h
+16(invo)h
+-2(c)h
+-2(ation)h
+16(of)h
+15(the)h
+16(c)h
+-2(orr)h
+-2(esp)h
+-2(onding)h
+16(setjmp)h
+15(macr)h
+-2(o)h
+16(that)h
+16(do)h
+16(not)h
+16(have)h
+16(volatile-)h
+0 664(quali\014e)s
+-2(d)h
+12(typ)h
+-2(e)h
+12(and)h
+12(have)h
+12(b)h
+-2(e)h
+-2(en)h
+12(change)h
+-2(d)h
+12(b)h
+-2(etwe)h
+-2(en)h
+12(the)h
+11(setjmp)h
+12(invo)h
+-2(c)h
+-2(ation)h
+12(and)h
+12(longjmp)h
+12(c)h
+-2(al)h
+2(l)h
+11(ar)h
+-2(e)h
+11(indeterminate.)h
+0 938(Dir)s
+-2(e)h
+-2(ct)h
+20(exits)h
+20(fr)h
+-2(om)h
+20(normal)h
+20(c)h
+-2(o)h
+-2(de:)h
+0 2134(No)s
+13(r)h
+-2(estrictions)h
+12(on)h
+14(exiting)h
+13(hand)h
+2(ler)h
+14(c)h
+-2(o)h
+-2(de:)h
+0 2408(Exc)s
+-2(eption)h
+17(hand)h
+2(ler)h
+17(c)h
+-2(o)h
+-2(de)h
+18(c)h
+-2(an)h
+17(jump)h
+17(to)h
+16(other)h
+17(exc)h
+-2(eption)h
+17(hand)h
+2(lers:)h
+cmr10.300 sf
+0 42(construct)s
+14(then,)h
+13(up)h
+1(on)h
+13(completion)h
+11(of)h
+12(the)h
+13(normal)h
+10(co)h
+1(de,)h
+13(execution)h
+14(of)h
+11(the)h
+14(en)h
+-1(tire)h
+13(construct)h
+14(terminates.)h
+17(If,)h
+12(during)h
+0 91(the)s
+12(execution)h
+13(of)h
+11(the)h
+13(normal)h
+9(co)h
+1(de,)h
+13(an)h
+11(exception)h
+13(is)h
+12(raised)h
+12(\(in)h
+11(the)h
+13(co)h
+1(de)h
+12(or)h
+12(an)h
+-1(y)h
+11(function)h
+12(it)h
+11(calls\))h
+12(that)h
+12(propagates)h
+0 141(up)s
+16(to)h
+15(this)h
+16(construct,)h
+18(con)h
+-1(trol)h
+15(exits)h
+16(the)h
+16(normal)h
+14(co)h
+1(de)h
+17(at)h
+15(that)h
+16(p)h
+1(oin)h
+-1(t)h
+15(and)h
+16(is)h
+15(transferred)h
+18(to)h
+15(the)h
+17(co)h
+1(de)h
+16(asso)h
+1(ciated)h
+0 191(with)s
+13(the)h
+15(handler)h
+13(for)h
+14(the)h
+14(exception)h
+14(raised)h
+14(\(the)h
+242(\).)h
+18(If)h
+13(there)h
+15(is)h
+14(no)h
+13(handler)h
+14(for)h
+13(the)h
+15(exception)h
+14(raised,)h
+0 241(the)s
+18(exception)h
+19(is)h
+17(propagated)h
+18(to)h
+18(the)h
+18(next)h
+18(dynamically)h
+15(enclosing)h
+18(handler)h
+18(in)h
+17(the)h
+18(dynamic)h
+16(c)h
+-1(hain.)h
+30(If)h
+17(there)h
+19(is)h
+0 291(a)s
+18(handler)h
+19(for)h
+18(the)h
+20(target)h
+19(exception,)h
+20(the)h
+19(co)h
+1(de)h
+19(asso)h
+1(ciated)h
+20(with)h
+18(that)h
+19(handler)h
+19(is)h
+18(executed)h
+21(and)h
+18(the)h
+19(construct)h
+0 340(terminates.)s
+24(If)h
+16(an)h
+16(exception)h
+16(propagates)h
+17(out)h
+16(of)h
+147(,)h
+15(the)h
+16(exception)h
+17(pac)h
+-1(k)h
+-2(age)h
+16(b)h
+1(om)h
+-1(bs)h
+15(the)h
+16(program)h
+15(with)h
+15(an)h
+0 390(error)s
+15(message)h
+13(explaining)h
+13(what)h
+14(has)h
+14(happ)h
+1(ened)h
+15(and)h
+13(prin)h
+-1(ting)h
+13(out)h
+14(the)h
+15(description)h
+14(of)h
+14(the)h
+14(o\013ending)h
+14(exception.)h
+443 465(Y)s
+-3(ou)h
+22(ma)h
+-1(y)h
+20(b)h
+1(e)h
+23(w)h
+-1(ondering)h
+22(wh)h
+-1(y)h
+22(the)h
+23(middle)h
+20(k)h
+-1(eyw)h
+-1(ord)h
+23(in)h
+21(the)h
+23(exception)h
+23(construct)h
+24(is)h
+191 515(.)s
+17(The)h
+18(reason)h
+19(is)h
+18(that)h
+19(the)h
+19(ANSI)h
+18(standard)h
+19(\(ANSI)h
+18(7.6.2.1\))h
+16(states:)h
+1844 664(These)s
+0 714(are)s
+16(strong)h
+16(w)h
+-1(ords!)h
+23(Because)h
+18(this)h
+15(exception)h
+17(pac)h
+-1(k)h
+-2(age)h
+15(is)h
+15(implem)h
+-1(en)h
+-1(ted)h
+15(using)h
+161(and)h
+170(,)h
+14(these)h
+17(w)h
+-1(ords)h
+0 764(mean)s
+16(that)h
+18(follo)h
+-1(wing)h
+15(the)h
+18(raising)h
+17(of)h
+17(an)h
+17(exception,)h
+19(y)h
+-1(ou)h
+17(cannot)h
+18(rely)h
+17(on)h
+18(the)h
+18(v)h
+-2(alue)h
+17(of)h
+17(an)h
+-1(y)h
+105(ma)h
+-1(tic)h
+16(v)h
+-2(ariable)h
+0 814(that)s
+16(w)h
+-1(as)h
+15(mo)h
+1(di\014ed)h
+14(within)h
+15(the)h
+16(normal)h
+14(co)h
+1(de)h
+16(of)h
+15(an)h
+16(exception)h
+16(construct)h
+17(b)h
+1(efore)h
+17(the)h
+16(exception)h
+16(w)h
+-1(as)h
+16(raised.)h
+24(The)h
+204 863(syn)s
+-1(tax)h
+14(has)h
+14(b)h
+1(een)h
+15(designed)h
+14(to)h
+14(act)h
+14(as)h
+14(a)h
+14(con)h
+-1(tin)h
+-1(ual)h
+13(reminder)h
+13(of)h
+13(this)h
+14(danger.)h
+604 938(Because)s
+22(the)h
+21(exception)h
+21(pac)h
+-1(k)h
+-2(age)h
+19(main)h
+-1(tai)h
+-1(ns)h
+19(an)h
+20(explicit)h
+19(stac)h
+-1(k)h
+21(of)h
+19(exception)h
+0 988(handling)s
+15(con)h
+-1(texts,)h
+17(there)h
+18(are)h
+17(some)h
+15(restrictions)h
+18(ab)h
+1(out)h
+16(ho)h
+-1(w)h
+15(con)h
+-1(trol)h
+16(can)h
+17(lea)h
+-1(v)h
+-1(e)h
+16(suc)h
+-1(h)h
+17(constructs.)h
+27(\\Acceptable")h
+0 1038(w)s
+-1(a)h
+-1(ys)h
+14(of)h
+13(lea)h
+-1(ving)h
+13(the)h
+15(main)h
+12(co)h
+1(de)h
+15(of)h
+14(an)h
+14(exception)h
+15(blo)h
+1(c)h
+-1(k)h
+14(are)h
+14(1\))h
+14(reac)h
+-1(hing)h
+14(the)h
+15(end)h
+15(of)h
+14(the)h
+14(blo)h
+1(c)h
+-1(k,)h
+14(and)h
+14(2\))h
+14(raising)h
+13(an)h
+0 1088(exception)s
+12(\(handled)h
+12(or)h
+12(unhandled\).)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+13(con)h
+-1(trol)h
+11(can)h
+12(also)h
+11(exit)h
+12(the)h
+12(construct)h
+13(in)h
+12(four)h
+11(other)h
+12(\\unacceptable")h
+0 1137(w)s
+-1(a)h
+-1(ys.)h
+28(These)h
+19(are)h
+17(1\))h
+18(b)h
+-1(y)h
+17(executing)h
+18(a)h
+121(out)h
+18(of)h
+16(the)h
+18(blo)h
+1(c)h
+-1(k,)h
+18(2\))h
+17(b)h
+-1(y)h
+17(executing)h
+18(a)h
+149(,)h
+17(3\))h
+17(b)h
+-1(y)h
+17(executing)h
+18(an)h
+0 1187(explicit)s
+167(,)h
+11(4\))h
+13(b)h
+-1(y)h
+13(executing)h
+114(or)h
+13(some)h
+13(other)h
+14(program)h
+11(terminating)h
+12(function)h
+12(\(actually)h
+13(this)h
+13(case)h
+14(do)h
+1(es)h
+0 1237(not)s
+12(matter)h
+11(as)h
+13(m)h
+-1(uc)h
+-1(h)h
+11(as)h
+12(the)h
+13(program)h
+10(ends)h
+13(an)h
+-1(yw)h
+-1(a)h
+-1(y\).)h
+16(T)h
+-3(o)h
+12(ensure)h
+14(that)h
+12(the)h
+12(exception)h
+13(pac)h
+-1(k)h
+-2(age)h
+12(correctly)h
+13(main)h
+-1(tains)h
+0 1287(its)s
+12(stac)h
+-1(k)h
+12(of)h
+11(liv)h
+-1(e)h
+10(exception)h
+13(blo)h
+1(c)h
+-1(ks,)h
+11(eac)h
+-1(h)h
+13(instance)h
+12(of)h
+11(an)h
+-1(y)h
+11(of)h
+11(the)h
+12(four)h
+12(unacceptable)h
+12(w)h
+-1(a)h
+-1(ys)h
+12(of)h
+11(exiting)h
+11(a)h
+11(blo)h
+1(c)h
+-1(k)h
+11(should)h
+0 1337(b)s
+1(e)h
+15(prededed)h
+15(b)h
+-1(y)h
+14(a)h
+13(call)h
+14(to)h
+139(.)h
+12(Here)h
+15(is)h
+14(an)h
+14(example)h
+12(of)h
+14(a)h
+13(correct)h
+16(explicit)h
+13(exception)h
+15(blo)h
+1(c)h
+-1(k)h
+14(termination.)h
+1033 1436([25])s
+138 2059(can)s
+15(only)h
+13(b)h
+1(e)h
+14(called)h
+14(from)h
+12(within)h
+13(the)h
+15(normal)h
+11(co)h
+1(de)h
+15(of)h
+13(an)h
+14(exception)h
+15(blo)h
+1(c)h
+-1(k.)h
+728 2134(By)s
+13(the)h
+13(time)h
+10(con)h
+-1(trol)h
+12(reac)h
+-1(hes)h
+14(an)h
+-1(y)h
+12(exception)h
+13(handler)h
+12(co)h
+1(de,)h
+13(the)h
+12(curren)h
+-1(t)h
+0 2183(exception)s
+17(con)h
+-1(text)h
+18(has)h
+17(b)h
+1(een)h
+17(p)h
+1(opp)h
+1(ed,)h
+18(so)h
+17(there)h
+18(are)h
+17(no)h
+16(constrain)h
+-1(ts)h
+17(at)h
+17(all)h
+15(on)h
+17(exits)h
+17(from)h
+15(handler)h
+17(co)h
+1(de.)h
+27(In)h
+16(the)h
+0 2233(example)s
+12(ab)h
+1(o)h
+-1(v)h
+-1(e,)h
+13(the)h
+267(from)h
+12(the)h
+14(normal)h
+12(co)h
+1(de)h
+14(m)h
+-1(ust)h
+13(b)h
+1(e)h
+14(preceeded)h
+16(b)h
+-1(y)h
+13(a)h
+13(call)h
+13(to)h
+139(,)h
+12(but)h
+14(no)h
+13(suc)h
+-1(h)h
+0 2283(call)s
+14(is)h
+15(required)h
+16(for)h
+14(the)h
+271(in)h
+14(the)h
+16(handler)h
+15(co)h
+1(de.)h
+22(In)h
+15(fact,)h
+15(suc)h
+-1(h)h
+15(a)h
+15(call)h
+14(w)h
+-1(ould)h
+14(b)h
+1(e)h
+16(erroneous.)h
+22(As)h
+16(so)h
+1(on)h
+0 2333(as)s
+14(con)h
+-1(trol)h
+14(hits)h
+14(handler)h
+14(co)h
+1(de)h
+14(it)h
+14(is)h
+14(guaran)h
+-1(teed)h
+14(that)h
+14(the)h
+14(curren)h
+-1(t)h
+16(con)h
+-1(text)h
+14(has)h
+14(b)h
+1(een)h
+15(p)h
+1(opp)h
+1(ed.)h
+1157 2408(Just)s
+17(place)h
+16(a)h
+15(lab)h
+1(el)h
+16(inside)h
+15(one)h
+16(handler)h
+17(and)h
+15(a)h
+0 2457(goto)s
+13(in)h
+13(another.)h
+19(This)h
+13(is)h
+14(useful)h
+14(where)h
+15(the)h
+14(co)h
+1(de)h
+15(in)h
+13(one)h
+14(handler)h
+14(is)h
+13(suitable)h
+14(for)h
+13(man)h
+-1(y)h
+12(exceptions.)h
+19(F)h
+-3(or)h
+14(example:)h
+685 2557([26])s
+954 2770(16)s
+14 2 47 515 r
+14 2 47 863 r
+14 2 500 1337 r
+14 2 47 2059 r
+14 2 1635 2233 r
+16 @eop
+17 @bop0
+cmti10.300 sf
+[<01FFE0003C0000380000380000380000380000700000700000700000700000E00000E0
+0000E00000E00001C00001C00001C00001C0000380080380080380080380100700100700
+300700600700E00E03C0FFFFC0>
+24 28 -3 27 26] 76 dc
+[<0007F000001C1C0000700E0000E0070001C0038003800380070003800E0003C01E0003
+C01C0003C03C0003C03C0003C0780003C0780003C0780003C0F0000780F0000780F00007
+80F0000F00F0000F00F0000E00F0001E00F0003C0070003800700070007800E0003801C0
+001C0380000E0E000003F80000>
+32 30 -6 28 32] 79 dc
+[<01FFCFFE003C01E0003801C0003801C0003801C0003801C00070038000700380007003
+800070038000E0070000E0070000E0070000FFFF0001C00E0001C00E0001C00E0001C00E
+0003801C0003801C0003801C0003801C00070038000700380007003800070038000F0078
+00FFE7FF00>
+32 28 -3 27 31] 72 dc
+cmtt10.300 sf
+[<007C0000FC0000DC0001DC00039C00039C00071C000F1C000E1C001E1C003C1C00381C
+00781C00F01C00FFFFE0FFFFE0FFFFE0001C00001C00001C00001C00001C0001FFC001FF
+C001FFC0>
+24 25 -1 24 22] 52 dc
+17 @bop1
+cmbx10.300 sf
+946 982(Z)s
+755 1900(Z)s
+cmsy10.300 sf
+83 589(g)s
+987 982(\021)s
+62 1032(f)s
+83 1630(g)s
+797 1900(\021)s
+62 1950(f)s
+83 2547(g)s
+cmti10.300 sf
+0 835(L)s
+-2(o)h
+-2(c)h
+-2(al)h
+15(variables:)h
+0 1753(Exc)s
+-2(eption)h
+14(blo)h
+-2(cks)h
+14(c)h
+-2(an)h
+14(b)h
+-2(e)h
+14(neste)h
+-2(d:)h
+0 2670(OTHERS)s
+15(hand)h
+2(ler:)h
+cmr7.300 sf
+0 639(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+0 1679(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+0 2597(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+cmsl10.300 sf
+0 982(Example)s
+12(of)h
+14(lo)h
+1(cal)h
+13(v)h
+-2(ariables)h
+13(in)h
+13(an)h
+14(exception)h
+15(blo)h
+1(c)h
+-1(k)h
+0 1900(Example)s
+12(of)h
+14(nested)h
+15(exception)h
+15(handlers)h
+cmr10.300 sf
+0 712(Because)s
+12(there)h
+11(are)h
+10(no)h
+9(restrictions)h
+11(on)h
+9(ho)h
+-1(w)h
+10(handlers)h
+10(can)h
+10(exit,)h
+10(the)h
+128(could)h
+10(ha)h
+-1(v)h
+-1(e)h
+9(p)h
+1(oin)h
+-1(ted)h
+10(outside)h
+10(the)h
+10(construct)h
+0 762(to)s
+1(o.)h
+297 835(Eac)s
+-1(h)h
+15(normal)h
+13(co)h
+1(de)h
+15(and)h
+14(handler)h
+15(co)h
+1(de)h
+16(segmen)h
+-1(t)h
+14(is)h
+14(actually)h
+14(framed)h
+13(as)h
+15(a)h
+14(comp)h
+1(ound)h
+14(statemen)h
+-1(t.)h
+0 885(This)s
+14(means)h
+13(that)h
+14(y)h
+-1(ou)h
+13(can)h
+14(declare)h
+15(lo)h
+1(cal)h
+13(v)h
+-2(ariables)h
+13(if)h
+13(desired.)h
+19(F)h
+-3(or)h
+14(example:)h
+881 982([27])s
+574 1753(F)s
+-3(unctions)h
+13(can)h
+12(con)h
+-1(tain)h
+13(man)h
+-1(y)h
+10(exception)h
+14(blo)h
+1(c)h
+-1(ks.)h
+17(Exception)h
+14(blo)h
+1(c)h
+-1(ks)h
+12(can)h
+13(ev)h
+-1(en)h
+13(b)h
+1(e)h
+0 1803(nested.)s
+20(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+13(b)h
+1(e)h
+15(v)h
+-1(ery)h
+14(sure)h
+15(to)h
+14(ob)h
+1(ey)h
+14(the)h
+14(other)h
+15(rules.)h
+19(Here)h
+15(is)h
+13(an)h
+14(example:)h
+689 1900([28])s
+357 2670(The)s
+218(handler)h
+14(catc)h
+-1(hes)h
+15(all)h
+13(exceptions.)h
+954 2770(17)s
+cmtt10.300 sf
+148 42(add_char\(buffer)s
+-1(,'x')h
+-1(\);)h
+83 91(EX_FORGET)s
+148 141(EX_WHEN\(misc_1\))s
+19(goto)h
+21(doit;)h
+148 191(EX_WHEN\(misc_2\))s
+19(goto)h
+21(doit;)h
+148 241(EX_WHEN\(misc_3\))s
+19(goto)h
+21(doit;)h
+148 291(EX_WHEN\(misc_4\))s
+19(goto)h
+21(doit;)h
+148 340(EX_WHEN\(misc_5\))s
+192 390(doit:)s
+257 440(printf\("Miscel)s
+-1(laneo)h
+-1(us)h
+20(exception)h
+20(happened.\\n)h
+-1("\);)h
+257 490(return)s
+21(FALSE;)h
+83 540(EX_END)s
+1113 712(gotos)s
+83 1082(EX_BEGIN)s
+148 1132(int)s
+22(result;)h
+148 1182(result=add_char)s
+-1(\(buf)h
+-1(fer,')h
+-1(x'\);)h
+148 1232(if)s
+22(\(result)h
+20(>)h
+22(10\))h
+21({EX_POP;)h
+20(return)h
+21(TRUE;})h
+83 1281(EX_FORGET)s
+148 1331(EX_WHEN\(buf_ful)s
+-1(\))h
+214 1381(string)s
+20(walrus)h
+21(=)h
+21("An)h
+22(example)h
+20(string.\\n";)h
+214 1431(printf\(walru)s
+-1(s\);)h
+214 1481(return)s
+20(TRUE;)h
+83 1530(EX_END)s
+83 1580(return)s
+21(FALSE;)h
+83 1999(EX_BEGIN)s
+148 2049(add_char\(buffer)s
+-1(,'x')h
+-1(\);)h
+148 2099(EX_BEGIN)s
+214 2149(big_func\(\);)s
+214 2199(EX_FORGET)s
+279 2248(EX_WHEN\(buf_f)s
+-1(ul\))h
+20(printf\("big)h
+-1(_func)h
+19(raised)h
+21(buf_ful.\\n")h
+-1(\);)h
+148 2298(EX_END)s
+83 2348(EX_FORGET)s
+148 2398(EX_WHEN\(buf_ful)s
+-1(\))h
+20(printf\("add_)h
+-1(char)h
+19(raised)h
+21(buf_ful.\\n"\))h
+-1(;)h
+148 2448(EX_WHEN\(sloth\))s
+63(printf\("eith)h
+-1(er)h
+20(add_char)h
+20(or)h
+21(big_func)h
+20(raised)h
+21(sloth.\\n"\);)h
+83 2497(EX_END)s
+442 2670(EX)s
+15(OTHERS)h
+14 2 489 2670 r
+17 @eop
+18 @bop0
+cmbx10.432 sf
+[<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE07FFFFFC07FFFFFC07FFFFF
+8070000F0070001E0070003C00E0003800E0007800E000F0000001E0000003C0000003C0
+000007800000078000000F0000001F0000001F0000001F0000003F0000003F0000003E00
+00007E0000007E0000007E0000007E000000FE000000FE000000FE000000FE000000FE00
+0000FE000000FE000000FE000000FE000000380000>
+32 41 -4 40 34] 55 dc
+[<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC003FC003FC000FE003FC0003E003FC0001E0
+03FC0001E003FC0000E003FC0000E003FC0000E003FC0000F003FC03807003FC03807003
+FC03807003FC03800003FC07800003FC07800003FC1F800003FFFF800003FFFF800003FF
+FF800003FC1F800003FC07800003FC07800003FC03800003FC03800003FC03800003FC03
+800003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
+0003FC00000003FC000000FFFFFC0000FFFFFC0000FFFFFC0000>
+40 41 -3 40 43] 70 dc
+18 @bop1
+cmbx10.300 sf
+528 1034(Z)s
+cmsy10.300 sf
+569 1034(\021)s
+62 1084(f)s
+83 1732(g)s
+450 2573(\021)s
+62 2622(f)s
+743(g)h
+cmsl10.300 sf
+0 1034(Example)s
+12(of)h
+14(use)h
+14(of)h
+14(EX)h
+15(ID)h
+0 2573(F)s
+-3(unction)h
+14(sp)h
+1(ec)h
+15(ex)h
+15(str)h
+cmbx10.432 sf
+0 294(3.6)s
+24(Exception)h
+22(Informati)h
+-1(on)h
+0 2301(3.7)s
+24(F)h
+-6(unction)h
+23(ex)h
+24(str)h
+cmti10.300 sf
+0 42(Hand)s
+2(ler)h
+17(pr)h
+-2(e)h
+-2(c)h
+-2(e)h
+-2(denc)h
+-2(e:)h
+0 162(R)s
+-2(e-r)h
+-2(aising)h
+14(an)h
+16(exc)h
+-2(eption:)h
+cmr7.300 sf
+0 1779(This)s
+12(macro)h
+10(is)h
+12(NEVER)h
+11(in)h
+-1(v)h
+-1(ok)h
+-1(ed.)h
+0 2670(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(18.)h
+cmtt10.300 sf
+1410 162(EX)s
+16(RAISE\(EX)h
+14(ID\);)h
+1847 424(EX)s
+15(ID)h
+958 474(p)s
+16(ex)h
+15(t)h
+188(EX)h
+15(INFO)h
+543 524(ptrint)s
+373(style.h)h
+622 644(EX)s
+16(ID)h
+1217 794(EX)s
+15(ID)h
+1132 943(goto)s
+83 1134(EX_BEGIN)s
+148 1184(add_char\(buffer)s
+-1(,'x')h
+-1(\);)h
+83 1233(EX_FORGET)s
+148 1283(EX_WHEN\(misc_1\))s
+19(goto)h
+21(doit;)h
+148 1333(EX_WHEN\(misc_2\))s
+19(goto)h
+21(doit;)h
+148 1383(EX_WHEN\(misc_3\))s
+19(goto)h
+21(doit;)h
+148 1433(EX_WHEN\(misc_4\))s
+19(goto)h
+21(doit;)h
+148 1482(EX_WHEN\(misc_5\))s
+192 1532(doit:)s
+257 1582(printf\("Miscel)s
+-1(laneo)h
+-1(us)h
+20(exception)h
+20(happened.\\n)h
+-1("\);)h
+257 1632(EX_RAISE\(EX_ID)s
+-1(\);)h
+83 1682(EX_END)s
+0 1850(EX)s
+15(ID)h
+245 1970(EX)s
+15(INFO)h
+1731 2069(EX)s
+15(INFO)h
+208 2119(ptrint)s
+244 2382(ex)s
+15(str)h
+1782 2432(EX)s
+15(LOCAL)h
+51 2482(EX)s
+15(EXPORT)h
+83 2622(EXPORT)s
+21(string)h
+20(ex_str)h
+21(P_\(\(p_ex_t\))h
+-1(\);)h
+cmr10.300 sf
+385 42(The)s
+16(\014rst)h
+17(handler)h
+15(that)h
+16(matc)h
+-1(hes)h
+16(an)h
+15(exception)h
+17(catc)h
+-1(hes)h
+17(the)h
+16(exception.)h
+25(If)h
+15(more)h
+15(than)h
+16(one)h
+0 91(handler)s
+14(matc)h
+-1(hes)h
+14(the)h
+14(same)h
+13(exception,)h
+14(the)h
+15(\014rst)h
+14(handler)h
+14(will)h
+13(b)h
+1(e)h
+14(activ)h
+-2(ated.)h
+456 162(T)s
+-3(o)h
+13(re-raise)h
+15(an)h
+13(exception,)h
+14(simply)h
+12(co)h
+1(de)h
+15(the)h
+14(statemen)h
+-1(t)h
+352(.)h
+0 375(When)s
+19(an)h
+18(exception)h
+19(is)h
+18(raised,)h
+19(t)h
+-1(w)h
+-1(o)h
+18(sym)h
+-1(b)h
+1(ols)h
+17(pro)h
+-1(vide)h
+18(informati)h
+-1(on)h
+16(ab)h
+1(out)h
+19(the)h
+19(exception)h
+19(b)h
+1(eing)h
+18(raised.)h
+32(These)h
+0 424(sym)s
+-1(b)h
+1(ols)h
+10(are)h
+13(macros)h
+11(and)h
+12(do)h
+11(not)h
+12(necessarily)h
+13(translate)h
+13(to)h
+12(v)h
+-2(ariable)h
+10(names.)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+12(it)h
+12(is)h
+12(guaran)h
+-1(teed)h
+12(that)h
+0 474(will)s
+10(b)h
+1(e)h
+11(an)h
+11(rv)h
+-2(alue)h
+11(\(ANSI)h
+11(6.2.2.1)h
+9(\(fo)h
+1(otnote)h
+11(31\)\))h
+11(of)h
+11(t)h
+-1(yp)h
+1(e)h
+130(,)h
+11(and)h
+11(that)h
+169(will)h
+9(b)h
+1(eha)h
+-1(v)h
+-1(e)h
+12(lik)h
+-1(e)h
+10(an)h
+11(mo)h
+1(di\014able)h
+0 524(lv)s
+-2(alue)h
+14(\(ANSI)h
+15(6.2.2.1\))h
+13(of)h
+14(t)h
+-1(yp)h
+1(e)h
+161(\(see)h
+17(the)h
+15(header)h
+16(\014le)h
+182(for)h
+15(this)h
+15(t)h
+-1(yp)h
+1(e\).)h
+22(The)h
+15(declarations)h
+15(of)h
+15(these)h
+0 574(macros)s
+13(app)h
+1(ear)h
+14(in)h
+14(the)h
+14(static)h
+15(parameters)h
+13(section)h
+15(of)h
+13(this)h
+14(do)h
+1(cumen)h
+-1(t.)h
+0 644(Whenev)s
+-1(er)h
+17(an)h
+16(exception)h
+16(is)h
+16(raised,)h
+135(con)h
+-1(tains)h
+16(the)h
+16(ID)h
+16(of)h
+15(the)h
+16(exception)h
+17(b)h
+1(eing)h
+16(raised.)h
+24(This)h
+16(v)h
+-2(alue)h
+15(p)h
+1(ersists)h
+0 694(un)s
+-1(til)h
+18(the)h
+19(next)h
+20(exception)h
+19(is)h
+19(raised.)h
+34(This)h
+18(v)h
+-2(ariable)h
+18(is)h
+19(only)h
+18(marginal)h
+-1(ly)h
+16(useful)h
+19(in)h
+19(the)h
+19(curren)h
+-1(t)h
+21(v)h
+-1(ersion)h
+19(of)h
+18(this)h
+0 744(pac)s
+-1(k)h
+-2(age,)h
+15(as)h
+15(eac)h
+-1(h)h
+15(exception)h
+16(handler)h
+15(will)h
+14(alw)h
+-1(a)h
+-1(ys)h
+14(statically)h
+14(\\kno)h
+-1(w")h
+14(the)h
+16(exception)h
+16(that)h
+15(it)h
+15(has)h
+15(caugh)h
+-1(t.)h
+22(In)h
+15(long)h
+0 794(and)s
+16(complex)h
+14(handlers)h
+17(though,)h
+16(the)h
+16(capacit)h
+-1(y)h
+16(for)h
+15(self-reference)h
+19(that)h
+134(pro)h
+-1(vides)h
+16(enables)h
+17(suc)h
+-1(h)h
+17(handlers)h
+16(to)h
+0 844(b)s
+1(e)h
+16(co)h
+1(ded)h
+15(without)h
+15(hard-wiring)h
+14(the)h
+15(exception)h
+16(in)h
+15(question)h
+15(whenev)h
+-1(er)h
+16(it)h
+15(is)h
+14(re-raised.)h
+23(This)h
+14(allo)h
+-1(ws)h
+14(exceptions)h
+16(to)h
+0 893(b)s
+1(e)h
+16(more)h
+14(easily)h
+14(renamed.)h
+21(The)h
+16(macro)h
+14(is)h
+14(also)h
+15(useful)h
+15(b)h
+1(ecause)h
+17(it)h
+14(allo)h
+-1(ws)h
+14(exceptions)h
+16(to)h
+15(b)h
+1(e)h
+16(dynamicall)h
+-1(y)h
+13(re-raised)h
+0 943(from)s
+12(co)h
+1(de)h
+15(to)h
+14(whic)h
+-1(h)h
+13(man)h
+-1(y)h
+12(handlers)h
+15(ha)h
+-1(v)h
+-1(e)h
+13(b)h
+1(een)h
+15(p)h
+1(oin)h
+-1(ted)h
+14(to)h
+14(with)h
+102(s.)h
+17(F)h
+-3(or)h
+14(example:)h
+462 1034([29])s
+115 1850(has)s
+12(b)h
+1(een)h
+13(con\014gured)h
+12(as)h
+12(an)h
+12(rv)h
+-2(alue)h
+11(so)h
+12(that)h
+12(it)h
+11(cannot)h
+12(b)h
+1(e)h
+13(written.)h
+17(Th)h
+-1(us,)h
+13(it)h
+11(is)h
+12(guaran)h
+-1(teed)h
+12(alw)h
+-1(a)h
+-1(ys)h
+11(to)h
+11(con)h
+-1(tain)h
+0 1899(the)s
+14(ID)h
+14(of)h
+13(the)h
+15(exception)h
+14(most)h
+13(recen)h
+-1(tly)h
+15(raised.)h
+0 1970(The)s
+16(v)h
+-2(ariable)h
+177(is)h
+16(more)h
+15(under)h
+16(clien)h
+-1(t)h
+16(con)h
+-1(trol.)h
+24(It)h
+15(exists)h
+17(simply)h
+14(to)h
+15(act)h
+17(as)h
+15(an)h
+16(abstract)h
+17(c)h
+-1(hannel)h
+16(for)h
+15(co)h
+1(de)h
+0 2020(raising)s
+12(exceptions)h
+14(to)h
+12(comm)h
+-2(unicate)h
+11(with)h
+13(co)h
+1(de)h
+13(catc)h
+-1(hing)h
+13(exceptions.)h
+19(There)h
+14(are)h
+13(no)h
+12(rules)h
+13(for)h
+13(this)h
+12(v)h
+-2(alue)h
+12(|)h
+12(it)h
+13(can)h
+0 2069(b)s
+1(e)h
+13(written)h
+13(to,)h
+12(or)h
+13(read)h
+13(from)h
+11(an)h
+-1(y)h
+12(piece)h
+13(of)h
+12(co)h
+1(de)h
+14(at)h
+12(an)h
+-1(y)h
+12(time;)h
+11(mak)h
+-1(e)h
+11(up)h
+13(y)h
+-1(our)h
+12(o)h
+-1(wn)h
+13(rules.)h
+18(The)h
+13(t)h
+-1(yp)h
+1(e)h
+13(of)h
+171(has)h
+0 2119(b)s
+1(een)h
+13(set)h
+13(to)h
+154(so)h
+12(as)h
+12(to)h
+12(allo)h
+-1(w)h
+10(an)h
+-1(y)h
+12(p)h
+1(oin)h
+-1(ter)h
+12(or)h
+12(in)h
+-1(teger)h
+12(to)h
+12(b)h
+1(e)h
+12(con)h
+-1(v)h
+-1(ey)h
+-1(ed)h
+13(through)h
+12(the)h
+12(v)h
+-2(ariable.)h
+16(This)h
+12(e\013ectiv)h
+-1(ely)h
+0 2169(allo)s
+-1(ws)h
+13(an)h
+-1(y)h
+13(amoun)h
+-1(t)h
+12(of)h
+13(informatio)h
+-1(n)h
+12(to)h
+14(b)h
+1(e)h
+15(passed.)h
+0 2382(The)s
+12(function)h
+148(accepts)h
+14(a)h
+11(p)h
+1(oin)h
+-1(ter)h
+12(to)h
+12(an)h
+11(exception)h
+13(and)h
+12(returns)h
+13(a)h
+11(p)h
+1(oin)h
+-1(ter)h
+12(to)h
+12(a)h
+12(constan)h
+-1(t)h
+12(static)h
+12(string)h
+12(b)h
+1(eing)h
+0 2432(the)s
+15(one)h
+16(line)h
+14(description)h
+15(of)h
+15(the)h
+15(exception)h
+16(that)h
+15(w)h
+-1(as)h
+14(pro)h
+-1(vided)h
+15(when)h
+15(the)h
+16(exception)h
+16(w)h
+-1(as)h
+14(de\014ned)h
+16(with)h
+0 2482(or)s
+205(.)h
+371 2573([30])s
+954 2770(18)s
+14 2 1457 162 r
+14 2 1648 162 r
+14 2 1894 424 r
+14 2 983 474 r
+14 2 1043 474 r
+14 2 1312 474 r
+14 2 669 644 r
+14 2 1264 794 r
+13 2 400 1034 r
+14 2 47 1850 r
+14 2 292 1970 r
+14 2 1778 2069 r
+21 2 469 2301 r
+14 2 291 2382 r
+14 2 1829 2432 r
+14 2 98 2482 r
+13 2 307 2573 r
+18 @eop
+19 @bop0
+cmbx10.432 sf
+[<003FC00001FFF00003FFFC000FC07E000F003F001F001F001E001F803E000F803E000F
+803F000F803F800F803FC01F803FF01F003FFC3F001FFE7E001FFFF8000FFFE00007FFF8
+0001FFFC0001FFFF0007FFFF801F8FFF803F03FFC07E01FFC07C007FE0FC001FE0F8000F
+E0F80007E0F80003E0F80003E0F80003E0FC0003C07C0007C07E0007803F000F801FC03F
+000FFFFC0003FFF800007FC000>
+32 39 -3 38 34] 56 dc
+19 @bop1
+cmbx10.432 sf
+0 42(3.8)s
+24(A)h
+23(W)h
+-6(arning)h
+23(Ab)h
+2(out)h
+24(Nam)h
+-1(es)h
+0 477(3.9)s
+24(Glossary)h
+cmtt10.300 sf
+552 278(ex)s
+311 328(ex)s
+0 565(Abstract)s
+20(client)h
+0 639(Catch)s
+0 764(Client)s
+0 839(Exception)s
+0 913(Exception)s
+20(block)h
+0 1038(Exception)s
+20(description)h
+0 1162(Exception)s
+20(identifier)h
+0 1287(Exception)s
+20(handler)h
+0 1411(Direct)s
+21(exit)h
+232 1461(return)s
+210(longjmp)h
+254(EX)h
+16(POP)h
+0 1536(Raise)s
+618(EX)h
+15(RAISE)h
+cmr10.300 sf
+0 129(This)s
+11(pac)h
+-1(k)h
+-2(age)h
+12(exp)h
+1(orts)h
+12(a)h
+11(n)h
+-1(um)h
+-1(b)h
+1(er)h
+11(of)h
+11(compile-tim)h
+-2(e)h
+10(and)h
+12(link-tim)h
+-1(e)h
+10(sym)h
+-1(b)h
+1(ols)h
+10(that)h
+11(p)h
+1(ollute)h
+11(the)h
+13(sym)h
+-1(b)h
+1(ol)h
+9(table)h
+12(and)h
+11(link)h
+0 178(table.)s
+18(This)h
+12(p)h
+1(ollution)h
+11(is)h
+13(necessary)h
+15(b)h
+1(ecause)h
+14(this)h
+13(pac)h
+-1(k)h
+-2(age)h
+12(relies)h
+14(signi\014can)h
+-1(tly)h
+11(on)h
+13(exp)h
+1(orted)h
+14(macros)h
+12(that)h
+12(referenc)h
+1(e)h
+0 228(exp)s
+1(orted)h
+17(v)h
+-2(ariables.)h
+23(T)h
+-3(o)h
+15(reduce)h
+17(naming)h
+13(con\015icts,)h
+17(nearly)h
+16(all)h
+14(exp)h
+1(orted)h
+17(names)h
+15(that)h
+16(are)h
+16(supp)h
+1(osed)h
+17(to)h
+15(b)h
+1(e)h
+17(visible)h
+0 278(to)s
+18(the)h
+19(clien)h
+-1(t)h
+19(comm)h
+-1(ence)h
+18(with)h
+96(and)h
+18(all)h
+17(exp)h
+1(orted)h
+20(names)h
+17(that)h
+19(are)h
+18(supp)h
+1(osed)h
+20(to)h
+18(b)h
+1(e)h
+20(in)h
+-1(visible)h
+17(to)h
+18(the)h
+19(clien)h
+-1(t)h
+0 328(comm)s
+-1(ence)h
+14(with)h
+73(.)h
+17(Please)h
+15(b)h
+1(e)h
+15(careful)h
+14(to)h
+13(a)h
+-1(v)h
+-1(oid)h
+13(names)h
+13(with)h
+14(these)h
+15(pre\014xes.)h
+341 565(|)s
+13(A)h
+14(clien)h
+-1(t)h
+14(of)h
+13(this)h
+14(pac)h
+-1(k)h
+-2(age)h
+14(ab)h
+1(out)h
+13(whic)h
+-1(h)h
+14(no)h
+14(informa)h
+-1(tion)h
+12(is)h
+14(kno)h
+-1(wn.)h
+126 639(|)s
+17(When)h
+17(an)h
+18(exception)h
+18(is)h
+17(raised,)h
+18(it)h
+17(propagates)h
+17(up)h
+18(the)h
+18(run-time)h
+16(con)h
+-1(text)h
+18(stac)h
+-1(k)h
+18(un)h
+-1(til)h
+16(it)h
+17(encoun)h
+-1(ters)h
+19(a)h
+0 689(corresp)s
+1(onding)h
+15(handler)h
+14(at)h
+14(whic)h
+-1(h)h
+13(p)h
+1(oin)h
+-1(t)h
+14(it)h
+13(is)h
+14(said)h
+14(to)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(b)h
+1(een)h
+15(caugh)h
+-1(t.)h
+145 764(|)s
+13(An)h
+-1(y)h
+14(co)h
+1(de)h
+14(that)h
+14(uses)h
+15(this)h
+14(pac)h
+-1(k)h
+-2(age.)h
+210 839(|)s
+13(A)h
+14(dynamic)h
+12(non-lo)h
+1(cal)h
+13(con)h
+-1(trol-\015o)h
+-1(w)h
+13(ev)h
+-1(en)h
+-1(t.)h
+344 913(|)s
+17(A)h
+17(sp)h
+1(ecial)h
+18(kind)h
+16(of)h
+17(anon)h
+-1(ymous)h
+16(blo)h
+1(c)h
+-1(k)h
+16(\(called)h
+18(a)h
+17(comp)h
+1(ound)h
+16(statemen)h
+-1(t)h
+17(in)h
+17(C\))h
+17(con)h
+-1(taining)h
+0 963(exception)s
+15(handlers.)h
+472 1038(|)s
+14(A)h
+15(single-line)h
+13(string)h
+15(brie\015y)h
+15(describing)h
+15(the)h
+15(exception.)h
+21(This)h
+14(string)h
+15(is)h
+14(prin)h
+-1(ted)h
+15(out)h
+0 1088(whenev)s
+-1(er)h
+15(an)h
+14(exception)h
+15(has)h
+14(to)h
+13(b)h
+1(e)h
+15(iden)h
+-1(ti\014ed)h
+14(to)h
+14(the)h
+14(user.)h
+446 1162(|)s
+11(A)h
+10(program)h
+9(iden)h
+-1(ti\014er)h
+11(that)h
+11(is)h
+10(b)h
+1(ound)h
+11(to)h
+11(a)h
+10(constan)h
+-1(t)h
+11(whose)h
+11(v)h
+-2(alue)h
+10(is)h
+11(a)h
+10(p)h
+1(oin)h
+-1(ter)h
+11(p)h
+1(oin)h
+-1(ting)h
+0 1212(to)s
+14(an)h
+13(exception)h
+15(ob)h
+2(ject.)h
+381 1287(|)s
+10(An)h
+10(exception/co)h
+1(de)h
+12(binding)h
+10(that)h
+10(app)h
+1(ears)h
+11(at)h
+11(the)h
+11(end)h
+11(of)h
+10(an)h
+10(exception)h
+11(blo)h
+1(c)h
+-1(k)h
+10(and)h
+10(catc)h
+-1(hes)h
+0 1337(the)s
+14(sp)h
+1(eci\014ed)h
+16(exception)h
+15(should)h
+13(it)h
+14(propagate)h
+14(to)h
+13(that)h
+14(lev)h
+-1(el.)h
+255 1411(|)s
+15(The)h
+16(termination)h
+14(of)h
+15(an)h
+15(exception)h
+16(blo)h
+1(c)h
+-1(k)h
+15(in)h
+15(a)h
+16(w)h
+-1(a)h
+-1(y)h
+14(that)h
+16(b)h
+-1(ypasses)h
+17(the)h
+16(exception)h
+16(pac)h
+-1(k)h
+-2(age)h
+15(\(for)h
+0 1461(example,)s
+12(b)h
+-1(y)h
+158(or)h
+14(explicit)h
+168(\).)h
+16(The)h
+15(macro)h
+151(should)h
+13(b)h
+1(e)h
+15(called)h
+14(b)h
+1(efore)h
+14(all)h
+13(suc)h
+-1(h)h
+15(exits.)h
+125 1536(|)s
+16(An)h
+16(exception)h
+17(is)h
+16(raised)h
+17(b)h
+-1(y)h
+16(an)h
+200(statemen)h
+-1(t.)h
+25(Once)h
+17(raised,)h
+17(an)h
+16(exception)h
+17(un)h
+-1(winds)h
+16(the)h
+17(stac)h
+-1(k)h
+0 1586(un)s
+-1(til)h
+13(it)h
+14(encoun)h
+-1(ters)h
+15(a)h
+14(handler)h
+14(for)h
+13(the)h
+15(sp)h
+1(eci\014c)h
+15(exception.)h
+954 2770(19)s
+14 2 599 278 r
+14 2 298 328 r
+14 2 1029 1461 r
+14 2 775 1536 r
+19 @eop
+20 @bop0
+cmbx10.518 sf
+[<0000007800000000F800000001F800000003F800000007F800000007F80000000FF800
+00001FF80000003FF80000007FF800000077F8000000F7F8000001E7F8000003C7F80000
+0787F800000707F800000F07F800001E07F800003C07F800007807F800007007F80000F0
+07F80001E007F80003C007F800078007F8000F0007F8000F0007F8001E0007F8003C0007
+F800780007F800F00007F800FFFFFFFFF0FFFFFFFFF0FFFFFFFFF000000FF80000000FF8
+0000000FF80000000FF80000000FF80000000FF80000000FF80000000FF80000000FF800
+000FFFFFF0000FFFFFF0000FFFFFF0>
+40 46 -2 45 41] 52 dc
+[<FFFFFFC0FFFFFFC0FFFFFFC000FFC00000FFC00000FFC00000FFC00000FFC00000FFC0
+0000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC0
+0000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC0
+0000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC0
+0000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC0
+0000FFC000FFFFFFC0FFFFFFC0FFFFFFC0>
+32 49 -2 48 31] 73 dc
+[<01F800FFF800FFF800FFF8000FF80007F80007F80007F80007F80007F80007F80007F8
+0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
+0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
+0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800FFFF
+C0FFFFC0FFFFC0>
+24 50 -3 49 23] 108 dc
+cmbx10.432 sf
+[<0000FFE000000007FFFC0000003FC07F8000007F001FC00001FC0007F00003F80003F8
+0007F00001FC000FF00001FE001FE00000FF001FE00000FF003FC000007F803FC000007F
+807FC000007FC07F8000003FC07F8000003FC07F8000003FC0FF8000003FE0FF8000003F
+E0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003F
+E0FF8000003FE0FF8000003FE07F8000003FC07FC000007FC07FC000007FC03FC000007F
+803FC000007F801FE00000FF001FE00000FF000FF00001FE0007F00001FC0003F80003F8
+0001FC0007F00000FF001FE000003FC07F8000000FFFFE00000000FFE00000>
+48 41 -4 40 52] 79 dc
+cmsl10.300 sf
+[<7070F060>
+8 4 -4 3 12] 46 dc
+20 @bop1
+cmsy10.300 sf
+434 511(\021)s
+62 560(f)s
+83 1009(g)s
+411 1233(\021)s
+62 1283(f)s
+83 1582(g)s
+481 1731(\021)s
+62 1781(f)s
+83 1930(g)s
+cmbx10.518 sf
+0 50(4)s
+28(Imple)h
+-1(m)h
+-2(en)h
+-3(tation)h
+cmbx10.432 sf
+0 2130(4.1)s
+24(Ov)h
+-2(erview)h
+21(and)h
+24(Data)h
+23(Structure)h
+23(Descripti)h
+-1(on)h
+cmtt10.300 sf
+346 237(.h)s
+392 361(.c)s
+83 660(#include)s
+20("except.h")h
+83 710(#include)s
+20("as.h")h
+1201 1133(.h)s
+514 2341(EX)s
+15(BEGIN)h
+82(setjmp)h
+575(jmp)h
+15(buf)h
+1620 2391(EX)s
+15(END)h
+34 2491(longjmp)s
+1119 2540(longjmp)s
+cmr7.300 sf
+0 1059(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(2.)h
+0 1631(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(18.)h
+0 1980(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(18.)h
+cmsl10.300 sf
+0 511(Implem)s
+-1(en)h
+-1(tation)h
+12(\014le)h
+83 610(Con\014guration)s
+13(header)h
+15(notice)h
+83 760(Global)s
+12(v)h
+-2(ariables)h
+13(\(.c\))h
+83 809(F)s
+-3(unction)h
+14(ex)h
+15(str)h
+83 859(F)s
+-3(unction)h
+14(ex)h
+15(b)h
+1(om)h
+-1(b)h
+83 909(F)s
+-3(unction)h
+29(exrai)h
+83 959(F)s
+-3(unction)h
+29(exp)h
+1(op)h
+0 1233(Hidden)s
+14(de\014nitions)h
+83 1333(Sym)s
+-1(b)h
+1(ol)h
+27(EX)h
+15(F)h
+-5(AST)h
+83 1382(Sym)s
+-1(b)h
+1(ol)h
+27(EX)h
+15(THRD)h
+83 1432(Exception)s
+14(blo)h
+1(c)h
+-1(k)h
+14(con)h
+-1(text)h
+15(t)h
+-1(yp)h
+1(e)h
+83 1482(Global)s
+12(v)h
+-2(ariables)h
+13(\(.h\))h
+83 1532(Macros)s
+15(for)h
+13(global)h
+12(v)h
+-2(ariables)h
+0 1731(Hidden)s
+14(function)h
+14(sp)h
+1(ecs)h
+83 1831(F)s
+-3(unction)h
+14(sp)h
+1(ec)h
+30(exrai)h
+83 1880(F)s
+-3(unction)h
+14(sp)h
+1(ec)h
+30(exp)h
+1(op)h
+cmr10.300 sf
+0 137(This)s
+12(section)h
+14(describ)h
+1(es)h
+14(the)h
+14(impl)h
+-1(em)h
+-1(en)h
+-1(tation)h
+11(of)h
+12(this)h
+12(pac)h
+-1(k)h
+-2(age.)h
+17(The)h
+13(implem)h
+-1(en)h
+-1(tation)h
+10(is)h
+13(short,)h
+13(but)h
+12(is)h
+13(rather)h
+13(messy)h
+0 187(b)s
+1(ecause)h
+17(of)h
+14(the)h
+15(fast/safe)h
+15(alternativ)h
+-1(es,)h
+15(and)h
+14(b)h
+1(ecause)h
+17(of)h
+14(the)h
+15(fact)h
+15(that)h
+15(m)h
+-1(uc)h
+-1(h)h
+14(of)h
+14(the)h
+15(functionalit)h
+-1(y)h
+14(of)h
+14(the)h
+15(pac)h
+-1(k)h
+-2(age)h
+0 237(is)s
+17(pro)h
+-1(vided)h
+17(in)h
+17(the)h
+79(\014le.)h
+28(Muc)h
+-1(h)h
+17(of)h
+17(that)h
+17(functionalit)h
+-1(y)h
+16(has)h
+17(b)h
+1(een)h
+19(deferred)h
+19(using)h
+17(F)h
+-3(unnelW)h
+-3(eb)h
+16(macros)h
+17(to)h
+17(this)h
+0 286(section.)s
+0 361(The)s
+11(implem)h
+-1(en)h
+-1(tation)h
+9(\()h
+44(\))h
+11(\014le)h
+11(itself)h
+11(is)h
+11(fairly)h
+9(simply)h
+-3(,)h
+9(consisting)h
+11(only)h
+10(of)h
+11(some)h
+10(global)h
+9(v)h
+-2(ariables)h
+10(and)h
+11(a)h
+11(few)h
+11(function)h
+0 411(de\014nitions.)s
+355 511([31])s
+590 610([4])s
+452 760([35])s
+363 809([58])s
+416 859([67)s
+-1(])h
+363 909([60])s
+381 959([69])s
+0 1133(All)s
+13(the)h
+15(real)h
+13(action)h
+14(happ)h
+1(ens)h
+15(in)h
+13(the)h
+15(de\014nitions)h
+13(in)h
+14(the)h
+14(sp)h
+1(eci\014cation)h
+15(\()h
+44(\))h
+14(\014le)h
+14(that)h
+14(are)h
+14(hidden)h
+14(from)h
+12(the)h
+15(clien)h
+-1(t.)h
+333 1233([32])s
+430 1333([15])s
+447 1382([16])s
+617 1432([34])s
+457 1482([36])s
+574 1532([17])s
+401 1731([33])s
+454 1831([59])s
+472 1880([68])s
+0 2217(This)s
+14(section)h
+14(giv)h
+-1(es)h
+14(an)h
+14(o)h
+-1(v)h
+-1(erview)h
+14(of)h
+13(the)h
+14(implem)h
+-1(en)h
+-1(tation)h
+12(of)h
+13(this)h
+14(pac)h
+-1(k)h
+-2(age.)h
+0 2291(This)s
+15(pac)h
+-1(k)h
+-2(age)h
+16(op)h
+1(erates)h
+16(b)h
+-1(y)h
+16(main)h
+-1(ta)h
+-1(ining)h
+13(an)h
+15(explicit)h
+15(stac)h
+-1(k)h
+16(of)h
+15(curren)h
+-1(tly)h
+17(activ)h
+-1(e)h
+15(exception)h
+17(blo)h
+1(c)h
+-1(ks.)h
+23(Whenev)h
+-1(er)h
+16(an)h
+0 2341(exception)s
+18(blo)h
+1(c)h
+-1(k)h
+17(is)h
+18(en)h
+-1(tered)h
+19(\()h
+169(\),)h
+16(a)h
+166(is)h
+17(executed)h
+19(and)h
+18(the)h
+18(resultan)h
+-1(t)h
+181(is)h
+18(inserted)h
+19(in)h
+-1(to)h
+16(a)h
+0 2391(stac)s
+-1(k)h
+14(no)h
+1(de)h
+15(and)h
+14(pushed)h
+14(on)h
+-1(to)h
+14(the)h
+14(stac)h
+-1(k.)h
+19(Whenev)h
+-1(er)h
+15(an)h
+14(exception)h
+15(blo)h
+1(c)h
+-1(k)h
+13(is)h
+14(exited)h
+14(normally)h
+12(\()h
+125(\),)h
+13(the)h
+15(stac)h
+-1(k)h
+0 2441(no)s
+1(de)h
+14(on)h
+13(the)h
+14(top)h
+14(of)h
+13(the)h
+14(stac)h
+-1(k)h
+14(is)h
+13(p)h
+1(opp)h
+1(ed.)h
+19(When)h
+14(an)h
+13(exception)h
+14(is)h
+14(raised,)h
+13(the)h
+14(top)h
+14(of)h
+13(the)h
+14(stac)h
+-1(k)h
+14(is)h
+13(p)h
+1(opp)h
+1(ed)h
+15(o\013)h
+13(and)h
+0 2491(a)s
+179(is)h
+14(executed)h
+15(to)h
+14(its)h
+14(con)h
+-1(text.)h
+18(The)h
+14(con)h
+-1(text)h
+15(then)h
+14(searc)h
+-1(hes)h
+16(its)h
+13(handlers)h
+14(for)h
+14(a)h
+13(handler)h
+14(for)h
+13(the)h
+14(exception)h
+0 2540(raised.)s
+18(If)h
+13(it)h
+12(\014nds)h
+14(one,)h
+13(it)h
+12(executes)h
+15(it.)h
+18(If)h
+12(it)h
+13(do)h
+1(esn't,)h
+13(it)h
+12(p)h
+1(ops)h
+14(and)h
+167(s)h
+11(the)h
+14(top)h
+13(of)h
+12(stac)h
+-1(k)h
+13(again.)h
+17(This)h
+13(go)h
+1(es)h
+13(on)h
+0 2590(un)s
+-1(til)h
+13(the)h
+15(exception)h
+14(is)h
+14(caugh)h
+-1(t,)h
+13(or)h
+14(the)h
+15(stac)h
+-1(k)h
+14(is)h
+14(empt)h
+-1(y)h
+-3(.)h
+0 2665(The)s
+14(stac)h
+-1(k)h
+15(is)h
+13(comp)h
+1(osed)h
+14(of)h
+13(a)h
+14(singly-link)h
+-1(ed)h
+12(list)h
+13(of)h
+14(records)h
+15(of)h
+13(the)h
+15(follo)h
+-1(wi)h
+-1(ng)h
+12(t)h
+-1(yp)h
+1(e:)h
+954 2770(20)s
+13 2 299 809 r
+13 2 299 859 r
+13 2 259 909 r
+13 2 259 959 r
+13 2 234 1333 r
+13 2 308 1333 r
+13 2 234 1382 r
+13 2 308 1382 r
+13 2 350 1831 r
+13 2 350 1880 r
+14 2 561 2341 r
+14 2 1541 2341 r
+14 2 1667 2391 r
+20 @eop
+21 @bop0
+/cmr10.432 127 @newfont
+cmr10.432 sf
+[<00006000000060000000E0000001E0000001E0000003E0000003E0000005E0000009E0
+000009E0000011E0000021E0000021E0000041E0000081E0000081E0000101E0000201E0
+000201E0000401E0000801E0000801E0001001E0003001E0002001E0004001E000C001E0
+00FFFFFF80FFFFFF800001E0000001E0000001E0000001E0000001E0000001E0000001E0
+000001E0000003F000007FFF80007FFF80>
+32 40 -2 39 30] 52 dc
+[<78FCFCFCFC78>
+8 6 -5 5 17] 46 dc
+[<00100000700001F0000FF000FEF000F0F00000F00000F00000F00000F00000F00000F0
+0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
+0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
+0000F00001F8007FFFE07FFFE0>
+24 40 -5 39 30] 49 dc
+[<0000FF00100007FFE030001FC07830003E000C7000F80006F001F00003F003E00001F0
+07C00000F00F800000700F800000701F000000303F000000303E000000303E000000107E
+000000107E000000107C00000000FC00000000FC00000000FC00000000FC00000000FC00
+000000FC00000000FC00000000FC00000000FC0000FFFF7C0000FFFF7E000003F07E0000
+01F03E000001F03E000001F03F000001F01F000001F00F800001F00F800001F007C00001
+F003E00001F001F00002F000F80002F0003E000C70001FC038300007FFE0100000FF8000>
+40 43 -3 41 47] 71 dc
+[<0780FF80FF800F80078007800780078007800780078007800780078007800780078007
+800780078007800780078007800780078007800780078007800780078007800780078007
+800780078007800780FFFCFFFC>
+16 42 -1 41 17] 108 dc
+[<007F000001C1C000070070000E0038001C001C003C001E003C001E0078000F0078000F
+00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F8078000F
+0078000F003C001E003C001E001E003C000E0038000700700001C1C000007F0000>
+32 26 -2 25 30] 111 dc
+[<07800000FF800000FF8000000F80000007800000078000000780000007800000078000
+00078000000780000007800000078000000780000007800000078000000783F000078C1C
+0007B0070007A0038007C003C0078001E0078001E0078000F0078000F0078000F8078000
+F8078000F8078000F8078000F8078000F8078000F8078000F0078000F0078001F0078001
+E0078001C007C003C00740078007200E0006181C000407E000>
+32 42 -1 41 33] 98 dc
+[<01FC00000E0780001001C0003C00E0003E00F0003E0078001C00780008007800000078
+000000780000007800007FF80003E078000F8078001F0078003E0078007C007800780078
+20F8007820F8007820F8007820F800F8207C00F8203C013C401F063FC007F80F00>
+32 26 -2 25 30] 97 dc
+[<FFFF0003FFC0FFFF0003FFC007F000007E0003E00000380003E00000100001F0000020
+0001F00000200001F00000200000F80000400000F80000400000FC0000C000007C000080
+00007C00008000003E00010000003E00010000003F00010000001F00020000001F000200
+00001F80060000000F80040000000F800400000007C00800000007C00800000007E00800
+000003E01000000003E01000000001F02000000001F02000000001F02000000000F84000
+000000F84000000000FCC0000000007C80000000007C80000000003F00000000003F0000
+0000003F00000000001E00000000001E00000000000C00000000000C00000000000C0000
+00>
+48 42 -1 40 45] 86 dc
+[<0787C0FF98E0FF91F00FA1F007C1F007C0E007C0000780000780000780000780000780
+0007800007800007800007800007800007800007800007800007800007800007800007C0
+00FFFE00FFFE00>
+24 26 -1 25 23] 114 dc
+[<07000F801F801F800F80070000000000000000000000000000000000000007807F807F
+800F80078007800780078007800780078007800780078007800780078007800780078007
+80078007800780FFF8FFF8>
+16 41 -1 40 17] 105 dc
+[<007E0003C3800700E00E00F01C00703C00783C003878003C78003CF8003CF8003CFFFF
+FCF80000F80000F80000F80000F800007800007C00003C00043C00041E00080E00100700
+2001C0C0007F00>
+24 26 -2 25 27] 101 dc
+[<07F8401C06C03001C06000C06000C0E00040E00040F00040F800007E00007FF0003FFE
+000FFF0003FF80003FC00007C08001E08001E0C000E0C000E0C000E0E000C0F001C0F801
+80C4070083F800>
+24 26 -2 25 24] 115 dc
+21 @bop1
+cmsy10.300 sf
+613 42(\021)s
+62 91(f)s
+83 540(g)s
+447 1523(\021)s
+62 1573(f)s
+83 1872(g)s
+452 2096(\021)s
+62 2146(f)s
+83 2445(g)s
+cmr10.432 sf
+0 1063(4.1.1)s
+19(Global)h
+19(V)h
+-5(ariables)h
+cmr7.300 sf
+0 589(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(32.)h
+0 1922(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(31.)h
+0 2495(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(32.)h
+cmsl10.300 sf
+0 42(Exception)s
+14(blo)h
+1(c)h
+-1(k)h
+14(con)h
+-1(text)h
+15(t)h
+-1(yp)h
+1(e)h
+83 241(Header)s
+15(magic)h
+12(n)h
+-1(um)h
+-1(b)h
+1(er)h
+13(\014eld)h
+83 390(T)s
+-3(railer)h
+13(magic)h
+12(n)h
+-1(um)h
+-1(b)h
+1(er)h
+13(\014eld)h
+83 490(Magic)s
+13(n)h
+-1(um)h
+-1(b)h
+1(er)h
+14(sym)h
+-1(b)h
+1(ols)h
+0 1523(Global)s
+12(v)h
+-2(ariables)h
+13(\(.c\))h
+0 2096(Global)s
+12(v)h
+-2(ariables)h
+13(\(.h\))h
+cmtt10.300 sf
+83 141(typedef)s
+20(struct)h
+21(_ex_cxt_)h
+127 191({)s
+148 291(jmp_buf)s
+217(_ex_jmbf;)h
+42(/*)h
+21(Exception)h
+20(block)h
+21(context.)h
+216(*/)h
+148 340(struct)s
+21(_ex_cxt_)h
+20(*_ex_prev;)h
+42(/*)h
+21(Pointer)h
+20(to)h
+22(previous)h
+20(stack)h
+21(record.)h
+20(*/)h
+127 440(})s
+21(_ex_cx_t;)h
+599 714(EX)s
+15(BEGIN)h
+307 764(ex)s
+15(cx)h
+16(t)h
+549 814(ex)s
+16(curr)h
+952(NULL)h
+837 863(ex)s
+16(id)h
+111(ex)h
+15(info)h
+1562 1150(ex)s
+15(curr)h
+759 1200(NULL)s
+662(ex)h
+15(id)h
+960 1249(ex)s
+15(info)h
+999 1424(EX)s
+15(CURR)h
+25(EX)h
+15(ID)h
+41(EX)h
+15(ID)h
+25(EX)h
+15(INFO)h
+83 1623(#if)s
+21(!_EX_THRD)h
+83 1673(GLOVAR)s
+21(_ex_cx_t)h
+20(*_ex_curr)h
+20(=)h
+21(NULL;)h
+83 1723(GLOVAR)s
+21(p_ex_t)h
+86(_ex_id;)h
+83 1773(GLOVAR)s
+21(ptrint)h
+86(_ex_info;)h
+83 1822(#endif)s
+83 2196(#if)s
+21(!_EX_THRD)h
+83 2246(extern)s
+21(_ex_cx_t)h
+20(*_ex_curr;)h
+83 2296(extern)s
+21(p_ex_t)h
+86(_ex_id;)h
+83 2345(extern)s
+21(ptrint)h
+86(_ex_info;)h
+83 2395(#endif)s
+cmr10.300 sf
+534 42([34])s
+574 241([37])s
+567 390([38])s
+506 490([)s
+-1(39])h
+0 664(The)s
+13(sneaky)h
+13(part)h
+12(is)h
+12(that)h
+13(instead)h
+12(of)h
+12(storing)h
+12(this)h
+13(stac)h
+-1(k)h
+13(explicitly)h
+11(on)h
+12(the)h
+13(heap,)h
+13(it)h
+12(is)h
+12(stored)h
+13(on)h
+12(the)h
+13(run-time)h
+12(stac)h
+-1(k)h
+0 714(itself.)s
+17(This)h
+11(is)h
+11(done)h
+12(b)h
+-1(y)h
+11(ha)h
+-1(ving)h
+10(the)h
+191(macro)h
+10(create)h
+13(a)h
+11(comp)h
+1(ound)h
+10(statemen)h
+-1(t)h
+11(con)h
+-1(taining)h
+10(a)h
+11(lo)h
+1(cal)h
+11(automatic)h
+0 764(v)s
+-2(ariable)h
+11(of)h
+12(t)h
+-1(yp)h
+1(e)h
+180(whic)h
+-1(h)h
+13(forms)h
+10(a)h
+12(no)h
+1(de)h
+13(of)h
+11(the)h
+13(stac)h
+-1(k.)h
+18(These)h
+13(no)h
+1(des)h
+13(are)h
+13(threaded)h
+13(in)h
+-1(to)h
+12(a)h
+12(link)h
+-1(ed)h
+11(list)h
+12(that)h
+12(is)h
+0 814(ro)s
+1(oted)h
+14(b)h
+-1(y)h
+13(the)h
+13(global)h
+12(v)h
+-2(ariable)h
+187(whic)h
+-1(h)h
+13(p)h
+1(oin)h
+-1(ts)h
+13(to)h
+13(the)h
+14(no)h
+1(de)h
+13(at)h
+13(the)h
+14(top)h
+13(of)h
+12(the)h
+14(stac)h
+-1(k,)h
+13(or)h
+114(if)h
+12(the)h
+14(stac)h
+-1(k)h
+0 863(is)s
+15(empt)h
+-1(y)h
+-3(.)h
+19(Tw)h
+-1(o)h
+14(other)h
+15(hidden)h
+15(global)h
+14(v)h
+-2(ariables)h
+147(and)h
+191(store)h
+16(the)h
+15(exception)h
+16(id)h
+14(and)h
+15(the)h
+15(exception)h
+0 913(informati)s
+-1(on.)h
+0 1150(This)s
+12(pac)h
+-1(k)h
+-2(age)h
+12(requires)h
+13(three)h
+14(global)h
+11(v)h
+-2(ariables)h
+11(to)h
+12(k)h
+-1(eep)h
+13(trac)h
+-1(k)h
+13(of)h
+11(ev)h
+-1(erything.)h
+18(The)h
+13(v)h
+-2(ariable)h
+185(p)h
+1(oin)h
+-1(ts)h
+12(to)h
+12(the)h
+0 1200(con)s
+-1(text)h
+14(record)h
+14(on)h
+13(the)h
+14(top)h
+13(of)h
+13(the)h
+13(stac)h
+-1(k,)h
+14(or)h
+113(if)h
+13(the)h
+13(stac)h
+-1(k)h
+14(is)h
+13(empt)h
+-1(y)h
+-3(.)h
+16(The)h
+14(v)h
+-2(ariable)h
+144(con)h
+-1(tains)h
+13(a)h
+13(p)h
+1(oin)h
+-1(ter)h
+0 1249(to)s
+14(the)h
+14(exception)h
+15(most)h
+13(recen)h
+-1(tly)h
+15(raised.)h
+18(The)h
+14(v)h
+-2(ariable)h
+189(is)h
+14(pro)h
+-1(vided)h
+14(for)h
+13(the)h
+15(use)h
+14(of)h
+14(the)h
+14(clien)h
+-1(t.)h
+0 1324(T)s
+-3(o)h
+12(enable)h
+14(this)h
+13(pac)h
+-1(k)h
+-2(age)h
+12(\(and)h
+13(its)h
+13(clien)h
+-1(t)h
+13(co)h
+1(de\))h
+14(to)h
+13(b)h
+1(e)h
+14(con)h
+-1(v)h
+-1(erted)h
+14(o)h
+-1(v)h
+-1(er)h
+13(to)h
+13(a)h
+13(m)h
+-1(ulti)h
+-1(-threaded)h
+12(system)h
+13(at)h
+13(a)h
+13(later)h
+13(date,)h
+0 1374(these)s
+17(global)h
+13(v)h
+-2(ariables)h
+14(are)h
+16(referred)h
+17(to)h
+15(only)h
+14(through)h
+15(a)h
+15(set)h
+16(of)h
+15(macros.)h
+21(The)h
+15(macros)h
+15(are)h
+15(describ)h
+1(ed)h
+17(in)h
+15(the)h
+16(static)h
+0 1424(parameters)s
+14(section)h
+15(of)h
+13(this)h
+14(do)h
+1(cumen)h
+-1(t.)h
+17(They)h
+15(are)h
+14(called)h
+176(,)h
+116(,)h
+132(,)h
+160(.)h
+369 1523([35])s
+0 1997(Here)s
+15(is)h
+14(the)h
+14(v)h
+-1(ersion)h
+14(of)h
+14(these)h
+15(v)h
+-2(ariables)h
+13(that)h
+14(app)h
+1(ears)h
+15(in)h
+13(the)h
+15(header)h
+15(\014le.)h
+374 2096([36])s
+954 2770(21)s
+14 2 646 714 r
+14 2 294 764 r
+14 2 354 764 r
+14 2 413 764 r
+14 2 536 814 r
+14 2 596 814 r
+14 2 824 863 r
+14 2 884 863 r
+14 2 1039 863 r
+14 2 1099 863 r
+14 2 1548 1150 r
+14 2 1609 1150 r
+14 2 1496 1200 r
+14 2 1556 1200 r
+14 2 947 1249 r
+14 2 1007 1249 r
+14 2 986 1424 r
+14 2 1046 1424 r
+14 2 1218 1424 r
+14 2 1302 1424 r
+14 2 1362 1424 r
+14 2 1490 1424 r
+21 @eop
+22 @bop0
+cmr10.432 sf
+[<00FE0007FF800E07E01803F02001F82000F840007C40007CF8007EFC007EFC003EFC00
+3EFC003E78007E00007E00007C00007C0000F80000F80001F00001E00003C00007800007
+00000E00001C0000380000700000600000C0000180020300020600040C00041800041000
+0C3FFFFC7FFFF8FFFFF8FFFFF8>
+24 40 -3 39 30] 50 dc
+[<FFE0000003FFC0FFE0000003FFC007E0000003F80002F0000005F00002F0000005F000
+0278000009F0000278000009F0000278000009F000023C000011F000023C000011F00002
+1E000021F000021E000021F000021E000021F000020F000041F000020F000041F0000207
+800081F0000207800081F0000207800081F0000203C00101F0000203C00101F0000203E0
+0201F0000201E00201F0000201E00201F0000200F00401F0000200F00401F0000200F004
+01F0000200780801F0000200780801F00002003C1001F00002003C1001F00002003C1001
+F00002001E2001F00002001E2001F00002000F4001F00002000F4001F00002000F4001F0
+000200078001F0000700078001F0000F80030003F800FFF803007FFFC0FFF803007FFFC0>
+56 41 -2 40 55] 77 dc
+[<0000078001FC1840070721C00E03C1C01E03C0803C01E0003C01E0007C01F0007C01F0
+007C01F0007C01F0007C01F0003C01E0003C01E0001E03C0000E0380001707000011FC00
+00300000003000000030000000380000001C0000001FFFC0000FFFF80007FFFC001C003E
+0030000F007000070060000380E0000380E0000380E0000380E000038070000700700007
+0038000E000C0018000780F00000FF8000>
+32 40 -2 26 30] 103 dc
+[<007F8001C0700780080F003C1E007C3C007C3C00387C0010780000F80000F80000F800
+00F80000F80000F80000F80000F800007800007C00003C00043C00041E00080F00100780
+2001C0C0007F00>
+24 26 -2 25 27] 99 dc
+[<FFE0001FFFFFF0001FFF03F80001F002F80000E0027C000040027E000040023E000040
+021F000040021F800040020F8000400207C000400207E000400203E000400201F0004002
+01F800400200F8004002007C004002007E004002003E004002001F004002001F80400200
+0F8040020007C040020003E040020003E040020001F040020000F840020000F840020000
+7C400200003E400200003E400200001F400200000FC00200000FC002000007C002000003
+C002000003C007000001C00F800000C0FFF80000C0FFF8000040>
+40 41 -2 40 45] 78 dc
+[<07800780FF80FF80FF80FF800F800F8007800780078007800780078007800780078007
+800780078007800780078007800780078007800780078007800780078007800780078007
+80078007800780078007800F8007800F800380178001C027C000E047FC003F87FC>
+32 26 -1 25 33] 117 dc
+[<0781F800FC00FF860E030700FF98070C03800FA0079003C007A003D001E007C003E001
+E007C003E001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001
+E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001
+E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001
+E0FFFC7FFE3FFFFFFC7FFE3FFF>
+48 26 -1 25 51] 109 dc
+cmr7.300 sf
+[<0F0030C0606060604020C030C030C030C030C030C030C030C030C03040206060606030
+C00F00>
+16 19 -2 18 17] 48 dc
+cmtt10.300 sf
+[<07F0001FFC003FFE007C1F00F00780E00380E00380E003807007007C1F001FFC0007F0
+001FFC003C1E00700700F00780E00380E00380E00380F007807007007C1F003FFE001FFC
+0007F000>
+24 25 -2 24 22] 56 dc
+[<E00000FFFF80FFFF80FFFF80E00F00E01E00001C0000380000780000700000E00000E0
+0001C00001C00001C0000380000380000380000380000700000700000700000700000700
+00070000070000>
+24 26 -2 25 22] 55 dc
+22 @bop1
+cmr10.432 sf
+0 42(4.1.2)s
+19(Magic)h
+18(Num)h
+-2(b)h
+2(ers)h
+cmsy10.300 sf
+569 425(\021)s
+62 475(f)s
+215 574(g)s
+562 722(\021)s
+62 771(f)s
+215 871(g)s
+499 1019(\021)s
+62 1068(f)s
+673 1168(g)s
+296 1647(\021)s
+62 1697(f)s
+481(g)h
+678 2176(\021)s
+62 2226(f)s
+524(g)h
+680 2374(\021)s
+62 2423(f)s
+676(g)h
+645 2571(\021)s
+62 2621(f)s
+676(g)h
+cmbx10.432 sf
+0 1364(4.2)s
+24(Exception)h
+22(t)h
+-2(yp)h
+2(e)h
+0 1893(4.3)s
+24(Macros)h
+24(for)h
+23(Declaring)h
+21(and)h
+24(De\014ning)h
+22(Exceptions)h
+cmsl10.300 sf
+0 425(Header)s
+15(magic)h
+12(n)h
+-1(um)h
+-1(b)h
+1(er)h
+13(\014eld)h
+0 722(T)s
+-3(railer)h
+13(magic)h
+12(n)h
+-1(um)h
+-1(b)h
+1(er)h
+13(\014eld)h
+0 1019(Magic)s
+13(n)h
+-1(um)h
+-1(b)h
+1(er)h
+14(sym)h
+-1(b)h
+1(ols)h
+0 1647(T)s
+-1(yp)h
+1(e)h
+14(p)h
+15(ex)h
+16(t)h
+0 2176(Implem)s
+-1(en)h
+-1(tation)h
+12(of)h
+13(EX)h
+15(EX)h
+-1(CEPT)h
+0 2374(Implem)s
+-1(en)h
+-1(tation)h
+12(of)h
+13(EX)h
+15(EXPOR)h
+-3(T)h
+0 2571(Implem)s
+-1(en)h
+-1(tation)h
+12(of)h
+13(EX)h
+15(LOCAL)h
+cmr7.300 sf
+0 624(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(34.)h
+0 920(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(34.)h
+0 1217(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(34.)h
+0 1746(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(20.)h
+0 2276(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(20.)h
+0 2473(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(20.)h
+0 2670(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(20.)h
+cmtt10.300 sf
+83 475(#if)s
+21(!_EX_FAST)h
+148 524(ulong)s
+21(_ex_mag1;)h
+42(/*)h
+21(Header)h
+21(magic)h
+21(number.)h
+20(*/)h
+83 574(#endif)s
+83 771(#if)s
+21(!_EX_FAST)h
+148 821(ulong)s
+21(_ex_mag2;)h
+42(/*)h
+21(Trailer)h
+21(magic)h
+20(number.)h
+21(*/)h
+83 871(#endif)s
+83 1118(#define)s
+20(_EX_MAG1)h
+21(0xFB8A5D30)h
+83 1168(#define)s
+20(_EX_MAG2)h
+21(0x09F2E7A2)h
+1012 1549(string)s
+83 1697(typedef)s
+20(string)h
+21(p_ex_t;)h
+1177 1979(p)s
+15(ex)h
+16(t)h
+83 2226(extern)s
+21(const)h
+20(p_ex_t)h
+21(NAME)h
+236 2423(const)s
+20(p_ex_t)h
+21(NAME)h
+21(=)h
+21(DESC)h
+83 2621(static)s
+21(const)h
+20(p_ex_t)h
+21(NAME)h
+21(=)h
+21(DESC)h
+cmr10.300 sf
+0 127(In)s
+12(order)h
+13(to)h
+12(detect)h
+14(corruptions)h
+13(in)h
+11(exception)h
+13(con)h
+-1(text)h
+13(records,)h
+14(t)h
+-1(w)h
+-1(o)h
+11(magic)h
+11(n)h
+-1(um)h
+-1(b)h
+1(er)h
+11(\014elds)h
+13(ha)h
+-1(v)h
+-1(e)h
+12(b)h
+1(een)h
+13(placed)h
+12(at)h
+12(the)h
+0 177(start)s
+15(and)h
+13(end)h
+15(of)h
+13(the)h
+14(record.)h
+20(In)h
+14(C,)h
+13(there)h
+15(are)h
+14(h)h
+-1(undreds)h
+16(of)h
+13(w)h
+-1(a)h
+-1(ys)h
+13(for)h
+14(corruptions)h
+14(to)h
+14(o)h
+1(ccur,)h
+15(but)h
+14(in)h
+13(particular,)h
+13(in)h
+0 227(this)s
+13(pac)h
+-1(k)h
+-2(age,)h
+12(if)h
+12(a)h
+13(clien)h
+-1(t)h
+13(exits)h
+13(an)h
+13(exception)h
+14(con)h
+-1(text)h
+14(without)h
+12(\014rst)h
+14(p)h
+1(opping)h
+12(it,)h
+13(it)h
+12(is)h
+13(quite)h
+13(lik)h
+-1(ely)h
+12(that)h
+13(the)h
+13(con)h
+-1(text)h
+0 277(will)s
+12(b)h
+1(e)h
+14(\\run)h
+14(o)h
+-1(v)h
+-1(er")h
+13(b)h
+-1(y)h
+13(stac)h
+-1(k)h
+14(frames)h
+13(of)h
+13(functions)h
+13(called)h
+13(later.)h
+18(If)h
+13(the)h
+15(con)h
+-1(text)h
+14(is)h
+13(then)h
+14(in)h
+-1(v)h
+-1(ok)h
+-1(ed,)h
+12(the)h
+15(program)h
+11(will)h
+0 327(crash.)s
+19(The)h
+14(follo)h
+-1(wing)h
+11(magic)h
+12(n)h
+-1(um)h
+-1(b)h
+1(er)h
+14(\014elds)h
+14(greatly)h
+14(impro)h
+-1(v)h
+-2(e)h
+13(the)h
+14(c)h
+-1(hances)h
+15(of)h
+14(detecting)h
+15(suc)h
+-1(h)h
+14(corruptions.)h
+491 425([37])s
+484 722([38])s
+423 1019([)s
+-1(39])h
+0 1450(Here)s
+14(is)h
+12(the)h
+13(de\014nition)h
+12(of)h
+12(the)h
+13(p)h
+1(oin)h
+-1(ter-to-exception)h
+13(t)h
+-1(yp)h
+1(e.)h
+18(Normall)h
+-1(y)h
+-3(,)h
+10(a)h
+12(hidden)h
+12(exception)h
+14(t)h
+-1(yp)h
+1(e)h
+12(w)h
+-1(ould)h
+12(b)h
+1(e)h
+13(declared)h
+0 1499(to)s
+11(whic)h
+-1(h)h
+11(the)h
+11(p)h
+1(oin)h
+-1(ter)h
+11(t)h
+-1(yp)h
+1(e)h
+12(w)h
+-1(ould)h
+10(p)h
+1(oin)h
+-1(t,)h
+10(but)h
+12(as)h
+11(exceptions)h
+12(ha)h
+-1(v)h
+-1(e)h
+10(only)h
+11(a)h
+10(single)h
+11(attribute,)h
+11(their)h
+12(description)h
+11(string,)h
+0 1549(it)s
+14(mak)h
+-1(es)h
+12(sense)h
+16(simply)h
+12(to)h
+13(declare)h
+15(the)h
+15(p)h
+1(oin)h
+-1(ter)h
+14(t)h
+-1(yp)h
+1(e)h
+14(to)h
+14(b)h
+1(e)h
+159(t)h
+-1(yp)h
+1(e)h
+14(\(p)h
+1(oin)h
+-1(ter)h
+15(to)h
+13(c)h
+-1(har\).)h
+218 1647([40])s
+0 1979(The)s
+12(three)h
+13(exception)h
+12(declaration)h
+11(macros)h
+11(mak)h
+-1(e)h
+10(use)h
+12(of)h
+11(the)h
+12(fact)h
+11(that)h
+142(is)h
+11(really)h
+11(just)h
+12(a)h
+11(string)h
+11(p)h
+1(oin)h
+-1(ter.)h
+18(There)h
+0 2028(is)s
+14(a)h
+14(sligh)h
+-1(t)h
+13(danger)h
+14(that)h
+14(a)h
+14(to)h
+1(o-clev)h
+-1(er)h
+14(C)h
+14(compiler)h
+13(migh)h
+-1(t)h
+12(o)h
+-1(v)h
+-1(erlap)h
+13(t)h
+-1(w)h
+-1(o)h
+14(strings)h
+14(for)h
+14(whic)h
+-1(h)h
+14(one)h
+14(is)h
+14(a)h
+13(non-strict)h
+15(su\016x)h
+0 2078(of)s
+13(the)h
+15(other.)h
+18(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(this)h
+14(is)h
+14(considered)h
+15(unlik)h
+-1(ely)h
+-3(.)h
+598 2176([41])s
+601 2374([42])s
+566 2571([43])s
+954 2770(22)s
+13 2 132 1647 r
+13 2 187 1647 r
+14 2 1202 1979 r
+14 2 1261 1979 r
+13 2 408 2176 r
+13 2 408 2374 r
+13 2 408 2571 r
+22 @eop
+23 @bop0
+cmbx10.432 sf
+[<00030007001E003C007800F800F001E003E007C007C00F800F801F801F003F003F003E
+003E007E007E007E007C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC
+00FC007C007E007E007E003E003E003F003F001F001F800F800F8007C007C003E001E000
+F000F80078003C001E00070003>
+16 60 -6 44 27] 40 dc
+[<C000E00078003C001E001F000F00078007C003E003E001F001F001F800F800FC00FC00
+7C007C007E007E007E003E003F003F003F003F003F003F003F003F003F003F003F003F00
+3F003F003E007E007E007E007C007C00FC00FC00F801F801F001F003E003E007C007800F
+001F001E003C007800E000C000>
+16 60 -4 44 27] 41 dc
+cmtt10.300 sf
+[<7FFF80FFFF80FFFF80E00700E00F00E01E00E01C00003C0000780000700000F00001E0
+0001C00003C0000780000700000F00001E03801C03803C0380780380700380FFFF80FFFF
+80FFFF80>
+24 25 -2 24 22] 90 dc
+[<03800007E0000FE0001E70001C70001C70001C70001C77E01CE7E01DE7E00FC7000F8E
+000F0E001E0E003F1C007F1C00739C00E3F800E1F800E0F1C0E0F1C071F9C07FFFC03F9F
+801E0700>
+24 25 -1 24 22] 38 dc
+cmr10.300 sf
+[<FFF03FE00F000F000F000C000F0008000F0010000F0020000F0040000F0080000F0100
+000F0200000F0400000F0E00000F1F00000F2F00000F2780000F4780000F83C0000F01E0
+000F01E0000F00F0000F00F8000F0078000F003C000F003C000F001E000F001F000F001F
+80FFF07FF0>
+32 28 -2 27 32] 75 dc
+[<00E0000001900000030800000308000007080000070800000708000007080000071000
+0007100000072000000740000003C03FE003800F00038006000380040005C0040009C008
+0010E0100030E010006070200060702000E0384000E03C4000E01C8000E00F0020E00700
+20700780403009C0401830E18007C03E00>
+32 31 -2 29 32] 38 dc
+23 @bop1
+cmsy10.300 sf
+849 328(\021)s
+62 378(f)s
+329(g)h
+851 527(\021)s
+62 577(f)s
+1222(g)h
+726 1436(\021)s
+62 1486(f)s
+846 1735(g)s
+767 2433(\021)s
+62 2482(f)s
+763(g)h
+cmbx10.432 sf
+0 42(4.4)s
+24(Macro)h
+24(for)h
+23(Raising)h
+22(Exceptions)h
+0 776(4.5)s
+24(Exception)h
+22(Blo)h
+2(c)h
+-2(k)h
+22(Macros)h
+24(\(Safe\))h
+cmsl10.300 sf
+0 328(Safe)s
+14(implem)h
+-1(en)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(EX)h
+16(RAISE\(P)h
+15(EX\))h
+0 527(F)s
+-3(ast)h
+14(impl)h
+-1(emen)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(EX)h
+16(RAISE\(P)h
+15(EX\))h
+0 1436(Safe)s
+14(implem)h
+-1(en)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(EX)h
+16(BEGIN)h
+0 2433(Safe)s
+14(implem)h
+-1(en)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(EX)h
+16(F)h
+-1(OR)h
+-1(GET)h
+cmr7.300 sf
+0 428(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(22.)h
+0 627(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(22.)h
+0 1785(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(23.)h
+0 2532(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(23.)h
+cmtt10.300 sf
+338 129(EX)s
+16(RAISE)h
+772(exrai)h
+1021 228(longjmp)s
+83 378({_exrai\(P_EX\))s
+-1(;})h
+83 577({_EX_ID)s
+20(=)h
+22(\(P_EX\);)h
+20(longjmp\(_EX_CU)h
+-1(RR->_)h
+-1(ex_jm)h
+-1(bf,NO)h
+-1(N_ZE)h
+-1(RO\);})h
+81 1088(EX)s
+15(BEGIN)h
+672 1137(ex)s
+15(cxlc)h
+1122 1187(ex)s
+16(jmbf)h
+1699 1287(EX)s
+15(CURR)h
+307 1337(if)s
+83 1486({_ex_cx_t)s
+20(_ex_cxlc;)h
+303(\\)h
+105 1536(_ex_cxlc._ex)s
+-1(_mag1)h
+19(=)h
+22(_EX_MAG1;)h
+63(\\)h
+105 1586(_ex_cxlc._ex)s
+-1(_mag2)h
+19(=)h
+22(_EX_MAG2;)h
+63(\\)h
+105 1636(_ex_cxlc._ex)s
+-1(_prev)h
+19(=)h
+22(_EX_CURR;)h
+63(\\)h
+105 1685(_EX_CURR)s
+216(=)h
+22(&_ex_cxlc;)h
+41(\\)h
+105 1735(if)s
+21(\(!setjmp\(_ex_c)h
+-1(xlc.)h
+-1(_ex_j)h
+-1(mbf\)\))h
+19({)h
+740 1959(if)s
+311(if)h
+564(FALSE)h
+939 2009(EX)s
+15(WHEN)h
+1488 2084(switch)s
+99 2134(if)s
+178(switch)h
+686(if)h
+268(switch)h
+310 2183(switch)s
+1661 2233(switch)s
+139 2283(int)s
+538 2333(if)s
+83 2482(;EX_POP})s
+20(else)h
+21({EX_POP;)h
+20(if)h
+22(\(FALSE\))h
+20({)h
+1403 2607(EX)s
+16(WHEN)h
+533 2657(if)s
+cmr10.300 sf
+0 129(Tw)s
+-1(o)h
+16(forms)h
+16(of)h
+16(the)h
+202(macro)h
+16(are)h
+17(giv)h
+-1(en.)h
+26(The)h
+18(\014rst)h
+17(simply)h
+15(calls)h
+158(whic)h
+-1(h)h
+17(p)h
+1(erforms)h
+16(lots)h
+16(of)h
+17(c)h
+-1(hec)h
+-1(ks)h
+0 178(b)s
+1(efore)h
+14(raising)h
+12(the)h
+14(argumen)h
+-1(t)h
+12(exception.)h
+19(The)h
+13(fast)h
+14(form)h
+11(do)h
+1(es)h
+14(not)h
+13(p)h
+1(erform)h
+12(an)h
+-1(y)h
+13(c)h
+-1(hec)h
+-1(king)h
+14(|)h
+12(it)h
+13(just)h
+14(p)h
+1(erforms)h
+12(the)h
+0 228(essen)s
+-1(tial)h
+14(op)h
+1(erations)h
+14(of)h
+14(setting)h
+14(the)h
+15(ID)h
+13(and)h
+14(executing)h
+14(the)h
+169(.)h
+770 328([44])s
+772 527([45])s
+0 863(The)s
+15(exception)h
+16(blo)h
+1(c)h
+-1(k)h
+15(macros)h
+14(are)h
+15(messy)h
+14(and)h
+15(deserv)h
+-1(e)h
+17(some)h
+14(explanation.)h
+20(These)h
+16(macros)h
+14(op)h
+1(erate)h
+16(as)h
+15(a)h
+15(coheren)h
+-1(t)h
+0 913(whole,)s
+21(so)h
+21(it)h
+20(is)h
+20(probably)h
+20(b)h
+1(est)h
+21(to)h
+20(read)h
+21(them)h
+20(through)h
+20(a)h
+20(few)h
+21(times)h
+19(to)h
+20(see)h
+22(ho)h
+-1(w)h
+20(they)h
+21(in)h
+-1(teract,)h
+22(rather)h
+21(than)h
+0 963(attempting)s
+12(to)h
+13(understand)h
+15(eac)h
+-1(h)h
+13(one)h
+14(indep)h
+1(enden)h
+-1(tly)h
+-3(.)h
+18(Tw)h
+-1(o)h
+13(v)h
+-1(ersions)h
+14(of)h
+13(the)h
+13(exception)h
+15(blo)h
+1(c)h
+-1(k)h
+12(macros)h
+13(are)h
+14(giv)h
+-1(en)h
+12(|)h
+0 1013(the)s
+14(safe)h
+15(v)h
+-1(ersion)h
+14(and)h
+13(the)h
+15(fast)h
+14(v)h
+-1(ersion.)h
+18(The)h
+14(safe)h
+14(v)h
+-1(ersion)h
+14(is)h
+14(describ)h
+1(ed)h
+16(\014rst.)h
+0 1088(The)s
+188(macro)h
+9(sets)h
+11(the)h
+10(stage)h
+10(for)h
+10(the)h
+10(en)h
+-1(tire)h
+11(exception)h
+10(blo)h
+1(c)h
+-1(k)h
+10(b)h
+-1(y)h
+9(starting)h
+10(a)h
+9(comp)h
+1(ound)h
+9(statemen)h
+-1(t,)h
+10(declaring)h
+0 1137(a)s
+15(lo)h
+1(cal)h
+14(v)h
+-2(ariable)h
+15(for)h
+15(the)h
+16(stac)h
+-1(k)h
+15(no)h
+1(de)h
+16(\()h
+163(\),)h
+15(initiali)h
+-1(zing)h
+13(its)h
+16(magi)h
+-1(c)h
+14(c)h
+-1(hec)h
+-1(king)h
+16(n)h
+-1(um)h
+-1(b)h
+1(ers,)h
+14(pushing)h
+16(it)h
+15(on)h
+-1(to)h
+14(the)h
+0 1187(stac)s
+-1(k,)h
+13(and)h
+12(\014nally)h
+11(sa)h
+-1(ving)h
+12(the)h
+13(curren)h
+-1(t)h
+14(execution)h
+13(con)h
+-1(text)h
+13(in)h
+13(the)h
+187(\014eld)h
+13(of)h
+12(the)h
+13(newly)h
+12(created)h
+14(stac)h
+-1(k)h
+13(no)h
+1(de.)h
+0 1237(This)s
+14(w)h
+-1(ork)h
+13(has)h
+14(to)h
+14(b)h
+1(e)h
+15(done)h
+14(in)h
+13(this)h
+14(macro)h
+13(as)h
+14(most)h
+12(of)h
+14(the)h
+14(op)h
+1(erations)h
+14(require)h
+15(direct)h
+15(access)h
+15(to)h
+14(the)h
+15(lo)h
+1(cal)h
+13(con)h
+-1(text.)h
+0 1287(Not)s
+13(m)h
+-1(uc)h
+-1(h)h
+13(c)h
+-1(hec)h
+-1(king)h
+13(can)h
+14(b)h
+1(e)h
+14(done)h
+14(here)h
+15(either)h
+14(as)h
+13(w)h
+-1(e)h
+14(ha)h
+-1(v)h
+-1(e)h
+13(no)h
+14(w)h
+-1(a)h
+-1(y)h
+12(of)h
+13(cross)h
+15(c)h
+-1(hec)h
+-1(king)h
+14(the)h
+14(v)h
+-2(alue)h
+13(of)h
+188(up)h
+1(on)h
+0 1337(en)s
+-1(try)h
+-3(.)h
+18(The)h
+15(op)h
+1(en)h
+71(statemen)h
+-1(t)h
+14(encloses)h
+15(the)h
+15(en)h
+-1(tire)h
+14(normal)h
+12(co)h
+1(de)h
+15(of)h
+13(the)h
+15(exception)h
+14(blo)h
+1(c)h
+-1(k.)h
+647 1436([46])s
+0 1860(A)s
+-1(t)h
+18(the)h
+19(p)h
+1(oin)h
+-1(t)h
+18(of)h
+17(forgetting,)h
+18(w)h
+-1(e)h
+19(need)h
+19(to)h
+18(terminate)h
+17(the)h
+19(comp)h
+1(ound)h
+17(statemen)h
+-1(t)h
+18(for)h
+18(the)h
+19(normal)h
+16(co)h
+1(de,)h
+19(p)h
+1(op)h
+18(the)h
+0 1910(curren)s
+-1(t)h
+15(exception)h
+14(con)h
+-1(text)h
+15(and)h
+13(then)h
+15(test)h
+14(the)h
+14(curren)h
+-1(tly)h
+15(liv)h
+-1(e)h
+13(exception)h
+14(against)h
+13(the)h
+14(candidate)h
+14(handlers.)h
+19(This)h
+13(is)h
+0 1959(most)s
+13(simply)h
+13(p)h
+1(erformed)h
+14(with)h
+14(a)h
+15(cascaded)h
+74(statemen)h
+-1(t.)h
+20(The)h
+73(statemen)h
+-1(t)h
+14(has)h
+15(to)h
+14(start)h
+16(with)h
+14(a)h
+138(branc)h
+-1(h)h
+0 2009(so)s
+14(as)h
+14(to)h
+14(establish)h
+14(the)h
+14(syn)h
+-1(tactic)h
+15(con)h
+-1(text)h
+14(for)h
+14(the)h
+14(\014rst)h
+175(macro.)h
+0 2084(An)s
+12(earlier)h
+12(v)h
+-1(ersion)h
+11(of)h
+12(this)h
+11(pac)h
+-1(k)h
+-2(age)h
+12(that)h
+11(used)h
+13(in)h
+-1(tegers)h
+12(to)h
+12(represen)h
+-1(t)h
+14(exceptions)h
+13(used)h
+12(a)h
+154(statemen)h
+-1(t)h
+12(instead)h
+0 2134(of)s
+10(an)h
+66(c)h
+-1(hain.)h
+17(A)h
+152(statemen)h
+-1(t)h
+11(is)h
+11(actually)h
+10(preferable)h
+12(to)h
+11(an)h
+66(c)h
+-1(hain)h
+10(b)h
+1(ecause)h
+145(es)h
+11(prohibit)h
+10(duplicate)h
+0 2183(lab)s
+1(els.)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+145(es)h
+13(had)h
+12(to)h
+13(b)h
+1(e)h
+13(abandoned)h
+13(b)h
+1(ecause)h
+14(when)h
+13(the)h
+13(pac)h
+-1(k)h
+-2(age)h
+13(w)h
+-1(as)h
+12(c)h
+-1(hanged)h
+14(o)h
+-1(v)h
+-1(er)h
+12(so)h
+13(that)h
+13(it)h
+12(used)h
+0 2233(p)s
+1(oin)h
+-1(ters)h
+14(as)h
+13(exception)h
+14(ids,)h
+13(it)h
+13(w)h
+-1(as)h
+13(noticed)h
+14(that)h
+13(K&R78)h
+13(section)h
+14(9.7)h
+12(sa)h
+-1(ys)h
+14(that)h
+13(the)h
+14(argumen)h
+-1(t)h
+12(to)h
+157(m)h
+-1(ust)h
+12(b)h
+1(e)h
+0 2283(of)s
+12(t)h
+-1(yp)h
+1(e)h
+80(.)h
+17(K&R88)h
+13(\(section)h
+14(A9.4\))h
+12(and)h
+13(ANSI)h
+13(\(section)h
+14(6.6.4.2\))h
+11(w)h
+-1(eak)h
+-1(en)h
+13(this)h
+13(to)h
+13(include)h
+13(all)h
+12(in)h
+-1(tegral)h
+12(t)h
+-1(yp)h
+1(es,)h
+14(but)h
+0 2333(still)s
+13(preclude)h
+15(p)h
+1(oin)h
+-1(ters.)h
+19(So)h
+13(an)h
+71(c)h
+-1(hain)h
+14(had)h
+14(to)h
+13(b)h
+1(e)h
+15(used.)h
+689 2433([47])s
+0 2607(The)s
+16(start)h
+17(of)h
+15(eac)h
+-1(h)h
+17(handler)h
+16(in)h
+15(the)h
+17(exception)h
+17(blo)h
+1(c)h
+-1(k)h
+15(is)h
+16(mark)h
+-1(ed)h
+15(b)h
+-1(y)h
+15(a)h
+16(call)h
+15(to)h
+16(the)h
+179(macro.)h
+23(All)h
+15(it)h
+15(do)h
+1(es)h
+17(is)h
+0 2657(add)s
+14(an)h
+13(extra)h
+15(clause)h
+14(on)h
+-1(to)h
+14(the)h
+71(c)h
+-1(hain.)h
+954 2770(23)s
+14 2 385 129 r
+14 2 1267 129 r
+13 2 493 328 r
+13 2 681 328 r
+13 2 495 527 r
+13 2 683 527 r
+14 2 128 1088 r
+14 2 659 1137 r
+14 2 719 1137 r
+14 2 1109 1187 r
+14 2 1169 1187 r
+14 2 1686 1287 r
+14 2 1746 1287 r
+13 2 493 1436 r
+14 2 986 2009 r
+13 2 493 2433 r
+14 2 1450 2607 r
+23 @eop
+24 @bop0
+cmbx10.432 sf
+[<1C007F00FF80FF80FFC0FFC0FFC07FC01CC000C000C001C0018001800380070006000E
+001C0038003000>
+16 21 -5 8 19] 44 dc
+24 @bop1
+cmsy10.300 sf
+854 42(\021)s
+62 91(f)s
+676(g)h
+763 340(\021)s
+62 390(f)s
+393(g)h
+678 639(\021)s
+62 689(f)s
+523(g)h
+676 1038(\021)s
+62 1088(f)s
+438(g)h
+728 1517(\021)s
+62 1567(f)s
+846 1716(g)s
+769 1848(\021)s
+62 1898(f)s
+763(g)h
+856 2029(\021)s
+62 2079(f)s
+676(g)h
+765 2211(\021)s
+62 2261(f)s
+393(g)h
+680 2392(\021)s
+62 2442(f)s
+1025(g)h
+678 2574(\021)s
+62 2624(f)s
+699(g)h
+cmbx10.432 sf
+0 1255(4.6)s
+24(F)h
+-6(ast,)h
+24(Inline)h
+21(V)h
+-6(ersions)h
+22(of)h
+24(the)h
+22(Exception)h
+22(Blo)h
+2(c)h
+-2(k)h
+22(Macros)h
+cmsl10.300 sf
+0 42(Safe)s
+14(implem)h
+-1(en)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(EX)h
+16(WHEN\(P)h
+15(EX\))h
+0 340(Safe)s
+14(implem)h
+-1(en)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(EX)h
+16(OTHERS)h
+0 639(Safe)s
+14(implem)h
+-1(en)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(EX)h
+16(END)h
+0 1038(Safe)s
+14(implem)h
+-1(en)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(EX)h
+16(POP)h
+0 1517(F)s
+-3(ast)h
+14(impl)h
+-1(emen)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(EX)h
+16(BEGIN)h
+0 1848(F)s
+-3(ast)h
+14(impl)h
+-1(emen)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(EX)h
+16(F)h
+-1(OR)h
+-1(GET)h
+0 2029(F)s
+-3(ast)h
+14(impl)h
+-1(emen)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(EX)h
+16(WHEN\(P)h
+15(EX\))h
+0 2211(F)s
+-3(ast)h
+14(impl)h
+-1(emen)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(EX)h
+16(OTHERS)h
+0 2392(F)s
+-3(ast)h
+14(impl)h
+-1(emen)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(EX)h
+16(END)h
+0 2574(F)s
+-3(ast)h
+14(impl)h
+-1(emen)h
+-1(tati)h
+-1(on)h
+12(of)h
+13(EX)h
+16(POP)h
+cmr7.300 sf
+0 138(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(23.)h
+0 437(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(23.)h
+0 736(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(23.)h
+0 1134(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(23.)h
+0 1762(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(23.)h
+0 1944(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(23.)h
+0 2125(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(23.)h
+0 2307(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(23.)h
+0 2488(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(23.)h
+0 2670(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(23.)h
+cmtt10.300 sf
+83 91(})s
+22(else)h
+21(if)h
+21(\(\(P_EX\))h
+20(==)h
+22(\(EX_ID\)\))h
+20({)h
+91 205(EX)s
+16(OTHERS)h
+852(EX)h
+15(FORGET)h
+512 255(lint)s
+83 390(})s
+22(else)h
+21(if)h
+21(\(TRUE\))h
+21({)h
+732 554(else)s
+61(EX)h
+15(FORGET)h
+83 689(})s
+22(else)h
+21(_exrai\(EX_I)h
+-1(D\);)h
+19(}})h
+1804 803(ex)s
+15(cxlc)h
+1126 903(expop)s
+83 1088({_expop\(&_ex_)s
+-1(cxlc\))h
+-1(;})h
+83 1567({_ex_cx_t)s
+20(_ex_cxlc;)h
+303(\\)h
+105 1616(_ex_cxlc._ex)s
+-1(_prev)h
+19(=)h
+22(_EX_CURR;)h
+63(\\)h
+105 1666(_EX_CURR)s
+216(=)h
+22(&_ex_cxlc;)h
+41(\\)h
+105 1716(if)s
+21(\(!setjmp\(_ex_c)h
+-1(xlc.)h
+-1(_ex_j)h
+-1(mbf\)\))h
+19({)h
+83 1898(;EX_POP})s
+20(else)h
+21({EX_POP;)h
+20(if)h
+22(\(FALSE\))h
+20({)h
+83 2079(})s
+22(else)h
+21(if)h
+21(\(\(P_EX\))h
+20(==)h
+22(\(EX_ID\)\))h
+20({)h
+83 2261(})s
+22(else)h
+21(if)h
+21(\(TRUE\))h
+21({)h
+83 2442(})s
+22(else)h
+21(longjmp\(_EX)h
+-1(_CUR)h
+-1(R->_e)h
+-1(x_jmb)h
+-1(f,NON)h
+-1(_ZERO)h
+-1(\);)h
+20(}})h
+83 2624({_EX_CURR)s
+20(=)h
+22(_EX_CURR->)h
+-1(_ex_p)h
+-1(rev;})h
+cmr10.300 sf
+775 42([48])s
+0 205(The)s
+230(macro)h
+19(is)h
+20(also)h
+19(easily)h
+20(impl)h
+-1(em)h
+-1(en)h
+-1(ted)h
+19(\(but,)h
+22(lik)h
+-1(e)h
+210(,)h
+18(could)h
+20(conceiv)h
+-2(ably)h
+19(pro)h
+-1(v)h
+-1(ok)h
+-1(e)h
+20(some)h
+0 255(incon)s
+-1(v)h
+-1(enien)h
+-1(t)h
+14(w)h
+-1(arnings)h
+13(from)h
+100(.)h
+684 340([49])s
+0 504(T)s
+-3(o)h
+16(end)h
+17(the)h
+17(construct,)h
+18(w)h
+-1(e)h
+17(terminate)h
+16(the)h
+17(curren)h
+-1(t)h
+18(handler,)h
+17(re-raise)h
+18(the)h
+17(curren)h
+-1(tly)h
+17(liv)h
+-1(e)h
+16(exception)h
+17(if)h
+16(it)h
+16(has)h
+17(not)h
+0 554(already)s
+14(b)h
+1(een)h
+15(caugh)h
+-1(t,)h
+13(and)h
+14(terminate)h
+13(the)h
+115(of)h
+218(and)h
+13(the)h
+15(outer)h
+14(braces)h
+15(of)h
+14(the)h
+14(en)h
+-1(tire)h
+15(construct.)h
+600 639([50])s
+0 803(P)s
+-1(opping)h
+9(the)h
+11(curren)h
+-1(t)h
+11(exception)h
+11(con)h
+-1(text)h
+11(is)h
+9(easily)h
+10(ac)h
+-1(hiev)h
+-1(ed)h
+10(with)h
+10(a)h
+9(function)h
+10(call.)h
+16(Note:)h
+16(The)h
+11(reference)h
+12(to)h
+0 853(will)s
+10(simply)h
+9(not)h
+12(compile)h
+10(if)h
+10(there)h
+13(isn't)h
+11(a)h
+11(curren)h
+-1(t)h
+13(con)h
+-1(text.)h
+18(This)h
+12(correctly)h
+12(precludes)h
+14(the)h
+12(use)h
+12(of)h
+11(this)h
+11(macro)h
+11(outside)h
+0 903(an)s
+14(exception)h
+16(blo)h
+1(c)h
+-1(k.)h
+19(It)h
+15(also)h
+14(guaran)h
+-1(tees)h
+16(that)h
+14(the)h
+15(argumen)h
+-1(t)h
+14(to)h
+153(will)h
+14(b)h
+1(e)h
+15(a)h
+14(p)h
+1(oin)h
+-1(ter)h
+15(to)h
+14(the)h
+15(con)h
+-1(text)h
+16(record)h
+0 953(of)s
+13(the)h
+15(innermost)h
+13(statically-enclosing)h
+13(exception)h
+14(blo)h
+1(c)h
+-1(k.)h
+597 1038([51])s
+0 1332(Here)s
+15(are)h
+13(the)h
+14(fast,)h
+13(inline)h
+13(v)h
+-1(ersions)h
+13(of)h
+13(the)h
+14(exp)h
+1(orted)h
+15(macros.)h
+17(This)h
+13(v)h
+-1(ersion)h
+13(of)h
+13(the)h
+14(macros)h
+12(op)h
+1(erates)h
+15(in)h
+13(exactly)h
+13(the)h
+0 1382(same)s
+12(w)h
+-1(a)h
+-1(y)h
+13(as)h
+13(the)h
+14(other)h
+14(v)h
+-1(ersion)h
+14(except)h
+14(that)h
+14(no)h
+13(c)h
+-1(hec)h
+-1(king)h
+13(is)h
+14(p)h
+1(erformed)h
+13(whatso)h
+1(ev)h
+-1(er.)h
+19(This)h
+13(v)h
+-1(ersion)h
+13(of)h
+13(the)h
+14(macros)h
+0 1431(p)s
+1(erforms)h
+13(ev)h
+-1(erything)h
+15(on)h
+13(the)h
+15(sp)h
+1(ot,)h
+14(without)h
+13(calling)h
+13(an)h
+-1(y)h
+13(supp)h
+1(ort)h
+15(functions)h
+14(at)h
+13(all.)h
+649 1517([52])s
+691 1848([53])s
+777 2029([54])s
+686 2211([55])s
+602 2392([56])s
+599 2574([57])s
+954 2770(24)s
+13 2 493 42 r
+13 2 686 42 r
+14 2 138 205 r
+14 2 1182 205 r
+13 2 493 340 r
+14 2 928 554 r
+13 2 493 639 r
+14 2 1790 803 r
+14 2 1851 803 r
+14 2 1113 903 r
+13 2 493 1038 r
+13 2 495 1517 r
+13 2 495 1848 r
+13 2 495 2029 r
+13 2 688 2029 r
+13 2 495 2211 r
+13 2 495 2392 r
+13 2 495 2574 r
+24 @eop
+25 @bop0
+cmr10.432 sf
+[<007F000001FFC0000380F0000600380008001C0018000C001000060030000600300006
+0030000600380006003C0006003E000C001F8008001FC010000FF0200007F8C00003FF80
+0001FF0000007FC00000FFE000030FF8000603FC001C01FE0038007E0030003F0070000F
+0070000780E0000780E0000380E0000380E0000380E0000380F000030070000700780006
+0038000C001E0038000F80F00003FFE000007F0000>
+32 41 -2 39 30] 56 dc
+[<FFFFFFFF00FFFFFFFF0007E0003F0003E000070003E000038003E000018003E0000180
+03E000008003E000008003E000008003E000008003E000004003E002004003E002004003
+E002000003E002000003E002000003E006000003E00E000003FFFE000003FFFE000003E0
+0E000003E006000003E002000003E002000003E002000003E002000003E002000003E000
+000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
+0003E000000003E000000007F0000000FFFFE00000FFFFE00000>
+40 41 -2 40 39] 70 dc
+[<0783F800FF8C1C00FF900E000FA0070007A0078007C0078007C0078007800780078007
+800780078007800780078007800780078007800780078007800780078007800780078007
+80078007800780078007800780078007800780078007800780FFFCFFFCFFFCFFFC>
+32 26 -1 25 33] 110 dc
+[<0080000080000080000080000180000180000180000380000380000780000F80001FFF
+80FFFF800780000780000780000780000780000780000780000780000780000780000780
+0007800007800007804007804007804007804007804007804007804003C08001C08000E1
+00003E00>
+24 37 -1 36 23] 116 dc
+[<FFF03FF0FFF03FF00FC01F8007C00E0003C0080001E0180000F0100000F82000007840
+00003C8000001F8000001F0000000F000000078000000BC000001BE0000011E0000020F0
+000040780000807C0001803C0001001E0007000F001F801F80FFC07FF8FFC07FF8>
+32 26 -1 25 32] 120 dc
+cmr7.300 sf
+[<07C00C201070207060006000C000CF00D0C0E060C020C030C030C03040306020206010
+C00F00>
+16 19 -2 18 17] 54 dc
+[<0F00308060404060C020C030C030C0304030607030B00F30003000200060E040E08041
+003E00>
+16 19 -2 18 17] 57 dc
+cmsl10.300 sf
+[<FFF87FE00F800F000F0006000F0004000F0004000F0004000F0004001E0008001E0008
+001E0008001E0008001E0008001E0008003C0010003C0010003C0010003C0010003C0010
+003C0010007800200078002000780020003800400038004000380080001C0100000C0200
+00070C000001F00000>
+32 29 -6 27 31] 85 dc
+25 @bop1
+cmbx10.300 sf
+733 2420(M)s
+cmti10.300 sf
+856 2594(b)s
+-2(efor)h
+-2(e)h
+cmsy10.300 sf
+359 278(\021)s
+62 328(f)s
+1283 378(g)s
+449 1150(\021)s
+62 1200(f)s
+699(g)h
+358 1349(\021)s
+62 1399(f)s
+83 2146(g)s
+792 2420(\021)s
+62 2470(f)s
+634(g)h
+cmr10.432 sf
+0 863(4.8.1)s
+19(F)h
+-5(unction)h
+41(exrai)h
+cmbx10.432 sf
+0 42(4.7)s
+24(F)h
+-6(unction)h
+23(ex)h
+24(str)h
+0 577(4.8)s
+24(Supp)h
+2(ort)h
+24(F)h
+-6(unctions)h
+cmr7.300 sf
+0 428(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(31.)h
+0 1249(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(33.)h
+0 2196(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(31.)h
+0 2520(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nitions)h
+13(60)h
+10(and)h
+11(69.)h
+cmsl10.300 sf
+0 278(F)s
+-3(unction)h
+14(ex)h
+15(str)h
+0 1150(F)s
+-3(unction)h
+14(sp)h
+1(ec)h
+30(exrai)h
+0 1349(F)s
+-3(unction)h
+28(exrai)h
+105 1748(T)s
+-3(ak)h
+-1(e)h
+13(a)h
+14(cop)h
+-1(y)h
+14(of)h
+28(EX)h
+15(CURR)h
+13(in)h
+14(p)h
+15(curr)h
+105 1797(Set)s
+14(the)h
+15(exception)h
+14(ID)h
+105 1847(Bom)s
+-1(b)h
+12(if)h
+13(the)h
+15(stac)h
+-1(k)h
+14(is)h
+14(empt)h
+-1(y)h
+105 1897(Bom)s
+-1(b)h
+12(if)h
+13(the)h
+15(target)h
+14(con)h
+-1(text)h
+15(is)h
+14(not)h
+13(on)h
+14(the)h
+14(stac)h
+-1(k)h
+105 1947(Bom)s
+-1(b)h
+12(if)h
+13(the)h
+15(target)h
+14(con)h
+-1(text)h
+15(is)h
+14(corrupted)h
+105 1997(Raise)s
+13(the)h
+15(exception)h
+0 2420(T)s
+-3(ak)h
+-1(e)h
+13(a)h
+14(cop)h
+-1(y)h
+14(of)h
+28(EX)h
+15(CURR)h
+13(in)h
+14(p)h
+15(curr)h
+cmtt10.300 sf
+249 129(ex)s
+15(str)h
+83 378(EXPORT)s
+21(string)h
+20(ex_str)h
+21(\(p_ex\))h
+20(p_ex_t)h
+21(p_ex;)h
+21({return)h
+20(p_ex;})h
+261 951(exrai)s
+1276(EX)h
+15(RAISE)h
+83 1200(EXPORT)s
+21(void)h
+21(_exrai)h
+20(P_\(\(p_ex_t\)\);)h
+83 1449(EXPORT)s
+21(void)h
+21(_exrai)h
+20(\(p_ex\))h
+83 1499(p_ex_t)s
+21(p_ex;)h
+83 1548({)s
+83 1598(#if)s
+21(_EX_FAST)h
+105 1648(as_bomb\("_ex)s
+-1(rai:)h
+19(This)h
+21(function)h
+20(should)h
+21(not)h
+21(be)h
+22(called)h
+20(with)h
+21(_EX_FAST==TRU)h
+-1(E."\);)h
+83 1698(#else)s
+83 2046(#endif)s
+83 2096(})s
+667 2271(EX)s
+15(CURR)h
+466(EX)h
+15(CURR)h
+1195 2320(p)s
+15(curr)h
+83 2470(_ex_cx_t)s
+20(*)h
+22(p_curr)h
+20(=)h
+22(_EX_CURR;)h
+740 2594(EX)s
+16(ID)h
+908 2644(ex)s
+15(bomb)h
+cmr10.300 sf
+0 129(The)s
+15(function)h
+153(is)h
+14(easily)h
+14(implem)h
+-1(en)h
+-1(ted.)h
+18(Because)h
+17(exceptions)h
+15(are)h
+15(just)h
+15(p)h
+1(oin)h
+-1(ters)h
+15(to)h
+14(strings,)h
+14(all)h
+13(it)h
+14(has)h
+15(to)h
+14(do)h
+0 178(is)s
+14(return)h
+15(its)h
+14(argumen)h
+-1(t!)h
+280 278([58])s
+0 664(Although)s
+11(most)h
+11(of)h
+11(what)h
+11(this)h
+12(pac)h
+-1(k)h
+-2(age)h
+11(exp)h
+1(orts)h
+13(is)h
+11(macros,)h
+11(some)h
+11(of)h
+11(the)h
+12(macros)h
+11(translate)h
+12(in)h
+-1(to)h
+11(calls)h
+11(to)h
+12(the)h
+12(supp)h
+1(ort)h
+0 714(functions)s
+10(describ)h
+1(ed)h
+11(in)h
+10(this)h
+9(section.)h
+18(F)h
+-3(unctions)h
+9(ha)h
+-1(v)h
+-1(e)h
+10(b)h
+1(een)h
+11(used)h
+10(for)h
+10(op)h
+1(erations)h
+10(that)h
+9(are)h
+10(particularly)h
+9(long-winded.)h
+0 951(The)s
+13(function)h
+149(raises)h
+13(an)h
+12(exception.)h
+19(This)h
+12(function)h
+12(p)h
+1(erforms)h
+12(all)h
+11(the)h
+13(grun)h
+-1(t)h
+13(w)h
+-1(ork)h
+12(for)h
+12(the)h
+194(macro,)h
+0 1000(whic)s
+-1(h)h
+15(merely)h
+14(translates)h
+15(to)h
+15(a)h
+14(call)h
+14(of)h
+14(this)h
+15(function.)h
+21(The)h
+15(function)h
+14(sp)h
+1(eci\014cation)h
+16(app)h
+1(ears)h
+15(in)h
+15(the)h
+15(header)h
+16(\014le)h
+15(but)h
+0 1050(is)s
+14(not)h
+14(supp)h
+1(osed)h
+15(to)h
+13(b)h
+1(e)h
+15(seen)h
+15(b)h
+-1(y)h
+14(the)h
+14(clien)h
+-1(t.)h
+371 1150([59])s
+279 1349([60])s
+772 1748([61])s
+482 1797([62])s
+601 1847([63])s
+944 1897([64])s
+823 1947([65])s
+459 1997([66])s
+0 2271(This)s
+14(function)h
+15(refers)h
+16(to)h
+14(the)h
+15(v)h
+-2(alue)h
+14(of)h
+191(lots)h
+14(of)h
+14(times.)h
+20(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+191(could)h
+15(b)h
+1(e)h
+15(a)h
+14(function)h
+14(call.)h
+20(T)h
+-3(o)h
+0 2320(a)s
+-1(v)h
+-1(oid)h
+13(excessiv)h
+-1(e)h
+15(use)h
+15(of)h
+13(this)h
+14(v)h
+-2(ariable,)h
+12(w)h
+-1(e)h
+14(tak)h
+-1(e)h
+14(a)h
+14(cop)h
+-1(y)h
+14(of)h
+13(its)h
+14(v)h
+-2(alue)h
+13(in)h
+139(.)h
+667 2420([61])s
+0 2594(W)s
+-3(e)h
+12(set)h
+14(the)h
+14(global)h
+11(exception)h
+14(ID)h
+12(v)h
+-2(ariable)h
+260(p)h
+1(erforming)h
+12(all)h
+11(the)h
+14(sanit)h
+-1(y)h
+12(c)h
+-1(hec)h
+-1(ks)h
+15(so)h
+12(that)h
+13(if)h
+12(one)h
+14(of)h
+12(them)h
+0 2644(fails,)s
+12(the)h
+15(curren)h
+-1(t)h
+15(exception)h
+15(can)h
+14(b)h
+1(e)h
+14(prin)h
+-1(ted)h
+15(out)h
+13(b)h
+-1(y)h
+161(.)h
+954 2770(25)s
+21 2 469 42 r
+14 2 296 129 r
+13 2 216 278 r
+18 2 396 863 r
+14 2 248 951 r
+14 2 1694 951 r
+13 2 267 1150 r
+13 2 176 1349 r
+13 2 386 1748 r
+13 2 460 1748 r
+13 2 683 1748 r
+14 2 654 2271 r
+14 2 714 2271 r
+14 2 1267 2271 r
+14 2 1327 2271 r
+14 2 1220 2320 r
+13 2 282 2420 r
+13 2 355 2420 r
+13 2 578 2420 r
+14 2 727 2594 r
+14 2 787 2594 r
+14 2 955 2644 r
+25 @eop
+26 @bop0
+26 @bop1
+cmti10.300 sf
+1292 589(this)s
+cmsy10.300 sf
+456 42(\021)s
+62 91(f)s
+306(g)h
+573 365(\021)s
+62 415(f)s
+1632 465(g)s
+918 888(\021)s
+62 938(f)s
+149 1436(g)s
+797 1660(\021)s
+62 1710(f)s
+149 2059(g)s
+433 2283(\021)s
+62 2333(f)s
+765(g)h
+cmsl10.300 sf
+0 42(Set)s
+14(the)h
+15(exception)h
+15(ID)h
+0 365(Bom)s
+-1(b)h
+12(if)h
+14(the)h
+14(stac)h
+-1(k)h
+14(is)h
+14(empt)h
+-1(y)h
+0 888(Bom)s
+-1(b)h
+12(if)h
+14(the)h
+14(target)h
+14(con)h
+-1(text)h
+15(is)h
+14(not)h
+14(on)h
+13(the)h
+15(stac)h
+-1(k)h
+0 1660(Bom)s
+-1(b)h
+12(if)h
+14(the)h
+14(target)h
+14(con)h
+-1(text)h
+15(is)h
+14(corrupted)h
+0 2283(Raise)s
+14(the)h
+14(exception)h
+cmr7.300 sf
+0 141(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(60.)h
+0 515(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(60.)h
+0 1486(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(60.)h
+0 2109(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(60.)h
+0 2383(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(60.)h
+cmr10.300 sf
+378 42([62])s
+0 216(If)s
+18(the)h
+19(con)h
+-1(text)h
+18(stac)h
+-1(k)h
+19(is)h
+18(empt)h
+-1(y)h
+17(then)h
+19(there)h
+20(is)h
+18(no)h
+17(handler)h
+19(to)h
+18(catc)h
+-1(h)h
+19(the)h
+18(exception)h
+19(and)h
+18(w)h
+-1(e)h
+19(ha)h
+-1(v)h
+-1(e)h
+18(to)h
+18(b)h
+1(om)h
+-1(b)h
+16(the)h
+0 266(program.)s
+496 365([63])s
+0 589(If)s
+14(the)h
+14(target)h
+15(con)h
+-1(text)h
+14(is)h
+14(lo)h
+-1(w)h
+-1(er)h
+14(do)h
+-1(wn)h
+14(in)h
+13(memory)h
+12(than)h
+14(the)h
+14(stac)h
+-1(k)h
+15(frame)h
+12(of)h
+92(function)h
+14(\()h
+126(\),)h
+13(then)h
+14(b)h
+1(ecause)h
+0 639(stac)s
+-1(ks)h
+17(nearly)h
+17(alw)h
+-1(a)h
+-1(ys)h
+15(gro)h
+-1(w)h
+16(do)h
+-1(wn)h
+-1(w)h
+-1(ards,)h
+17(it)h
+16(is)h
+17(almo)h
+-1(st)h
+15(certain)h
+17(that)h
+17(a)h
+16(con)h
+-1(text)h
+18(w)h
+-1(as)h
+16(not)h
+17(p)h
+1(opp)h
+1(ed)h
+17(when)h
+17(it)h
+16(should)h
+0 689(ha)s
+-1(v)h
+-1(e)h
+15(b)h
+1(een.)h
+22(Strictly)h
+15(sp)h
+1(eaking,)h
+15(this)h
+15(test)h
+16(is)h
+15(non-p)h
+1(ortable.)h
+21(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+15(in)h
+14(practice,)h
+16(stac)h
+-1(ks)h
+16(gro)h
+-1(w)h
+14(do)h
+-1(wn)h
+-1(w)h
+-1(ard)h
+15(in)h
+14(the)h
+0 739(address)s
+13(space)h
+14(on)h
+12(nearly)h
+12(all)h
+11(mac)h
+-1(hines,)h
+11(and)h
+12(it's)h
+11(suc)h
+-1(h)h
+13(a)h
+12(p)h
+1(o)h
+-1(w)h
+-1(erful)h
+12(c)h
+-1(hec)h
+-1(k,)h
+13(it)h
+12(seems)h
+12(w)h
+-1(orth)h
+12(the)h
+13(p)h
+1(oten)h
+-1(tial)h
+11(p)h
+1(ortabilit)h
+-1(y)h
+0 789(problems.)s
+840 888([64])s
+0 1561(Chec)s
+-1(k)h
+15(the)h
+14(target)h
+14(con)h
+-1(text)h
+15(for)h
+13(corruptions.)h
+19(There)h
+15(is)h
+14(no)h
+14(p)h
+1(oin)h
+-1(t)h
+13(doing)h
+13(a)h
+180(to)h
+14(a)h
+13(corrupted)h
+16(con)h
+-1(text!)h
+718 1660([65])s
+0 2183(Actually)s
+13(raising)h
+13(the)h
+15(exception)h
+15(is)h
+13(the)h
+15(easy)h
+14(part!)h
+18(All)h
+13(that)h
+14(is)h
+14(required)h
+15(is)h
+14(a)h
+167(.)h
+354 2283([66])s
+954 2770(26)s
+cmtt10.300 sf
+83 91(_EX_ID)s
+21(=)h
+21(p_ex;)h
+83 465(if)s
+21(\(p_curr)h
+21(==)h
+21(NULL\))h
+21({as_wl\("_exr)h
+-1(ai:)h
+20(Unhandled)h
+20(exception.)h
+-1("\);)h
+20(ex_bomb\(\);})h
+1565 589(exrai)s
+83 988(if)s
+21(\(UWIDE\(&p_curr\))h
+19(>)h
+22(UWIDE\(&p_cu)h
+-1(rr->_)h
+-1(ex_jm)h
+-1(bf\)\))h
+127 1038({)s
+148 1088(as_wl\("_exrai:)s
+19(Target)h
+21(exception)h
+20(context)h
+20(is)h
+22(no)h
+21(longer)h
+20(legitimate."\);)h
+148 1137(as_wl\(")s
+173(Exception)h
+20(context)h
+21(resides)h
+20(beneath)h
+20(the)h
+21(top)h
+22(of)h
+21(stack."\);)h
+148 1187(as_wl\(")s
+173(This)h
+21(means)h
+21(that)h
+21(earlier)h
+20(on,)h
+22(control)h
+20(must)h
+21(have)h
+21(left)h
+21(an"\);)h
+148 1237(as_wl\(")s
+173(exception)h
+20(context)h
+21(without)h
+20(first)h
+21(popping)h
+20(its)h
+21(handler."\);)h
+148 1287(as_wl\(")s
+173(Look)h
+21(for)h
+21(jumps)h
+21(out)h
+21(of)h
+22(exception)h
+20(contexts)h
+20(that)h
+21(are)h
+21(not"\);)h
+148 1337(as_wl\(")s
+173(immediately)h
+20(preceded)h
+20(by)h
+21(calls)h
+21(to)h
+21(EX_POP."\);)h
+148 1386(ex_bomb\(\);)s
+127 1436(})s
+1241 1561(longjmp)s
+83 1760(if)s
+21(\(\(p_curr->_ex_m)h
+-1(ag1)h
+19(!=)h
+22(_EX_MAG1\))h
+20(||)h
+21(\(p_curr->_ex_)h
+-1(mag2)h
+19(!=)h
+22(_EX_MAG2\)\))h
+127 1810({)s
+148 1860(as_wl\("_exrai:)s
+19(Target)h
+21(exception)h
+20(context)h
+20(has)h
+21(been)h
+21(corrupted.)h
+20(This)h
+21(could"\);)h
+148 1910(as_wl\(")s
+173(be)h
+22(because)h
+20(an)h
+21(exception)h
+20(context)h
+21(wasn't)h
+20(popped,)h
+21(or)h
+21(it"\);)h
+148 1959(as_wl\(")s
+173(could)h
+21(be)h
+21(just)h
+21(a)h
+22(common)h
+21(garden-var)h
+-1(iety)h
+19(C)h
+22(corruption)h
+20(:-\)"\);)h
+148 2009(ex_bomb\(\);)s
+127 2059(})s
+1309 2183(longjmp)s
+83 2333(longjmp\(p_cur)s
+-1(r->_e)h
+-1(x_jm)h
+-1(bf,NO)h
+-1(N_ZER)h
+-1(O\);)h
+14 2 1552 589 r
+26 @eop
+27 @bop0
+cmr10.432 sf
+[<007F000003FFC0000701F0000C00F80010007C001C007C003E007E003E003E003E003E
+001E003E000C007E0000007C0000007C00000078000000F0000000E0000001C000000700
+0000FF00000001E0000000F0000000780000003C0000003E0000001F0000001F0000001F
+8000001F8030001F8078001F80FC001F80FC001F80FC001F00F8001F0040003F0040003E
+0030007C001800F8000F01F00003FFC000007F0000>
+32 41 -2 39 30] 51 dc
+[<0783F000FF8C1C00FFB00F0007A0078007C003C0078003E0078001E0078001F0078001
+F0078000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F0078001
+F0078001F0078001E0078003C007C003C007C0078007A00E0007983C000787E000078000
+000780000007800000078000000780000007800000078000000780000007800000078000
+00FFFC0000FFFC0000>
+32 38 -1 25 33] 112 dc
+cmsl10.300 sf
+[<03FFFF8007C00F0007001E0006003C0006007C00040078000400F0000801E0000803E0
+000003C00000078000000F0000001F0000001E0000003C00000078000000F8000000F004
+0001E0080003C0080007800800078018000F0010001E0030003C0030003C00F0007803E0
+00FFFFE000>
+32 28 -2 27 25] 90 dc
+cmtt10.300 sf
+[<3801807C0380FE0380FE0700EE0700EE0E00EE0E00EE0E00FE1C00FE1C007C38003838
+0000700000700000700000E00000E00001C00001C00001C0000380000383800707C0070F
+E00E0EE00E0EE00E0EE01C0EE01C0EE0380FE03807C0180380>
+24 32 -1 28 22] 37 dc
+27 @bop1
+cmsy10.300 sf
+410 276(\021)s
+62 326(f)s
+83 923(g)s
+468 1454(\021)s
+62 1503(f)s
+785(g)h
+377 1651(\021)s
+62 1701(f)s
+83 2398(g)s
+1149 2670(\021)s
+cmr10.432 sf
+0 42(4.8.2)s
+19(F)h
+-5(unction)h
+20(ex)h
+20(b)h
+2(om)h
+-2(b)h
+0 1120(4.8.3)s
+19(F)h
+-5(unction)h
+41(exp)h
+2(op)h
+cmr7.300 sf
+0 973(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(31.)h
+0 1553(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(33.)h
+0 2448(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(31.)h
+cmsl10.300 sf
+0 276(F)s
+-3(unction)h
+14(ex)h
+15(b)h
+1(om)h
+-1(b)h
+0 1454(F)s
+-3(unction)h
+14(sp)h
+1(ec)h
+30(exp)h
+1(op)h
+0 1651(F)s
+-3(unction)h
+28(exp)h
+1(op)h
+105 2050(T)s
+-3(ak)h
+-1(e)h
+13(a)h
+14(cop)h
+-1(y)h
+14(of)h
+28(EX)h
+15(CURR)h
+13(in)h
+14(p)h
+15(curr)h
+105 2099(Bom)s
+-1(b)h
+12(if)h
+13(the)h
+15(curren)h
+-1(t)h
+15(con)h
+-1(text)h
+15(is)h
+14(not)h
+13(the)h
+15(top)h
+14(of)h
+13(stac)h
+-1(k)h
+14(con)h
+-1(text)h
+105 2149(Bom)s
+-1(b)h
+12(if)h
+13(curren)h
+-1(t)h
+16(con)h
+-1(text)h
+14(is)h
+14(corrupted)h
+105 2199(Zap)s
+14(the)h
+14(curren)h
+-1(t)h
+16(con)h
+-1(text)h
+105 2249(P)s
+-1(op)h
+14(the)h
+14(con)h
+-1(text)h
+0 2670(Bom)s
+-1(b)h
+12(if)h
+14(the)h
+14(curren)h
+-1(t)h
+15(con)h
+-1(text)h
+15(is)h
+14(not)h
+14(the)h
+14(top)h
+14(of)h
+13(stac)h
+-1(k)h
+14(con)h
+-1(text)h
+cmtt10.300 sf
+254 128(ex)s
+15(bomb)h
+650 178(exrai)s
+83 375(LOCAL)s
+21(void)h
+21(ex_bomb)h
+20(P_\(\(void\)\);)h
+83 425(LOCAL)s
+21(void)h
+21(ex_bomb)h
+20(\(\))h
+83 475({)s
+105 525(char)s
+21(s[100];)h
+105 575(as_wr\(")s
+173(Exception)h
+20(desc)h
+21(is)h
+21(:)h
+22(\\""\);)h
+20(as_wr\(EX_ID\);)h
+19(as_wl\("\\"."\);)h
+105 624(as_wr\(")s
+173(Exception)h
+20(id)h
+65(is)h
+21(:)h
+22("\);)h
+105 674(sprintf\(s,"%)s
+-1(lu)h
+20(\(=)h
+21(%lX\)",ULONG\(E)h
+-1(X_ID\))h
+-1(,ULON)h
+-1(G\(EX_)h
+-1(ID\)\))h
+-1(;)h
+20(as_wl\(s\);)h
+105 724(as_wr\(")s
+173(Exception)h
+20(info)h
+21(is)h
+21(:)h
+22("\);)h
+105 774(sprintf\(s,"%)s
+-1(lu)h
+20(\(=)h
+21(%lX\)",ULONG\(E)h
+-1(X_INF)h
+-1(O\),UL)h
+-1(ONG\(E)h
+-1(X_IN)h
+-1(FO\)\);)h
+19(as_wl\(s\);)h
+105 824(as_bomb\("Abo)s
+-1(rting)h
+19(program)h
+20(after)h
+21(exception)h
+20(error."\);)h
+83 874(})s
+261 1206(expop)s
+1633 1305(EX)s
+15(CURR)h
+83 1503(EXPORT)s
+21(void)h
+21(_expop)h
+20(P_\(\(_ex_cx_t)h
+19(*\)\);)h
+83 1751(EXPORT)s
+21(void)h
+21(_expop)h
+20(\(p_check\))h
+83 1801(_ex_cx_t)s
+20(*p_check;)h
+83 1850({)s
+83 1900(#if)s
+21(_EX_FAST)h
+105 1950(as_bomb\("_ex)s
+-1(rai:)h
+19(This)h
+21(function)h
+20(should)h
+21(not)h
+21(be)h
+22(called)h
+20(with)h
+21(_EX_FAST==TRU)h
+-1(E."\);)h
+83 2000(#else)s
+83 2299(#endif)s
+83 2349(})s
+cmr10.300 sf
+0 128(The)s
+17(function)h
+181(writes)h
+17(out)h
+17(a)h
+17(description)h
+18(of)h
+16(the)h
+18(most)h
+16(recen)h
+-1(tly)h
+18(raised)h
+17(exception)h
+18(and)h
+17(then)h
+18(b)h
+1(om)h
+-1(bs)h
+15(the)h
+0 178(program.)s
+16(This)h
+14(function)h
+14(is)h
+14(used)h
+14(b)h
+-1(y)h
+140(.)h
+333 276([67)s
+-1(])h
+0 1206(The)s
+13(function)h
+149(p)h
+1(ops)h
+13(the)h
+13(curren)h
+-1(t)h
+14(exception)h
+13(blo)h
+1(c)h
+-1(k)h
+12(from)h
+11(the)h
+13(con)h
+-1(text)h
+13(stac)h
+-1(k.)h
+18(Before)h
+13(doing)h
+12(this,)h
+12(it)h
+12(p)h
+1(erforms)h
+0 1256(a)s
+16(few)h
+17(c)h
+-1(hec)h
+-1(ks.)h
+28(T)h
+-3(o)h
+15(assist)h
+18(it)h
+16(with)h
+16(its)h
+17(c)h
+-1(hec)h
+-1(ks,)h
+18(the)h
+17(caller)h
+17(m)h
+-1(ust)h
+15(pass)h
+17(a)h
+17(p)h
+1(oin)h
+-1(ter)h
+16(to)h
+17(the)h
+17(curren)h
+-1(t)h
+18(con)h
+-1(text)h
+18(record)h
+17(in)h
+0 1305(the)s
+15(\014rst)h
+16(parameter.)h
+20(This)h
+15(can)h
+14(alw)h
+-1(a)h
+-1(ys)h
+14(b)h
+1(e)h
+15(done)h
+15(b)h
+-1(y)h
+15(the)h
+15(caller)h
+15(directly)h
+15(\(without)h
+14(referencing)h
+179(\))h
+14(b)h
+1(ecause)h
+0 1355(p)s
+1(opping)h
+13(is)h
+14(only)h
+13(supp)h
+1(osed)h
+15(to)h
+14(tak)h
+-1(e)h
+14(place)h
+14(within)h
+13(the)h
+15(static)h
+14(con)h
+-1(text)h
+15(of)h
+13(an)h
+13(enclosing)h
+14(exception)h
+15(blo)h
+1(c)h
+-1(k.)h
+389 1454([68])s
+297 1651([69])s
+772 2050([61])s
+1175 2099([70])s
+773 2149([71])s
+538 2199([72])s
+395 2249([73])s
+0 2522(The)s
+15(\014rst)h
+16(c)h
+-1(hec)h
+-1(k)h
+16(test)h
+16(is)h
+14(to)h
+15(mak)h
+-1(e)h
+13(sure)h
+16(that)h
+15(the)h
+16(con)h
+-1(text)h
+15(ab)h
+1(out)h
+15(to)h
+15(b)h
+1(e)h
+15(p)h
+1(opp)h
+1(ed)h
+16(is)h
+15(the)h
+15(curren)h
+-1(t)h
+16(con)h
+-1(text)h
+16(|)h
+14(the)h
+16(one)h
+0 2572(statically)s
+13(enclosing)h
+14(the)h
+14(p)h
+1(op)h
+14(call.)h
+1070 2670([70])s
+954 2770(27)s
+18 2 456 42 r
+14 2 301 128 r
+14 2 637 178 r
+13 2 216 276 r
+18 2 396 1120 r
+14 2 248 1206 r
+14 2 1620 1305 r
+14 2 1680 1305 r
+13 2 267 1454 r
+13 2 176 1651 r
+13 2 386 2050 r
+13 2 460 2050 r
+13 2 683 2050 r
+27 @eop
+28 @bop0
+cmtt10.300 sf
+[<1C303F78FFF8F7E061C0>
+16 5 -4 24 22] 126 dc
+28 @bop1
+cmsy10.300 sf
+62 42(f)s
+83 440(g)s
+748 714(\021)s
+62 764(f)s
+83 1162(g)s
+512 1436(\021)s
+62 1486(f)s
+83 1636(g)s
+369 1860(\021)s
+62 1910(f)s
+612(g)h
+cmsl10.300 sf
+0 714(Bom)s
+-1(b)h
+12(if)h
+14(curren)h
+-1(t)h
+15(con)h
+-1(text)h
+15(is)h
+13(corrupted)h
+0 1436(Zap)s
+14(the)h
+15(curren)h
+-1(t)h
+15(con)h
+-1(text)h
+0 1860(P)s
+-1(op)h
+14(the)h
+14(con)h
+-1(text)h
+cmr7.300 sf
+0 490(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(69.)h
+0 1212(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(69.)h
+0 1685(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(69.)h
+0 1959(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(69.)h
+cmr10.300 sf
+0 565(The)s
+12(second)h
+12(c)h
+-1(hec)h
+-1(k)h
+12(tests)h
+12(the)h
+12(curren)h
+-1(t)h
+12(con)h
+-1(text)h
+12(\(the)h
+12(one)h
+11(ab)h
+1(out)h
+11(to)h
+11(b)h
+1(e)h
+12(p)h
+1(opp)h
+1(ed\))h
+12(to)h
+11(mak)h
+-1(e)h
+9(sure)h
+12(that)h
+12(it)h
+10(isn't)h
+11(corrupted.)h
+0 614(If)s
+14(it)h
+13(is,)h
+13(then)h
+15(the)h
+14(program)h
+13(should)h
+13(b)h
+1(e)h
+15(b)h
+1(om)h
+-1(b)h
+1(ed.)h
+668 714([71])s
+0 1287(Before)s
+17(p)h
+1(opping)h
+16(the)h
+17(curren)h
+-1(t)h
+17(con)h
+-1(text,)h
+17(w)h
+-1(e)h
+17(need)h
+17(to)h
+16(zap)h
+16(its)h
+16(magic)h
+15(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+16(so)h
+16(that)h
+16(they)h
+17(don't)h
+15(\015oat)h
+16(around)h
+16(in)h
+0 1337(stac)s
+-1(k)h
+13(mem)h
+-1(ory)h
+11(where)h
+13(they)h
+13(migh)h
+-1(t)h
+10(cause)h
+13(some)h
+12(future)h
+13(magi)h
+-1(c)h
+11(n)h
+-1(um)h
+-1(b)h
+1(er)h
+12(test)h
+13(to)h
+12(succeed)h
+15(when)h
+12(it)h
+12(should)h
+12(ha)h
+-1(v)h
+-1(e)h
+12(failed.)h
+433 1436([72])s
+0 1760(Ha)s
+-1(ving)h
+13(c)h
+-1(hec)h
+-1(k)h
+-1(ed)h
+15(and)h
+14(zapp)h
+1(ed)h
+15(the)h
+14(con)h
+-1(text,)h
+14(p)h
+1(opping)h
+13(it)h
+14(is)h
+14(easy!)h
+290 1860([73])s
+954 2770(28)s
+cmtt10.300 sf
+83 91(if)s
+21(\(p_curr)h
+21(!=)h
+21(p_check\))h
+127 141({)s
+148 191(if)s
+22(\(p_curr)h
+20(==)h
+22(NULL\))h
+214 241(as_bomb\("_ex)s
+-1(pop:)h
+19(Context)h
+21(stack)h
+20(is)h
+22(empty."\);)h
+148 291(else)s
+214 340(as_bomb\("_ex)s
+-1(pop:)h
+19(Top)h
+21(of)h
+22(context)h
+20(stack)h
+21(is)h
+21(not)h
+21(the)h
+22(current)h
+20(context."\);)h
+127 390(})s
+83 814(if)s
+21(\(\(p_curr->_ex_m)h
+-1(ag1)h
+19(!=)h
+22(_EX_MAG1\))h
+20(||)h
+21(\(p_curr->_ex_)h
+-1(mag2)h
+19(!=)h
+22(_EX_MAG2\)\))h
+127 863({)s
+148 913(as_wl\("_ex_rai:)s
+19(Target)h
+21(exception)h
+20(context)h
+20(has)h
+21(been)h
+21(corrupted.)h
+20(This)h
+21(could"\);)h
+148 963(as_wl\(")s
+195(be)h
+21(because)h
+21(an)h
+21(exception)h
+20(context)h
+20(wasn't)h
+21(popped,)h
+20(or)h
+22(it"\);)h
+148 1013(as_wl\(")s
+195(could)h
+21(be)h
+21(just)h
+21(a)h
+22(common)h
+20(garden-variety)h
+19(C)h
+22(corruption)h
+20(:-\)"\);)h
+148 1063(as_bomb\("Aborti)s
+-1(ng)h
+20(program)h
+20(after)h
+21(exception)h
+20(error."\);)h
+127 1112(})s
+83 1536(p_curr->_ex_m)s
+-1(ag1)h
+20(=)h
+21(~_EX_MAG1;)h
+83 1586(p_curr->_ex_m)s
+-1(ag2)h
+20(=)h
+21(~_EX_MAG2;)h
+83 1910(_EX_CURR)s
+20(=)h
+22(p_curr->_ex)h
+-1(_prev)h
+-1(;)h
+28 @eop
+29 @bop0
+cmbx10.518 sf
+[<0C0000380FC003F80FFFFFF80FFFFFF00FFFFFE00FFFFFC00FFFFF800FFFFF000FFFFC
+000FFFF0000FFF00000F0000000F0000000F0000000F0000000F0000000F0000000F0000
+000F0FF8000F7FFF000FFFFFC00FF01FE00F800FF00F0007F80E0007FC000003FE000003
+FE000003FE000003FF000003FF1E0003FF7F8003FFFF8003FFFFC003FFFFC003FFFFC003
+FFFF8003FEFF8003FE7F0007FC7C0007FC3C000FF81E001FF00FC07FE007FFFF8001FFFE
+00003FE000>
+32 46 -4 45 41] 53 dc
+[<3FFFFFFFFFFF003FFFFFFFFFFF003FFFFFFFFFFF003FE00FFC01FF007F000FFC003F80
+7E000FFC001F807C000FFC000F8078000FFC00078078000FFC00078070000FFC00038070
+000FFC00038070000FFC00038070000FFC000380E0000FFC0001C0E0000FFC0001C0E000
+0FFC0001C0E0000FFC0001C000000FFC00000000000FFC00000000000FFC00000000000F
+FC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC
+00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00
+000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0000
+0000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC000000
+00000FFC00000000000FFC00000000000FFC00000000000FFC000000007FFFFFFF800000
+7FFFFFFF8000007FFFFFFF8000>
+56 48 -3 47 57] 84 dc
+cmsl10.300 sf
+[<00F800038E000606000C03000C03001803803803803803803003807003807003807003
+80700380E00700E00700E00700E00700E00700E00600E00E00C00E00C00E00C00C00C01C
+00C0180060300060600030C0001F0000>
+24 29 -4 27 21] 48 dc
+[<0018007003F00C7000700070007000E000E000E000E000E000E001C001C001C001C001
+C001C003800380038003800380038007000780FFF8>
+16 28 -4 27 21] 49 dc
+[<007E000183800201C00400E00400E00F00E00F00E01F00E01F00E00E00E00001E00001
+C0000380000380000700000E00001C0000380000600000C0000180000300800600800801
+001001003FFF007FFE00FFFE00>
+24 28 -2 27 21] 50 dc
+[<007C000187000203800403800F03C00F03C00F03C00E0380000380000700000600000C
+0000380003F000001C00000E00000E00000F00000F00000F00700F00F80F00F80F00F00E
+00E01E00801C004038003070000FC000>
+24 29 -3 27 21] 51 dc
+[<0000C0000180000380000380000780000B8000138000270000670000C7000087000107
+00020700040E00080E00180E00100E00200E00400E00FFFFC0001C00001C00001C00001C
+00001C00003800003C0003FF80>
+24 28 -2 27 21] 52 dc
+[<0301C003FF8003FE0007FC0004000004000004000004000004000008000008F8000B0C
+000C0E00080700080700000700000780000780000780700F00F00F00F00F00F00E00801E
+00801C0040380040300030E0000F8000>
+24 29 -3 27 21] 53 dc
+[<003E0000E1000180800303800607800C07801C070018000038000030000071F0007618
+00780C00E80E00F00600F00600E00700E00700E00700E00E00C00E00C00E00C00E00C01C
+00E0180060380060300030C0000F8000>
+24 29 -4 27 21] 54 dc
+[<1000003FFFC03FFFC03FFF806001004002004004008008000008000010000020000040
+0000C0000080000180000180000300000700000700000F00000E00000E00001E00001E00
+001E00003C00003C00003C0000180000>
+24 29 -5 27 21] 55 dc
+[<007C000183000201800601800C00C00C00C00C00C01C01801C01801E03000F86000FCC
+0007F00003F80003FC000C7E00183F00300F00600700600300C00300C00300C00300C002
+00C006006004006018003830000FC000>
+24 29 -3 27 21] 56 dc
+[<00F8000304000606000C03001C03003803003803803003807003807003807003807003
+80700780700700700F00300F0018170008270007CE00000E00000C00001C00601800F038
+00F03000E0600080C0004380003E0000>
+24 29 -4 27 21] 57 dc
+29 @bop1
+cmsy10.300 sf
+391 560(\021)s
+62 610(f)s
+cmbx10.518 sf
+0 49(5)s
+28(T)h
+-7(est)h
+27(Program)h
+cmsl10.300 sf
+0 560(T)s
+-3(est)h
+14(program)h
+13(\014le)h
+83 659(Con\014guration)s
+13(header)h
+15(notice)h
+83 1207(F)s
+-3(unction)h
+14(sc01)h
+83 1257(F)s
+-3(unction)h
+14(sc02)h
+83 1307(F)s
+-3(unction)h
+14(sc03)h
+83 1357(F)s
+-3(unction)h
+14(sc04)h
+83 1407(F)s
+-3(unction)h
+14(sc05)h
+83 1456(F)s
+-3(unction)h
+14(sc06)h
+83 1506(F)s
+-3(unction)h
+14(sc07)h
+83 1556(F)s
+-3(unction)h
+14(sc08)h
+83 1606(F)s
+-3(unction)h
+14(sc09)h
+83 1706(F)s
+-3(unction)h
+14(fa01)h
+83 1755(F)s
+-3(unction)h
+14(fa02)h
+83 1805(F)s
+-3(unction)h
+14(fa03)h
+83 1855(F)s
+-3(unction)h
+14(fa04)h
+83 1905(F)s
+-3(unction)h
+14(fa05)h
+83 1955(F)s
+-3(unction)h
+14(fa06)h
+83 2004(F)s
+-3(unction)h
+14(fa07)h
+83 2054(F)s
+-3(unction)h
+14(fa08)h
+83 2104(F)s
+-3(unction)h
+14(fa09)h
+cmtt10.300 sf
+1773 410(flag)s
+83 759(#include)s
+20("style.h")h
+83 809(#include)s
+20("except.h")h
+83 859(#include)s
+20("as.h")h
+83 958(EX_LOCAL\(slot)s
+-1(h_ex,)h
+-1("Slo)h
+-1(th)h
+20(exception"\);)h
+83 1008(EX_LOCAL\(walr)s
+-1(us_ex)h
+-1(,"Wa)h
+-1(lrus)h
+19(exception"\);)h
+83 1108(GLOVAR)s
+21(bool)h
+21(flag;)h
+83 2204(main\(\))s
+83 2253({)s
+105 2303(char)s
+21(ch;)h
+105 2403(printf\("Test)s
+19(Program)h
+20(for)h
+22(the)h
+21(EXCEPT)h
+20(Package\\n"\);)h
+105 2453(printf\("====)s
+-1(=====)h
+-1(====)h
+-1(=====)h
+-1(=====)h
+-1(=====)h
+-1(=====)h
+-1(==\\n")h
+-1(\);)h
+105 2503(printf\("This)s
+19(test)h
+21(program)h
+20(provides)h
+21(a)h
+21(number)h
+21(of)h
+21(different)h
+20(tests.)h
+21(Because\\n"\))h
+-1(;)h
+105 2552(printf\("some)s
+19(tests)h
+21(provoke)h
+20(the)h
+21(package)h
+21(to)h
+21(bomb)h
+21(on)h
+21(purpose,)h
+21(this)h
+21(test\\n"\);)h
+105 2602(printf\("prog)s
+-1(ram)h
+20(must)h
+20(be)h
+22(run)h
+21(a)h
+22(number)h
+20(of)h
+22(times,)h
+20(once)h
+21(for)h
+21(each)h
+21(test.\\n"\);)h
+105 2652(printf\("The)s
+19(0)h
+22(test)h
+21(performs)h
+20(a)h
+22(group)h
+20(of)h
+22(tests)h
+21(that)h
+20(are)h
+22(not)h
+21(supposed)h
+20(to\\n"\);)h
+cmr10.300 sf
+0 136(This)s
+11(section)h
+11(pro)h
+-1(vides)h
+11(a)h
+10(test)h
+12(program)h
+9(whic)h
+-1(h)h
+10(can)h
+11(b)h
+1(e)h
+11(used)h
+12(to)h
+10(test)h
+12(the)h
+11(exceptions)h
+12(pac)h
+-1(k)h
+-2(age.)h
+17(The)h
+11(program)h
+9(pro)h
+-1(vides)h
+0 186(nine)s
+12(success)h
+14(tests)h
+13(and)h
+11(nine)h
+12(failure)h
+11(tests.)h
+19(The)h
+12(success)h
+14(tests)h
+13(do)h
+11(not)h
+12(cause)h
+13(the)h
+12(program)h
+10(to)h
+12(terminate,)h
+11(and)h
+11(so)h
+12(can)h
+0 236(all)s
+14(b)h
+1(e)h
+15(p)h
+1(erformed)h
+15(in)h
+15(a)h
+14(single)h
+15(run.)h
+21(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+16(eac)h
+-1(h)h
+15(failure)h
+14(test)h
+16(causes)h
+17(the)h
+15(program)h
+14(to)h
+15(b)h
+1(om)h
+-1(b)h
+13(with)h
+15(an)h
+14(assertion)h
+0 286(error,)s
+13(and)h
+12(so)h
+12(the)h
+12(failure)h
+11(tests)h
+14(m)h
+-1(ust)h
+10(b)h
+1(e)h
+13(p)h
+1(erformed)h
+12(separately)h
+12(as)h
+12(nine)h
+12(separate)h
+13(in)h
+-1(v)h
+-1(o)h
+1(cations)h
+11(of)h
+12(the)h
+12(test)h
+13(program.)h
+0 336(A)s
+-1(t)h
+14(the)h
+14(end)h
+15(of)h
+13(this)h
+14(testing,)h
+14(the)h
+14(user)h
+15(can)h
+14(ha)h
+-1(v)h
+-1(e)h
+14(a)h
+14(high)h
+13(degree)h
+15(of)h
+14(con\014dence)h
+15(that)h
+14(the)h
+15(pac)h
+-1(k)h
+-2(age)h
+13(is)h
+14(w)h
+-1(orking.)h
+0 410(Eac)s
+-1(h)h
+21(of)h
+20(the)h
+22(eigh)h
+-1(teen)h
+21(tests)h
+22(is)h
+21(em)h
+-1(b)h
+1(o)h
+1(died)h
+20(in)h
+20(a)h
+21(separate)h
+22(function.)h
+38(The)h
+21(global)h
+20(b)h
+1(o)h
+1(olean)h
+20(v)h
+-2(ariable)h
+128(is)h
+20(a)h
+0 460(miscellaneous)s
+13(temp)h
+1(orary)h
+13(v)h
+-2(ariable)h
+13(whic)h
+-1(h)h
+13(is)h
+14(usually)h
+13(used)h
+15(to)h
+14(tell)h
+13(if)h
+13(an)h
+14(exception)h
+15(has)h
+14(\014red.)h
+313 560([74])s
+590 659([4])s
+336 1207([75])s
+336 1257([76])s
+336 1307([77])s
+336 1357([78])s
+336 1407([79])s
+336 1456([80])s
+336 1506([81])s
+336 1556([82])s
+336 1606([83])s
+336 1706([84])s
+336 1755([85])s
+336 1805([86])s
+336 1855([87])s
+336 1905([88])s
+336 1955([89])s
+336 2004([90])s
+336 2054([91])s
+336 2104([92])s
+954 2770(29)s
+29 @eop
+30 @bop0
+30 @bop1
+cmr10.300 sf
+954 2770(30)s
+cmtt10.300 sf
+105 42(printf\("fail)s
+-1(.)h
+20(The)h
+21(1..9)h
+21(tests)h
+21(each)h
+21(perform)h
+20(a)h
+22(test)h
+21(that)h
+21(is)h
+21(supposed)h
+20(to\\n"\);)h
+105 91(printf\("bomb)s
+19(the)h
+21(program)h
+21(if)h
+21(the)h
+21(test)h
+21(succeeds.)h
+20(The)h
+21(0)h
+22(test)h
+21(should)h
+20(be)h
+22(run\\n"\);)h
+105 141(printf\("with)s
+19(the)h
+21(package)h
+21(compiled)h
+20(with)h
+21(both)h
+21(_EX_FAST==F)h
+-1(ALSE)h
+19(and\\n"\);)h
+105 191(printf\("_EX_)s
+-1(FAST=)h
+-1(=TRU)h
+-1(E.)h
+20(The)h
+21(1..9)h
+21(tests)h
+21(should)h
+20(use)h
+21(only)h
+21(_EX_FAST==FALSE)h
+-1(.\\n"\))h
+-1(;)h
+105 241(printf\("\\n"\))s
+-1(;)h
+105 291(if)s
+21(\(_EX_FAST\))h
+105 340(printf\("Curr)s
+-1(ent)h
+20(value)h
+20(of)h
+22(EX_FAST)h
+20(==)h
+21(TRUE.\\n"\);)h
+105 390(else)s
+105 440(printf\("Curr)s
+-1(ent)h
+20(value)h
+20(of)h
+22(EX_FAST)h
+20(==)h
+21(FALSE.\\n"\);)h
+105 490(printf\("\\n"\))s
+-1(;)h
+105 540(printf\("Ente)s
+-1(r)h
+20(0)h
+22(for)h
+21(success)h
+20(tests,)h
+21(or)h
+21(1..9)h
+21(for)h
+21(one)h
+21(of)h
+22(nine)h
+21(fail)h
+21(tests>"\);)h
+105 589(ch=getchar\(\))s
+-1(;)h
+20(printf\("\\n"\))h
+-1(;)h
+105 639(if)s
+21(\(ch)h
+21(==)h
+22('0'\))h
+148 689({)s
+170 739(printf\("Succes)s
+-1(s)h
+20(Tests\\n"\);)h
+170 789(printf\("------)s
+-1(----)h
+-1(---\\n)h
+-1("\);)h
+170 839(printf\("The)s
+20(following)h
+20(tests)h
+20(\(sc01..sc09\))h
+20(test)h
+21(the)h
+21(normal)h
+20(features\\n"\);)h
+170 888(printf\("the)s
+20(exceptions)h
+19(package.)h
+21(You)h
+21(should)h
+20(see)h
+21(nine)h
+21(success)h
+21(lines\\n"\);)h
+170 938(printf\("appear)s
+19(on)h
+21(the)h
+22(screen.)h
+20(If)h
+21(the)h
+22(package)h
+20(bombs)h
+21(during)h
+20(this)h
+21(test,\\n"\);)h
+170 988(printf\("then)s
+20(something)h
+19(is)h
+22(wrong)h
+21(and)h
+21(should)h
+20(be)h
+22(fixed.\\n"\);)h
+170 1038(printf\("\\n"\);)s
+170 1088(sc01\(\);)s
+170 1137(sc02\(\);)s
+170 1187(sc03\(\);)s
+170 1237(sc04\(\);)s
+170 1287(sc05\(\);)s
+170 1337(sc06\(\);)s
+170 1386(sc07\(\);)s
+170 1436(sc08\(\);)s
+170 1486(sc09\(\);)s
+170 1536(printf\("\\n"\);)s
+170 1586(printf\("All)s
+20(of)h
+21(the)h
+21(success)h
+21(tests)h
+20(SUCCEEDED.\\n"\))h
+-1(;)h
+148 1636(})s
+105 1685(else)s
+148 1735({)s
+170 1785(if)s
+22(\(_EX_FAST\))h
+214 1835({)s
+236 1885(as_wl\("Erro)s
+-1(r)h
+20(in)h
+21(test)h
+21(configuration.)h
+19(An)h
+22(attempt)h
+20(was)h
+21(made)h
+21(to)h
+21(perform"\);)h
+236 1934(as_wl\("a)s
+20(1..9)h
+21(test)h
+21(with)h
+21(_EX_FAST==T)h
+-1(RUE.)h
+19(This)h
+21(does)h
+21(not)h
+21(make)h
+21(sense)h
+21(as"\);)h
+236 1984(as_wl\("thes)s
+-1(e)h
+20(tests)h
+21(test)h
+21(the)h
+21(error)h
+21(checking)h
+20(capability)h
+19(of)h
+22(the)h
+21(package"\);)h
+236 2034(as_wl\("and)s
+19(_EX_FAST=TRUE)h
+19(has)h
+22(all)h
+21(error)h
+21(checking)h
+20(turned)h
+20(off!"\);)h
+236 2084(as_bomb\("Pl)s
+-1(ease)h
+19(recompile)h
+20(with)h
+21(_EX_FAST==FAL)h
+-1(SE)h
+20(and)h
+21(try)h
+21(again."\);)h
+214 2134(})s
+170 2183(switch)s
+21(\(ch\))h
+192 2233({)s
+214 2283(case)s
+21('1':)h
+21(fa01\(\);)h
+214 2333(case)s
+21('2':)h
+21(fa02\(\);)h
+214 2383(case)s
+21('3':)h
+21(fa03\(\);)h
+214 2433(case)s
+21('4':)h
+21(fa04\(\);)h
+214 2482(case)s
+21('5':)h
+21(fa05\(\);)h
+214 2532(case)s
+21('6':)h
+21(fa06\(\);)h
+214 2582(case)s
+21('7':)h
+21(fa07\(\);)h
+214 2632(case)s
+21('8':)h
+21(fa08\(\);)h
+30 @eop
+31 @bop0
+cmbx10.432 sf
+[<003F800001FFF00007E0FC000FC07E001F803F001F803F003F001F803F001F807F001F
+C07F001FC07F001FC07F001FC0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001F
+E0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001F
+E07F001FC07F001FC07F001FC07F001FC03F001F803F001F801F803F001F803F000FC07E
+0007E0FC0001FFF000003F8000>
+32 39 -3 38 34] 48 dc
+cmtt10.300 sf
+[<7F0FE0FF8FF07F0FE01C07801C0F001C0E001C1C001C3C001C78001CF0001CE0001DF0
+001FF0001FF8001F38001E1C001C1C001C0E001C0E001C07001C07001C03807F07E0FF8F
+F07F07E0>
+24 25 0 24 22] 75 dc
+31 @bop1
+cmsy10.300 sf
+83 340(g)s
+332 726(\021)s
+62 776(f)s
+83 2221(g)s
+cmsl10.300 sf
+0 726(F)s
+-3(unction)h
+14(sc01)h
+cmbx10.432 sf
+0 540(5.1)s
+24(F)h
+-6(unction)h
+23(sc01)h
+cmr7.300 sf
+0 390(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(3.)h
+0 2271(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+cmr10.300 sf
+0 627(This)s
+14(test)h
+15(c)h
+-1(hec)h
+-1(ks)h
+15(to)h
+14(mak)h
+-1(e)h
+12(sure)h
+15(that)h
+14(exception)h
+15(blo)h
+1(c)h
+-1(ks)h
+14(op)h
+1(erate)h
+14(correctly)h
+15(when)h
+15(no)h
+14(exceptions)h
+15(are)h
+14(raised.)h
+253 726([75])s
+954 2770(31)s
+cmtt10.300 sf
+214 42(case)s
+21('9':)h
+21(fa09\(\);)h
+214 91(default:)s
+279 141(printf\("\\nCha)s
+-1(racte)h
+-1(r)h
+20(entered)h
+20(was)h
+22(not)h
+21(0..9.)h
+20(Aborting...\\n"\))h
+-1(;)h
+192 191(})s
+170 241(})s
+83 291(})s
+83 826(LOCAL)s
+21(void)h
+21(sc01)h
+21(P_\(\(void\)\);)h
+83 876(LOCAL)s
+21(void)h
+21(sc01)h
+21(\(\))h
+83 926({)s
+105 976(printf\("Test)s
+19(SC01:)h
+21(Exception)h
+20(block)h
+21(with)h
+21(no)h
+21(exceptions)h
+20(raised.\\n"\))h
+-1(;)h
+105 1075(/*)s
+21(The)h
+21(NULL)h
+21(exception)h
+20(block)h
+21(should)h
+21(be)h
+21(OK.)h
+21(*/)h
+105 1125(EX_BEGIN)s
+105 1175(EX_FORGET)s
+105 1225(EX_END)s
+105 1324(/*)s
+21(Now)h
+21(put)h
+22(some)h
+21(code)h
+20(in)h
+22(the)h
+21(normal)h
+21(section.)h
+20(*/)h
+105 1374(flag=FALSE;)s
+105 1424(EX_BEGIN)s
+170 1474(flag=TRUE;)s
+105 1523(EX_FORGET)s
+105 1573(EX_END)s
+105 1623(as_cold\(flag)s
+-1(,"sc0)h
+-1(1:)h
+20(First)h
+20(flag)h
+21(block)h
+21(test)h
+21(failed."\);)h
+105 1723(/*)s
+21(Make)h
+21(sure)h
+21(the)h
+21(EX_OTHERS)h
+20(branch)h
+21(only)h
+21(applies)h
+20(to)h
+21(exceptions.)h
+20(*/)h
+105 1773(flag=FALSE;)s
+105 1822(EX_BEGIN)s
+170 1872(flag=TRUE;)s
+105 1922(EX_FORGET)s
+170 1972(EX_OTHERS)s
+236 2022(as_bomb\("sc)s
+-1(01:)h
+19(Raise)h
+21(failed."\);)h
+105 2071(EX_END)s
+105 2121(as_cold\(flag)s
+-1(,"sc0)h
+-1(1:)h
+20(Second)h
+20(flag)h
+21(block)h
+21(test)h
+21(failed."\);)h
+83 2171(})s
+31 @eop
+32 @bop0
+32 @bop1
+cmsy10.300 sf
+332 224(\021)s
+62 274(f)s
+83 971(g)s
+332 1347(\021)s
+62 1397(f)s
+83 2095(g)s
+332 2471(\021)s
+62 2521(f)s
+cmsl10.300 sf
+0 224(F)s
+-3(unction)h
+14(sc02)h
+0 1347(F)s
+-3(unction)h
+14(sc03)h
+0 2471(F)s
+-3(unction)h
+14(sc04)h
+cmbx10.432 sf
+0 42(5.2)s
+24(F)h
+-6(unction)h
+23(sc02)h
+0 1165(5.3)s
+24(F)h
+-6(unction)h
+23(sc03)h
+0 2288(5.4)s
+24(F)h
+-6(unction)h
+23(sc04)h
+cmr7.300 sf
+0 1020(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+0 2144(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+cmr10.300 sf
+0 127(This)s
+12(test)h
+14(tests)h
+14(to)h
+12(mak)h
+-1(e)h
+11(sure)h
+13(that)h
+13(an)h
+12(exception)h
+13(raised)h
+13(within)h
+12(an)h
+12(exception)h
+13(blo)h
+1(c)h
+-1(k)h
+12(can)h
+13(b)h
+1(e)h
+13(caugh)h
+-1(t)h
+12(b)h
+-1(y)h
+12(that)h
+13(blo)h
+1(c)h
+-1(k.)h
+253 224([76])s
+0 1250(This)s
+14(test)h
+15(tests)h
+15(the)h
+218(feature.)h
+253 1347([77])s
+0 2374(This)s
+14(test)h
+15(tests)h
+15(nested)h
+15(exception)h
+15(blo)h
+1(c)h
+-1(ks.)h
+253 2471([78])s
+954 2770(32)s
+cmtt10.300 sf
+83 324(LOCAL)s
+21(void)h
+21(sc02)h
+21(P_\(\(void\)\);)h
+83 373(LOCAL)s
+21(void)h
+21(sc02)h
+21(\(\))h
+83 423({)s
+105 473(printf\("Test)s
+19(SC02:)h
+21(Exception)h
+20(caught)h
+20(within)h
+21(immediate)h
+20(block.\\n"\);)h
+105 523(flag)s
+21(=)h
+21(FALSE;)h
+105 573(EX_BEGIN)s
+170 622(EX_RAISE\(sloth)s
+-1(_ex\))h
+-1(;)h
+170 672(as_bomb\("sc02:)s
+19(Raise)h
+21(failed."\);)h
+105 722(EX_FORGET)s
+170 772(EX_WHEN\(sloth_)s
+-1(ex\))h
+19(flag=TRUE;)h
+105 822(EX_END)s
+105 872(as_cold\(flag)s
+-1(,"sc0)h
+-1(2:)h
+20(Exception)h
+20(was)h
+21(not)h
+21(caught)h
+21(by)h
+21(local)h
+21(block."\);)h
+83 921(})s
+345 1250(EX)s
+15(OTHERS)h
+83 1447(LOCAL)s
+21(void)h
+21(sc03)h
+21(P_\(\(void\)\);)h
+83 1497(LOCAL)s
+21(void)h
+21(sc03)h
+21(\(\))h
+83 1547({)s
+105 1596(printf\("Test)s
+19(SC03:)h
+21(Exception)h
+20(is)h
+21(caught)h
+21(by)h
+21(OTHERS)h
+21(clause.\\n"\))h
+-1(;)h
+105 1646(flag)s
+21(=)h
+21(FALSE;)h
+105 1696(EX_BEGIN)s
+170 1746(EX_RAISE\(sloth)s
+-1(_ex\))h
+-1(;)h
+170 1796(as_bomb\("sc03:)s
+19(Raise)h
+21(failed."\);)h
+105 1846(EX_FORGET)s
+170 1895(EX_OTHERS)s
+20(flag=TRUE;)h
+105 1945(EX_END)s
+105 1995(as_cold\(flag)s
+-1(,"sc0)h
+-1(3:)h
+20(Exception)h
+20(was)h
+21(not)h
+21(caught)h
+21(by)h
+21(EX_OTHERS)h
+20(clause."\);)h
+83 2045(})s
+83 2570(LOCAL)s
+21(void)h
+21(sc04)h
+21(P_\(\(void\)\);)h
+83 2620(LOCAL)s
+21(void)h
+21(sc04)h
+21(\(\))h
+83 2670({)s
+14 2 392 1250 r
+32 @eop
+33 @bop0
+33 @bop1
+cmsy10.300 sf
+83 1984(g)s
+332 2370(\021)s
+62 2420(f)s
+cmsl10.300 sf
+0 2370(F)s
+-3(unction)h
+14(sc05)h
+cmbx10.432 sf
+0 2183(5.5)s
+24(F)h
+-6(unction)h
+23(sc05)h
+cmr7.300 sf
+0 2034(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+cmr10.300 sf
+0 2271(This)s
+14(test)h
+15(tests)h
+15(whether)h
+219(can)h
+14(success)h
+1(fully)h
+14(re-raise)h
+15(an)h
+14(exception.)h
+253 2370([79])s
+954 2770(33)s
+cmtt10.300 sf
+105 42(printf\("Test)s
+19(SC04:)h
+21(Exception)h
+20(is)h
+21(caught)h
+21(by)h
+21(nested)h
+21(exception)h
+20(block.\\n"\);)h
+105 141(/*)s
+21(Try)h
+21(a)h
+22(simple)h
+21(nested)h
+20(handler.)h
+20(*/)h
+105 191(flag=FALSE;)s
+105 241(EX_BEGIN)s
+170 291(EX_BEGIN)s
+236 340(EX_RAISE\(sl)s
+-1(oth_)h
+-1(ex\);)h
+236 390(as_bomb\("sc)s
+-1(04:)h
+19(Raise)h
+21(failed)h
+21(\(1\)."\);)h
+170 440(EX_FORGET)s
+236 490(EX_WHEN\(wal)s
+-1(rus_)h
+-1(ex\))h
+301 540(as_bomb\("sc0)s
+-1(4:)h
+20(Walrus)h
+20(exception)h
+20(caught)h
+21(\(1\)."\);)h
+170 589(EX_END)s
+105 639(EX_FORGET)s
+170 689(EX_WHEN\(sloth_)s
+-1(ex\))h
+19(flag=TRUE;)h
+170 739(EX_WHEN\(walrus)s
+-1(_ex\))h
+19(as_bomb\("sc04:)h
+19(Walrus)h
+21(exception)h
+20(caught)h
+20(\(x\)."\);)h
+105 789(EX_END)s
+105 839(as_cold\(flag)s
+-1(,"sc0)h
+-1(4:)h
+20(First)h
+20(nested)h
+21(test)h
+21(failed."\);)h
+105 938(/*)s
+21(Test)h
+21(a)h
+22(re-raise.)h
+20(*/)h
+105 988(flag=FALSE;)s
+105 1038(EX_BEGIN)s
+170 1088(EX_BEGIN)s
+236 1137(EX_RAISE\(sl)s
+-1(oth_)h
+-1(ex\);)h
+236 1187(as_bomb\("sc)s
+-1(04:)h
+19(Raise)h
+21(failed)h
+21(\(2\)."\);)h
+170 1237(EX_FORGET)s
+236 1287(EX_WHEN\(slo)s
+-1(th_e)h
+-1(x\))h
+301 1337(EX_RAISE\(wal)s
+-1(rus_e)h
+-1(x\))h
+301 1386(as_bomb\("sc0)s
+-1(4:)h
+20(Raise)h
+21(failed)h
+20(\(3\)."\);)h
+236 1436(EX_WHEN\(wal)s
+-1(rus_)h
+-1(ex\))h
+301 1486(as_bomb\("sc0)s
+-1(4:)h
+20(Walrus)h
+20(exception)h
+20(caught)h
+21(\(2\)."\);)h
+170 1536(EX_END)s
+105 1586(EX_FORGET)s
+170 1636(EX_WHEN\(sloth_)s
+-1(ex\))h
+236 1685(as_bomb\("sc)s
+-1(04:)h
+19(Sloth)h
+21(exception)h
+20(escaped."\);)h
+170 1735(EX_WHEN\(walrus)s
+-1(_ex\))h
+236 1785(flag=TRUE;)s
+105 1835(EX_END)s
+105 1885(as_cold\(flag)s
+-1(,"sc0)h
+-1(4:)h
+20(Second)h
+20(nested)h
+21(test)h
+21(failed."\);)h
+83 1934(})s
+432 2271(EX)s
+16(OTHERS)h
+83 2470(LOCAL)s
+21(void)h
+21(sc05)h
+21(P_\(\(void\)\);)h
+83 2520(LOCAL)s
+21(void)h
+21(sc05)h
+21(\(\))h
+83 2570({)s
+105 2619(STAVAR)s
+20(bool)h
+21(flag2;)h
+105 2669(printf\("Test)s
+19(SC05:)h
+21(Single)h
+20(OTHERS)h
+21(handler)h
+20(reraises)h
+20(current)h
+21(exception.\\n)h
+-1("\);)h
+14 2 479 2271 r
+33 @eop
+34 @bop0
+34 @bop1
+cmsy10.300 sf
+83 1088(g)s
+332 1399(\021)s
+62 1449(f)s
+83 2445(g)s
+cmr10.300 sf
+253 1399([80])s
+954 2770(34)s
+cmsl10.300 sf
+0 1399(F)s
+-3(unction)h
+14(sc06)h
+cmbx10.432 sf
+0 1287(5.6)s
+24(F)h
+-6(unction)h
+23(sc06)h
+cmr7.300 sf
+0 1137(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+0 2495(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+cmtt10.300 sf
+105 42(flag=FALSE;)s
+105 91(flag2=FALSE;)s
+105 141(EX_BEGIN)s
+170 191(EX_BEGIN)s
+236 241(EX_RAISE\(sl)s
+-1(oth_)h
+-1(ex\);)h
+236 291(as_bomb\("sc)s
+-1(05:)h
+19(Raise)h
+21(failed)h
+21(\(2\)."\);)h
+170 340(EX_FORGET)s
+236 390(EX_OTHERS)s
+301 440(flag=TRUE;)s
+301 490(EX_RAISE\(EX_)s
+-1(ID\);)h
+301 540(as_bomb\("sc0)s
+-1(5:)h
+20(Raise)h
+21(failed)h
+20(\(3\)."\);)h
+170 589(EX_END)s
+105 639(EX_FORGET)s
+170 689(EX_WHEN\(sloth_)s
+-1(ex\))h
+236 739(flag2=TRUE;)s
+170 789(EX_OTHERS)s
+236 839(as_bomb\("sc)s
+-1(05:)h
+19(Exception)h
+20(escaped."\);)h
+105 888(EX_END)s
+105 938(as_cold\(flag)s
+19(,"sc05:)h
+20(OTHERS)h
+21(test)h
+21(failed)h
+21(\(1\)."\);)h
+105 988(as_cold\(flag)s
+-1(2,"sc)h
+-1(05:)h
+19(OTHERS)h
+21(test)h
+21(failed)h
+21(\(2\)."\);)h
+83 1038(})s
+83 1499(LOCAL)s
+21(void)h
+21(sc06)h
+21(P_\(\(void\)\);)h
+83 1548(LOCAL)s
+21(void)h
+21(sc06)h
+21(\(\))h
+83 1598({)s
+105 1648(printf\("Test)s
+19(SC06:)h
+21(Handlers)h
+20(all)h
+21(GOTO)h
+21(same)h
+21(code.\\n"\);)h
+105 1698(flag=FALSE;)s
+105 1748(EX_BEGIN)s
+170 1797(EX_RAISE\(sloth)s
+-1(_ex\))h
+-1(;)h
+170 1847(as_bomb\("sc06:)s
+19(Raise)h
+21(failed."\);)h
+105 1897(EX_FORGET)s
+170 1947(EX_WHEN\(sloth_)s
+-1(ex\))h
+19(goto)h
+21(handle;)h
+170 1997(EX_WHEN\(walrus)s
+-1(_ex\))h
+236 2046(as_bomb\("sc)s
+-1(06:)h
+19(Walrus)h
+21(exception)h
+20(went)h
+21(off."\);)h
+236 2096(handle:)s
+236 2146(flag=TRUE;)s
+170 2196(EX_OTHERS)s
+236 2246(as_bomb\("sc)s
+-1(06:)h
+19(Exception)h
+20(escaped)h
+21(to)h
+21(OTHERS."\);)h
+105 2296(EX_END)s
+105 2345(as_cold\(flag)s
+-1(,"sc0)h
+-1(6:)h
+20(GOTO)h
+21(test)h
+21(failed."\);)h
+83 2395(})s
+34 @eop
+35 @bop0
+35 @bop1
+cmsy10.300 sf
+332 224(\021)s
+62 274(f)s
+83 672(g)s
+332 1048(\021)s
+62 1098(f)s
+83 1447(g)s
+332 1823(\021)s
+62 1873(f)s
+cmsl10.300 sf
+0 224(F)s
+-3(unction)h
+14(sc07)h
+0 1048(F)s
+-3(unction)h
+14(sc08)h
+0 1823(F)s
+-3(unction)h
+14(sc09)h
+cmbx10.432 sf
+0 42(5.7)s
+24(F)h
+-6(unction)h
+23(sc07)h
+0 866(5.8)s
+24(F)h
+-6(unction)h
+23(sc08)h
+0 1641(5.9)s
+24(F)h
+-6(unction)h
+23(sc09)h
+cmr7.300 sf
+0 722(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+0 1496(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+cmr10.300 sf
+0 127(This)s
+14(test)h
+15(simply)h
+12(c)h
+-1(hec)h
+-1(ks)h
+15(that)h
+14(EX)h
+15(INF)h
+-1(O)h
+14(can)h
+14(b)h
+1(e)h
+15(written)h
+14(to)h
+14(and)h
+14(read)h
+14(from.)h
+253 224([81])s
+0 951(This)s
+14(test)h
+15(simply)h
+12(c)h
+-1(hec)h
+-1(ks)h
+15(that)h
+14(the)h
+153(function)h
+13(is)h
+14(w)h
+-1(orking.)h
+253 1048([82])s
+0 1726(T)s
+-3(est)h
+14(the)h
+15(legitim)h
+-1(ate)h
+13(use)h
+14(of)h
+139(.)h
+253 1823([83])s
+954 2770(35)s
+cmtt10.300 sf
+83 324(LOCAL)s
+21(void)h
+21(sc07)h
+21(P_\(\(void\)\);)h
+83 373(LOCAL)s
+21(void)h
+21(sc07)h
+21(\(\))h
+83 423({)s
+105 473(printf\("Test)s
+19(SC07:)h
+21(Exercise)h
+20(EX_INFO.\\n"\);)h
+105 523(EX_INFO)s
+20(=)h
+22(3;)h
+105 573(as_cold\(EX_I)s
+-1(NFO)h
+20(==)h
+21(3,"sc07:)h
+20(EX_INFO)h
+20(test)h
+21(failed."\);)h
+83 622(})s
+598 951(ex)s
+15(str)h
+83 1148(LOCAL)s
+21(void)h
+21(sc08)h
+21(P_\(\(void\)\);)h
+83 1198(LOCAL)s
+21(void)h
+21(sc08)h
+21(\(\))h
+83 1248({)s
+105 1298(printf\("Test)s
+19(SC08:)h
+21(Exercise)h
+20(ex_str.\\n"\);)h
+105 1347(as_cold\(ex_s)s
+-1(tr\(sl)h
+-1(oth_)h
+-1(ex\))h
+20(==)h
+21(sloth_ex,"sc0)h
+-1(8:)h
+20(Failed."\);)h
+83 1397(})s
+476 1726(EX)s
+15(POP)h
+83 1923(LOCAL)s
+21(void)h
+21(sc09)h
+21(P_\(\(void\)\);)h
+83 1973(LOCAL)s
+21(void)h
+21(sc09)h
+21(\(\))h
+83 2022({)s
+105 2072(printf\("Test)s
+19(SC09:)h
+21(Test)h
+21(EX_POP.\\n"\);)h
+105 2122(flag=FALSE;)s
+105 2172(EX_BEGIN)s
+170 2222(EX_BEGIN)s
+236 2271(EX_POP;)s
+20(goto)h
+21(finish;)h
+170 2321(EX_FORGET)s
+236 2371(EX_WHEN\(slo)s
+-1(th_e)h
+-1(x\))h
+20(as_bomb\("sc0)h
+-1(9:)h
+20(Inner)h
+21(catcher)h
+20(caught)h
+20(the)h
+22(sloth."\);)h
+170 2421(EX_END)s
+170 2471(finish:)s
+21(EX_RAISE\(s)h
+-1(loth_)h
+-1(ex\);)h
+105 2521(EX_FORGET)s
+170 2570(EX_WHEN\(sloth_)s
+-1(ex\))h
+19(flag=TRUE;)h
+105 2620(EX_END)s
+105 2670(as_cold\(flag)s
+-1(,"sc0)h
+-1(9:)h
+20(Sloth)h
+20(exception)h
+20(failed)h
+21(to)h
+21(work."\);)h
+13 2 588 127 r
+14 2 645 951 r
+14 2 523 1726 r
+35 @eop
+36 @bop0
+36 @bop1
+cmsy10.300 sf
+83 141(g)s
+330 527(\021)s
+62 577(f)s
+83 1274(g)s
+330 1660(\021)s
+62 1710(f)s
+83 2607(g)s
+cmsl10.300 sf
+0 527(F)s
+-3(unction)h
+14(fa01)h
+0 1660(F)s
+-3(unction)h
+14(fa02)h
+cmbx10.432 sf
+0 340(5.10)s
+24(F)h
+-6(unction)h
+23(fa01)h
+0 1474(5.11)s
+24(F)h
+-6(unction)h
+23(fa02)h
+cmr10.300 sf
+0 428(This)s
+14(test)h
+15(tests)h
+15(that)h
+14(an)h
+14(unhandled)h
+14(exception)h
+14(will)h
+13(b)h
+1(e)h
+14(prop)h
+1(erly)h
+14(caugh)h
+-1(t.)h
+253 527([84])s
+0 1561(This)s
+14(test)h
+15(tests)h
+15(t)h
+-1(w)h
+-1(o)h
+13(calls)h
+14(to)h
+139(.)h
+253 1660([85])s
+954 2770(36)s
+cmr7.300 sf
+0 191(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+0 1324(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+0 2657(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+cmtt10.300 sf
+105 42(as_cold\(_EX_)s
+-1(CURR)h
+19(==)h
+22(NULL,"sc09:)h
+19(EX_POP)h
+21(failed)h
+20(to)h
+22(pop)h
+21(correctly."\))h
+-1(;)h
+83 91(})s
+83 627(LOCAL)s
+21(void)h
+21(fa01)h
+21(P_\(\(void\)\);)h
+83 677(LOCAL)s
+21(void)h
+21(fa01)h
+21(\(\))h
+83 726({)s
+105 776(printf\("Test)s
+19(FA01:)h
+21(Unhandled)h
+20(Exception\\n")h
+-1(\);)h
+105 826(printf\("----)s
+-1(-----)h
+-1(----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(--\\n")h
+-1(\);)h
+105 876(printf\("This)s
+19(test)h
+21(raises)h
+21(the)h
+21(sloth)h
+21(exception)h
+20(but)h
+21(doesn't)h
+20(handle)h
+21(it.\\n"\);)h
+105 926(printf\("The)s
+19(result)h
+21(should)h
+20(be)h
+22(an)h
+21(\\"unhandled)h
+20(exception\\")h
+19(bomb)h
+21(specifying\\n"\))h
+-1(;)h
+105 976(printf\("the)s
+19(sloth)h
+21(exception.)h
+20(Here)h
+21(we)h
+21(go...\\n"\);)h
+105 1025(printf\("\\n"\))s
+-1(;)h
+105 1075(EX_RAISE\(slo)s
+-1(th_ex)h
+-1(\);)h
+105 1125(as_wl)s
+42(\("FA01)h
+21(FAILED:)h
+20(the)h
+21(exception)h
+20(package)h
+21(did)h
+21(not)h
+21(catch)h
+21(the\\n"\);)h
+105 1175(as_bomb\("unh)s
+-1(andle)h
+-1(d)h
+20(sloth)h
+21(exception.\\)h
+-1(n"\);)h
+83 1225(})s
+495 1561(EX)s
+15(POP)h
+83 1760(LOCAL)s
+21(void)h
+21(fa02)h
+21(P_\(\(void\)\);)h
+83 1810(LOCAL)s
+21(void)h
+21(fa02)h
+21(\(\))h
+83 1860({)s
+105 1910(printf\("Test)s
+19(FA02:)h
+21(Double)h
+20(EX_POP\\n"\);)h
+105 1959(printf\("----)s
+-1(-----)h
+-1(----)h
+-1(-----)h
+-1(-----)h
+-1(-\\n"\))h
+-1(;)h
+105 2009(printf\("This)s
+19(test)h
+21(executes)h
+20(two)h
+21(calls)h
+21(to)h
+22(EX_POP)h
+20(within)h
+21(the)h
+21(normal)h
+20(code)h
+21(of\\n"\);)h
+105 2059(printf\("an)s
+20(exception)h
+19(block.)h
+21(The)h
+21(second)h
+21(one)h
+21(should)h
+20(cause)h
+21(a\\n"\);)h
+105 2109(printf\("\\"co)s
+-1(ntext)h
+19(stack)h
+21(is)h
+21(empty\\")h
+21(bomb.)h
+20(Here)h
+21(we)h
+22(go...\\n"\);)h
+105 2159(printf\("\\n"\))s
+-1(;)h
+105 2208(EX_BEGIN)s
+170 2258(EX_POP;)s
+170 2308(EX_POP;)s
+170 2358(as_bomb\("FA02)s
+19(FAILED:)h
+21(Second)h
+20(EX_POP)h
+21(did)h
+21(not)h
+21(cause)h
+21(bomb)h
+21(\(1\)."\);)h
+105 2408(EX_FORGET)s
+105 2457(EX_END)s
+105 2507(as_bomb\("FA0)s
+-1(2)h
+20(FAILED:)h
+20(Second)h
+21(EX_POP)h
+20(did)h
+22(not)h
+21(cause)h
+20(bomb)h
+21(\(2\)."\);)h
+83 2557(})s
+14 2 542 1561 r
+36 @eop
+37 @bop0
+37 @bop1
+cmsy10.300 sf
+330 228(\021)s
+62 278(f)s
+83 1075(g)s
+330 1461(\021)s
+62 1511(f)s
+83 2607(g)s
+cmsl10.300 sf
+0 228(F)s
+-3(unction)h
+14(fa03)h
+0 1461(F)s
+-3(unction)h
+14(fa04)h
+cmbx10.432 sf
+0 42(5.12)s
+24(F)h
+-6(unction)h
+23(fa03)h
+0 1274(5.13)s
+24(F)h
+-6(unction)h
+23(fa04)h
+cmr7.300 sf
+0 1125(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+0 2657(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+cmr10.300 sf
+0 129(This)s
+14(test)h
+15(tests)h
+15(a)h
+14(single)h
+13(call)h
+13(to)h
+153(follo)h
+-1(w)h
+-2(ed)h
+13(b)h
+-1(y)h
+13(a)h
+14(normal)h
+12(termination)h
+12(of)h
+13(the)h
+15(normal)h
+12(co)h
+1(de.)h
+253 228([86])s
+0 1362(This)s
+14(test)h
+15(c)h
+-1(hec)h
+-1(ks)h
+15(to)h
+14(mak)h
+-1(e)h
+12(sure)h
+15(that)h
+14(a)h
+14(con)h
+-1(text)h
+14(can)h
+14(detect)h
+16(when)h
+14(it)h
+14(is)h
+13(p)h
+1(opping)h
+14(the)h
+14(wrong)h
+14(con)h
+-1(text.)h
+253 1461([87])s
+954 2770(37)s
+cmtt10.300 sf
+550 129(EX)s
+15(POP)h
+83 328(LOCAL)s
+21(void)h
+21(fa03)h
+21(P_\(\(void\)\);)h
+83 378(LOCAL)s
+21(void)h
+21(fa03)h
+21(\(\))h
+83 428({)s
+105 477(printf\("Test)s
+19(FA03:)h
+21(EX_POP)h
+20(Followed)h
+21(by)h
+21(Normal)h
+21(Terminatio)h
+-1(n\\n"\))h
+-1(;)h
+105 527(printf\("----)s
+-1(-----)h
+-1(----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(----)h
+-1(-----)h
+-1(-\\n"\))h
+-1(;)h
+105 577(printf\("This)s
+19(test)h
+21(executes)h
+20(a)h
+22(call)h
+21(to)h
+21(EX_POP)h
+21(then)h
+21(falls)h
+20(through)h
+21(to)h
+21(the\\n"\);)h
+105 627(printf\("end)s
+19(of)h
+22(the)h
+21(normal)h
+20(code)h
+21(of)h
+22(the)h
+21(exception)h
+20(block.)h
+20(The)h
+22(result)h
+20(should\\n"\);)h
+105 677(printf\("be)s
+20(a)h
+21(\\"context)h
+20(stack)h
+21(is)h
+21(empty\\")h
+21(bomb.)h
+20(Here)h
+21(we)h
+22(go...\\n"\);)h
+105 726(printf\("\\n"\))s
+-1(;)h
+105 776(EX_BEGIN)s
+170 826(EX_POP;)s
+105 876(EX_FORGET)s
+105 926(EX_END)s
+105 976(as_bomb\("FA0)s
+-1(3)h
+20(FAILED:)h
+20(Fallthough)h
+20(after)h
+21(EX_POP)h
+20(did)h
+21(not)h
+22(cause)h
+20(bomb."\);)h
+83 1025(})s
+83 1561(LOCAL)s
+21(void)h
+21(fa04)h
+21(P_\(\(void\)\);)h
+83 1611(LOCAL)s
+21(void)h
+21(fa04)h
+21(\(\))h
+83 1660({)s
+105 1710(printf\("Test)s
+19(FA04:)h
+21(Exit)h
+21(a)h
+21(block)h
+21(without)h
+21(EX_POPing\\)h
+-1(n"\);)h
+105 1760(printf\("----)s
+-1(-----)h
+-1(----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(---\\)h
+-1(n"\);)h
+105 1810(printf\("This)s
+19(test)h
+21(exits)h
+21(an)h
+21(exception)h
+20(block)h
+21(using)h
+21(a)h
+21(goto)h
+21(without)h
+21(first\\n"\);)h
+105 1860(printf\("EX_P)s
+-1(OPing)h
+-1(.)h
+20(The)h
+21(exception)h
+20(block)h
+21(is)h
+21(nested)h
+21(within)h
+20(another,)h
+20(and)h
+22(this\\n"\);)h
+105 1910(printf\("test)s
+19(is)h
+22(to)h
+21(make)h
+21(sure)h
+21(that)h
+21(the)h
+21(outer)h
+21(block)h
+20(detects)h
+21(that)h
+21(it)h
+21(is\\n"\);)h
+105 1959(printf\("popp)s
+-1(ing)h
+20(the)h
+21(wrong)h
+20(context.)h
+21(The)h
+21(result)h
+20(should)h
+21(be)h
+21(a\\n"\);)h
+105 2009(printf\("\\"no)s
+-1(t)h
+20(current)h
+20(context\\")h
+20(bomb.)h
+21(Here)h
+21(we)h
+21(go...\\n"\);)h
+105 2059(printf\("\\n"\))s
+-1(;)h
+105 2109(EX_BEGIN)s
+170 2159(EX_BEGIN)s
+236 2208(goto)s
+21(there;)h
+170 2258(EX_FORGET)s
+170 2308(EX_END)s
+170 2358(there:)s
+105 2408(EX_FORGET)s
+105 2457(EX_END)s
+105 2507(as_bomb\("FA0)s
+-1(4)h
+20(FAILED:)h
+20(Outer)h
+21(block)h
+21(FAILED)h
+20(to)h
+22(detect)h
+20(stack)h
+21(misalignment.)h
+-1("\);)h
+83 2557(})s
+14 2 597 129 r
+37 @eop
+38 @bop0
+38 @bop1
+cmsy10.300 sf
+330 228(\021)s
+62 278(f)s
+83 1822(g)s
+330 2258(\021)s
+62 2308(f)s
+cmsl10.300 sf
+0 228(F)s
+-3(unction)h
+14(fa05)h
+0 2258(F)s
+-3(unction)h
+14(fa06)h
+cmr7.300 sf
+0 1872(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+cmbx10.432 sf
+0 42(5.14)s
+24(F)h
+-6(unction)h
+23(fa05)h
+0 2022(5.15)s
+24(F)h
+-6(unction)h
+23(fa06)h
+cmr10.300 sf
+0 129(This)s
+14(test)h
+15(tests)h
+15(for)h
+14(the)h
+14(detection)h
+15(of)h
+13(an)h
+14(unp)h
+1(opp)h
+1(ed)h
+15(in)h
+-1(v)h
+-2(ali)h
+-1(d)h
+12(stac)h
+-1(k)h
+15(con)h
+-1(text.)h
+253 228([88])s
+0 2109(This)s
+13(test)h
+14(is)h
+13(iden)h
+-1(tical)h
+12(to)h
+13(the)h
+14(previous)h
+14(one)h
+13(except)h
+14(that)h
+13(the)h
+14(test)h
+14(is)h
+13(made)h
+12(at)h
+13(the)h
+14(p)h
+1(oin)h
+-1(t)h
+12(of)h
+13(exit)h
+13(of)h
+12(the)h
+14(outer)h
+14(blo)h
+1(c)h
+-1(k,)h
+0 2159(not)s
+14(at)h
+14(the)h
+14(p)h
+1(oin)h
+-1(t)h
+13(of)h
+14(raising)h
+13(an)h
+13(exception.)h
+253 2258([89])s
+954 2770(38)s
+cmtt10.300 sf
+83 328(LOCAL)s
+21(void)h
+21(fa05_x)h
+20(P_\(\(void\)\);)h
+83 378(LOCAL)s
+21(void)h
+21(fa05_x)h
+20(\(\))h
+83 428({)s
+105 477(EX_BEGIN)s
+170 527(return;)s
+105 577(EX_FORGET)s
+105 627(EX_END)s
+83 677(})s
+83 776(LOCAL)s
+21(void)h
+21(fa05)h
+21(P_\(\(void\)\);)h
+83 826(LOCAL)s
+21(void)h
+21(fa05)h
+21(\(\))h
+83 876({)s
+105 926(printf\("Test)s
+19(FA05:)h
+21(Target)h
+20(Context)h
+21(Does)h
+21(Not)h
+21(Exist\\n"\);)h
+105 976(printf\("----)s
+-1(-----)h
+-1(----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(--\\n)h
+-1("\);)h
+105 1025(printf\("This)s
+19(test)h
+21(exits)h
+21(an)h
+21(exception)h
+20(block)h
+21(from)h
+21(within)h
+20(a)h
+22(function)h
+20(using\\n"\);)h
+105 1075(printf\("a)s
+20(return)h
+20(statement.)h
+20(Thus,)h
+21(the)h
+21(context)h
+20(remains)h
+21(stacked)h
+20(even)h
+21(though\\n"\);)h
+105 1125(printf\("the)s
+19(enclosing)h
+20(C)h
+22(block)h
+21(has)h
+21(terminated.)h
+19(This)h
+21(test)h
+21(checks)h
+21(to)h
+21(see\\n"\);)h
+105 1175(printf\("whet)s
+-1(her)h
+20(this)h
+20(problem)h
+21(is)h
+21(detected)h
+20(next)h
+21(time)h
+21(an)h
+22(exception)h
+20(is)h
+21(raised.\\n"\);)h
+105 1225(printf\("The)s
+19(result)h
+21(should)h
+20(be)h
+22(an)h
+21(illegitimate)h
+20(context)h
+20(error.)h
+20(Here)h
+21(we)h
+22(go...\\n"\);)h
+105 1274(printf\("\\n"\))s
+-1(;)h
+105 1324(EX_BEGIN)s
+170 1374(fa05_x\(\);)s
+170 1424(EX_RAISE\(sloth)s
+-1(_ex\))h
+-1(;)h
+170 1474(as_bomb\("FA05)s
+19(FAILED:)h
+21(Failed)h
+20(to)h
+22(raise)h
+20(sloth."\);)h
+105 1523(EX_FORGET)s
+170 1573(EX_WHEN\(sloth_)s
+-1(ex\))h
+236 1623(as_bomb\("FA)s
+-1(05)h
+20(FAILED:)h
+20(Sloth)h
+21(exception)h
+20(was)h
+21(raised."\);)h
+105 1673(EX_END)s
+105 1723(as_bomb\("FA0)s
+-1(5)h
+20(FAILED:)h
+20(Costruct)h
+20(terminated)h
+20(normally)h
+20(-)h
+22(it)h
+21(shouldn't)h
+20(have."\);)h
+83 1773(})s
+83 2358(LOCAL)s
+21(void)h
+21(fa06)h
+21(P_\(\(void\)\);)h
+83 2408(LOCAL)s
+21(void)h
+21(fa06)h
+21(\(\))h
+83 2457({)s
+105 2507(printf\("Test)s
+19(FA06:)h
+21(Target)h
+20(Context)h
+21(Does)h
+21(Not)h
+21(Exist)h
+21(\(Fallthroug)h
+-1(h\)\\n")h
+-1(\);)h
+105 2557(printf\("----)s
+-1(-----)h
+-1(----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(-----)h
+-1(----)h
+-1(-----)h
+-1(-----)h
+-1(--\\n")h
+-1(\);)h
+105 2607(printf\("This)s
+19(test)h
+21(is)h
+21(identical)h
+20(to)h
+22(test)h
+21(FA05)h
+21(except)h
+20(that)h
+21(it)h
+22(does)h
+21(not\\n"\);)h
+105 2657(printf\("rais)s
+-1(e)h
+20(an)h
+21(exception)h
+20(in)h
+22(the)h
+21(outer)h
+21(block.)h
+20(The)h
+21(result)h
+21(should)h
+20(be)h
+22(a\\n"\);)h
+38 @eop
+39 @bop0
+39 @bop1
+cmsy10.300 sf
+83 440(g)s
+330 751(\021)s
+62 801(f)s
+83 1100(g)s
+330 1411(\021)s
+62 1461(f)s
+83 1760(g)s
+330 2071(\021)s
+62 2121(f)s
+83 2420(g)s
+cmr10.300 sf
+253 751([90])s
+253 1411([91])s
+253 2071([92])s
+954 2770(39)s
+cmsl10.300 sf
+0 751(F)s
+-3(unction)h
+14(fa07)h
+0 1411(F)s
+-3(unction)h
+14(fa08)h
+0 2071(F)s
+-3(unction)h
+14(fa09)h
+cmbx10.432 sf
+0 639(5.16)s
+24(F)h
+-6(unction)h
+23(fa07)h
+0 1299(5.17)s
+24(F)h
+-6(unction)h
+23(fa08)h
+0 1959(5.18)s
+24(F)h
+-6(unction)h
+23(fa09)h
+cmr7.300 sf
+0 490(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+0 1150(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+0 1810(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+0 2470(This)s
+12(macro)h
+10(is)h
+12(in)h
+-1(v)h
+-1(ok)h
+-1(ed)h
+13(in)h
+11(de\014nition)h
+13(74.)h
+cmtt10.300 sf
+105 42(printf\("\\"no)s
+-1(t)h
+20(current)h
+20(context\\")h
+20(error.)h
+21(Here)h
+21(we)h
+21(go...\\n"\);)h
+105 91(printf\("\\n"\))s
+-1(;)h
+105 141(EX_BEGIN)s
+170 191(fa05_x\(\);)s
+105 241(EX_FORGET)s
+105 291(EX_END)s
+105 340(as_bomb\("FA0)s
+-1(6)h
+20(FAILED:)h
+20(Costruct)h
+20(terminated)h
+20(normally)h
+20(-)h
+22(it)h
+21(shouldn't)h
+20(have."\);)h
+83 390(})s
+83 851(LOCAL)s
+21(void)h
+21(fa07)h
+21(P_\(\(void\)\);)h
+83 901(LOCAL)s
+21(void)h
+21(fa07)h
+21(\(\))h
+83 951({)s
+105 1000(as_bomb\("Tes)s
+-1(t)h
+20(FA07:)h
+21(Test)h
+21(FA06)h
+21(is)h
+21(the)h
+21(last)h
+21(test."\);)h
+83 1050(})s
+83 1511(LOCAL)s
+21(void)h
+21(fa08)h
+21(P_\(\(void\)\);)h
+83 1561(LOCAL)s
+21(void)h
+21(fa08)h
+21(\(\))h
+83 1611({)s
+105 1660(as_bomb\("Tes)s
+-1(t)h
+20(FA08:)h
+21(Test)h
+21(FA06)h
+21(is)h
+21(the)h
+21(last)h
+21(test."\);)h
+83 1710(})s
+83 2171(LOCAL)s
+21(void)h
+21(fa09)h
+21(P_\(\(void\)\);)h
+83 2221(LOCAL)s
+21(void)h
+21(fa09)h
+21(\(\))h
+83 2271({)s
+105 2320(as_bomb\("Tes)s
+-1(t)h
+20(FA09:)h
+21(Test)h
+21(FA06)h
+21(is)h
+21(the)h
+21(last)h
+21(test."\);)h
+83 2370(})s
+39 @eop
+40 @bop0
+cmbx10.518 sf
+[<00007F80000007FFF000001FC07800007F001C0000FE001E0001FC007E0003F800FF00
+07F001FF000FF001FF001FE001FF001FE001FF003FE000FE003FE0007C007FC00000007F
+C00000007FC00000007FC0000000FFC3FF8000FFC7FFE000FFCFBFF000FFDC03FC00FFF8
+03FE00FFF001FF00FFF000FF00FFE000FF80FFE000FF80FFE000FFC0FFC000FFC0FFC000
+FFC0FFC000FFC0FFC000FFC07FC000FFC07FC000FFC07FC000FFC07FC000FFC03FC000FF
+C03FC000FF801FE000FF801FE000FF000FE001FF000FF001FE0007F803FC0001FC0FF800
+00FFFFE000003FFF80000007FC0000>
+40 46 -3 45 41] 54 dc
+[<FFFFFFFFF00000FFFFFFFFFF0000FFFFFFFFFFC00000FFC000FFF00000FFC0000FFC00
+00FFC00007FE0000FFC00001FF0000FFC00000FF8000FFC000007FC000FFC000003FE000
+FFC000003FE000FFC000001FF000FFC000001FF000FFC000001FF800FFC000000FF800FF
+C000000FFC00FFC000000FFC00FFC000000FFC00FFC000000FFC00FFC000000FFE00FFC0
+00000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000
+000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC00000
+0FFC00FFC000000FFC00FFC000000FFC00FFC000000FFC00FFC000000FF800FFC000001F
+F800FFC000001FF800FFC000001FF000FFC000003FE000FFC000003FE000FFC000007FC0
+00FFC00000FF8000FFC00001FF0000FFC00003FE0000FFC0000FFC0000FFC0007FF000FF
+FFFFFFFFE000FFFFFFFFFF0000FFFFFFFFF00000>
+56 49 -2 48 63] 68 dc
+[<FFFFC000007FFFF0FFFFE000007FFFF0FFFFF000007FFFF000FFF8000000F80000FFFC
+000000700000FFFE000000700000EFFF000000700000E7FF800000700000E3FF80000070
+0000E1FFC00000700000E0FFE00000700000E07FF00000700000E07FF80000700000E03F
+FC0000700000E01FFE0000700000E00FFF0000700000E007FF8000700000E003FF800070
+0000E001FFC000700000E000FFE000700000E0007FF000700000E0007FF800700000E000
+3FFC00700000E0001FFE00700000E0000FFF00700000E00007FF80700000E00003FF8070
+0000E00001FFC0700000E00000FFE0700000E000007FF0700000E000007FF8700000E000
+003FFC700000E000001FFE700000E000000FFF700000E0000007FFF00000E0000003FFF0
+0000E0000001FFF00000E0000000FFF00000E00000007FF00000E00000007FF00000E000
+00003FF00000E00000001FF00000E00000000FF00000E000000007F00000E000000003F0
+0001F000000001F000FFFFE0000000F000FFFFE00000007000FFFFE00000007000>
+64 49 -2 48 65] 78 dc
+cmti10.300 sf
+[<01FFC0003C0000380000380000380000380000700000700000700000700000E00000E0
+0000E00000E00001C00001C00001C00001C0000380000380000380000380000700000700
+000700000700000F0000FFE000>
+24 28 -2 27 16] 73 dc
+[<00000300000700000E00000C00001C0000180000380000300000700000E00000C00001
+C0000180000380000300000700000600000E00001C000018000038000030000070000060
+0000E00000C00001C0000380000300000700000600000E00000C00001C00001800003800
+00700000600000E00000C00000C00000>
+24 41 -1 30 21] 47 dc
+40 @bop1
+cmbx10.518 sf
+0 50(6)s
+28(Design)h
+27(Notes)h
+cmtt10.300 sf
+1247 423(setjmp)s
+99(longjmp)h
+256 722(jmp)s
+15(buf)h
+132 2030(ex)s
+15(raise)h
+cmti10.300 sf
+0 2154(Inte)s
+-2(ger/pr)h
+-2(epr)h
+-2(o)h
+-2(c)h
+-2(essor)h
+12(c)h
+-2(onstant:)h
+cmbx10.432 sf
+0 336(6.1)s
+24(Arc)h
+-2(hitect)h
+-1(ural)h
+21(Discussion)h
+0 1893(6.2)s
+24(Exception)h
+22(Iden)h
+-2(tit)h
+-2(y)h
+cmr10.300 sf
+0 137(This)s
+13(section)h
+13(con)h
+-1(tains)h
+13(a)h
+12(detailed)h
+13(design)h
+13(discussion)h
+13(of)h
+12(particular)h
+12(asp)h
+1(ects)h
+15(of)h
+12(this)h
+13(pac)h
+-1(k)h
+-2(age.)h
+17(Inserting)h
+13(these)h
+14(notes)h
+0 187(in)s
+-1(to)h
+13(the)h
+15(impl)h
+-1(em)h
+-1(en)h
+-1(tation)h
+12(section)h
+15(w)h
+-1(ould)h
+13(ha)h
+-1(v)h
+-1(e)h
+13(cluttered)h
+16(it)h
+13(up)h
+14(to)h
+1(o)h
+14(m)h
+-1(uc)h
+-1(h.)h
+0 423(The)s
+17(basic)h
+17(engine)h
+18(for)h
+16(exceptions)h
+18(is)h
+17(pro)h
+-1(vided)h
+17(b)h
+-1(y)h
+17(the)h
+17(ANSI)h
+18(standard)h
+165(and)h
+186(primitiv)h
+-2(es)h
+16(whic)h
+-1(h)h
+0 473(pro)s
+-1(vide)h
+18(simple)h
+16(non-lo)h
+1(cal)h
+17(jumps.)h
+29(The)h
+19(c)h
+-1(hallenge)h
+18(is)h
+18(organizing)h
+16(them)h
+18(in)h
+-1(to)h
+17(an)h
+18(exception)h
+19(facilit)h
+-1(y)h
+-4(.)h
+29(T)h
+-3(o)h
+17(see)h
+19(the)h
+0 523(problems)s
+13(in)h
+-1(v)h
+-1(olv)h
+-1(ed)h
+12(in)h
+13(doing)h
+13(this,)h
+14(w)h
+-1(e)h
+13(need)h
+15(only)h
+13(fo)h
+1(cus)h
+14(on)h
+14(an)h
+13(executing)h
+15(program)h
+12(at)h
+13(the)h
+15(time)h
+12(that)h
+14(an)h
+13(exception)h
+0 573(is)s
+14(raised.)h
+20(A)h
+-1(t)h
+15(this)h
+14(time,)h
+13(the)h
+15(exceptions)h
+15(pac)h
+-1(k)h
+-2(age)h
+14(m)h
+-1(ust)h
+14(lo)h
+1(cate)h
+14(the)h
+15(closest)h
+16(handler)h
+14(for)h
+14(the)h
+15(particular)h
+15(exception.)h
+0 623(F)s
+-3(rom)h
+11(this,)h
+13(t)h
+-1(w)h
+-1(o)h
+12(things)h
+13(b)h
+1(ecome)h
+13(imm)h
+-2(ediately)h
+11(clear:)h
+18(1\))h
+12(that)h
+13(the)h
+14(exceptions)h
+14(pac)h
+-1(k)h
+-2(age)h
+12(is)h
+13(going)h
+12(to)h
+12(ha)h
+-1(v)h
+-1(e)h
+13(to)h
+13(p)h
+1(erform)h
+0 672(\\w)s
+-1(ork")h
+12(whenev)h
+-1(er)h
+15(an)h
+13(exception)h
+14(blo)h
+1(c)h
+-1(k)h
+13(is)h
+13(encoun)h
+-1(tered)h
+15(as)h
+13(w)h
+-1(ell)h
+13(as)h
+13(whenev)h
+-1(er)h
+15(an)h
+13(exception)h
+14(is)h
+13(raised,)h
+13(2\))h
+13(some)h
+12(sort)h
+0 722(of)s
+13(stac)h
+-1(king)h
+14(of)h
+174(con)h
+-1(texts)h
+14(is)h
+14(required.)h
+0 797(This)s
+14(reasoning)h
+14(suggests)h
+15(t)h
+-1(w)h
+-1(o)h
+13(organizations:)h
+0 872(1\))s
+15(Main)h
+-1(tain)h
+14(a)h
+16(stac)h
+-1(k)h
+15(for)h
+15(eac)h
+-1(h)h
+16(exception.)h
+24(Whenev)h
+-1(er)h
+16(an)h
+16(exception)h
+16(blo)h
+1(c)h
+-1(k)h
+15(is)h
+15(en)h
+-1(tered,)h
+17(push)h
+16(all)h
+14(the)h
+16(handlers)h
+16(for)h
+0 922(that)s
+14(blo)h
+1(c)h
+-1(k)h
+14(on)h
+15(their)h
+14(resp)h
+1(ec)h
+1(tiv)h
+-1(e)h
+16(stac)h
+-1(ks.)h
+20(P)h
+-1(op)h
+14(them)h
+14(when)h
+15(exiting)h
+13(the)h
+15(handler.)h
+20(If)h
+14(an)h
+14(exception)h
+15(is)h
+15(raised,)h
+14(simply)h
+0 971(lo)s
+1(ok)h
+13(on)h
+14(the)h
+14(top)h
+14(of)h
+13(its)h
+14(stac)h
+-1(k.)h
+0 1046(2\))s
+14(Main)h
+-1(tain)h
+13(a)h
+15(stac)h
+-1(k)h
+15(of)h
+13(exception)h
+16(blo)h
+1(c)h
+-1(ks.)h
+19(If)h
+15(an)h
+14(exception)h
+15(is)h
+14(raised,)h
+15(searc)h
+-1(h)h
+15(eac)h
+-1(h)h
+15(blo)h
+1(c)h
+-1(k)h
+15(in)h
+14(turn)h
+15(for)h
+14(a)h
+14(matc)h
+-1(hing)h
+0 1096(handler.)s
+0 1171(Of)s
+13(these)h
+15(t)h
+-1(w)h
+-1(o)h
+14(organizations,)h
+12(the)h
+14(second)h
+15(is)h
+13(b)h
+-1(y)h
+14(far)h
+13(the)h
+14(b)h
+1(etter.)h
+19(Exceptions)h
+15(are)h
+14(almost)h
+12(b)h
+-1(y)h
+13(de\014nition)h
+13(rare)h
+14(ev)h
+-1(en)h
+-1(ts,)h
+0 1220(and)s
+16(so)h
+16(in)h
+15(assessing)h
+17(the)h
+16(t)h
+-1(w)h
+-1(o)h
+16(organizations,)h
+15(the)h
+16(emphasis)h
+15(should)h
+16(b)h
+1(e)h
+16(placed)h
+16(on)h
+16(the)h
+16(e\016ciency)h
+17(of)h
+15(the)h
+16(ordinary)h
+0 1270(case)s
+19(whic)h
+-1(h)h
+18(is)h
+18(the)h
+19(pushing)h
+17(and)h
+18(p)h
+1(opping.)h
+30(The)h
+19(\014rst)h
+19(alternativ)h
+-1(e)h
+18(ma)h
+-1(y)h
+16(require)h
+19(m)h
+-1(ulti)h
+-1(ple)h
+16(pushes)h
+20(and)h
+18(p)h
+1(ops)h
+18(p)h
+1(er)h
+0 1320(exception)s
+17(blo)h
+1(c)h
+-1(k,)h
+15(whereas)h
+18(the)h
+16(second)h
+17(requires)h
+17(just)h
+17(one.)h
+24(There)h
+17(are)h
+17(also)h
+15(a)h
+16(n)h
+-1(um)h
+-1(b)h
+1(er)h
+15(of)h
+15(more)h
+15(practical)h
+16(reasons)h
+0 1370(wh)s
+-1(y)h
+14(the)h
+14(second)h
+15(alternativ)h
+-1(e)h
+14(is)h
+14(b)h
+1(etter.)h
+0 1445(Ha)s
+-1(ving)h
+14(decided)h
+15(that)h
+15(a)h
+14(stac)h
+-1(k)h
+15(of)h
+14(exception)h
+15(blo)h
+1(c)h
+-1(ks)h
+15(should)h
+14(b)h
+1(e)h
+16(main)h
+-2(tained,)h
+13(the)h
+15(next)h
+15(thing)h
+14(to)h
+15(decide)h
+15(is)h
+15(where)h
+15(it)h
+0 1494(should)s
+14(b)h
+1(e)h
+14(stored.)h
+20(The)h
+14(\014rst)h
+15(thing)h
+14(that)h
+14(p)h
+1(ops)h
+14(to)h
+14(mind)h
+12(is)h
+14(to)h
+14(organize)h
+14(for)h
+14(the)h
+14(exceptions)h
+15(pac)h
+-1(k)h
+-2(age)h
+14(to)h
+14(main)h
+-1(tai)h
+-1(n)h
+12(a)h
+0 1544(stac)s
+-1(k)h
+15(in)h
+14(a)h
+14(link)h
+-1(ed)h
+14(list)h
+13(gro)h
+-1(wing)h
+14(out)h
+14(of)h
+14(a)h
+14(global)h
+13(v)h
+-2(ariable.)h
+18(While)h
+14(completely)h
+13(feasible,)h
+14(this)h
+14(solution)h
+14(is)h
+14(distasteful)h
+0 1594(as)s
+17(it)h
+17(requires)h
+18(a)h
+17(mem)h
+-1(ory)h
+15(allo)h
+1(cation)h
+15(and)h
+17(deallo)h
+1(cation)h
+16(p)h
+1(er)h
+18(exception)h
+18(blo)h
+1(c)h
+-1(k)h
+16(instance.)h
+29(A)h
+17(far)h
+16(b)h
+1(etter)h
+19(sc)h
+-1(heme)h
+17(is)h
+0 1644(simply)s
+13(to)h
+15(store)h
+16(the)h
+16(stac)h
+-1(k)h
+16(on)h
+15(the)h
+16(run-time)h
+14(stac)h
+-1(k!)h
+22(This)h
+15(can)h
+16(b)h
+1(e)h
+15(done)h
+16(b)h
+-1(y)h
+15(storing)h
+15(eac)h
+-1(h)h
+16(no)h
+1(de)h
+15(of)h
+15(the)h
+16(stac)h
+-1(k)h
+15(in)h
+15(an)h
+0 1694(automatic)s
+12(v)h
+-2(ariable)h
+14(within)h
+13(the)h
+15(stac)h
+-1(k)h
+15(frame)h
+13(of)h
+13(the)h
+15(function)h
+14(con)h
+-1(taining)h
+13(the)h
+15(exception)h
+15(blo)h
+1(c)h
+-1(k.)h
+19(These)h
+16(automatic)h
+0 1743(v)s
+-2(ariables)h
+13(can)h
+14(then)h
+15(b)h
+1(e)h
+14(threaded)h
+15(together)h
+15(with)h
+14(p)h
+1(oin)h
+-1(ts)h
+14(to)h
+13(form)h
+12(the)h
+15(originally)h
+11(desired)h
+15(explicit)h
+14(stac)h
+-1(k.)h
+0 1980(One)s
+17(in)h
+-1(teresting)h
+17(asp)h
+1(ect)h
+18(of)h
+15(the)h
+17(design)h
+17(is)h
+16(the)h
+17(iden)h
+-1(tit)h
+-1(y)h
+16(of)h
+16(exceptions.)h
+26(When)h
+17(the)h
+17(clien)h
+-1(t)h
+16(raises)h
+17(an)h
+16(exception)h
+17(b)h
+-1(y)h
+0 2030(calling)s
+182(,)h
+14(an)h
+14(argumen)h
+-1(t)h
+14(m)h
+-1(ust)h
+13(b)h
+1(e)h
+16(pro)h
+-1(vided)h
+14(that)h
+15(in)h
+14(some)h
+14(w)h
+-1(a)h
+-1(y)h
+14(iden)h
+-1(ti\014es)h
+15(the)h
+15(exception)h
+16(b)h
+1(eing)h
+14(raised.)h
+21(A)h
+0 2080(n)s
+-1(um)h
+-1(b)h
+1(er)h
+13(of)h
+13(p)h
+1(ossible)h
+15(sc)h
+-1(hemes)h
+14(spring)h
+14(to)h
+14(mind:)h
+560 2154(Eac)s
+-1(h)h
+12(exception)h
+11(could)h
+12(b)h
+1(e)h
+11(mapp)h
+1(ed)h
+11(on)h
+-1(to)h
+10(a)h
+11(unique)h
+12(in)h
+-1(teger)h
+11(whic)h
+-1(h)h
+11(w)h
+-1(ould)h
+11(represen)h
+-1(t)h
+0 2204(the)s
+18(exception.)h
+28(These)h
+18(in)h
+-1(tegers)h
+18(could)h
+17(b)h
+1(e)h
+18(managed)h
+15(b)h
+-1(y)h
+17(de\014ning)h
+17(prepro)h
+1(cess)h
+1(or)h
+19(sym)h
+-1(b)h
+1(ols)h
+15(for)h
+17(them.)h
+27(T)h
+-3(o)h
+16(raise)h
+17(an)h
+0 2254(exception,)s
+22(the)h
+21(clien)h
+-1(t)h
+20(w)h
+-1(ould)h
+19(simply)h
+18(pass)h
+21(the)h
+21(prepro)h
+1(cess)h
+1(or)h
+22(sym)h
+-1(b)h
+1(ol.)h
+35(This)h
+20(solution)h
+19(is)h
+20(simple)h
+19(and)h
+20(pro)h
+-1(vides)h
+0 2304(compile-tim)s
+-2(e)h
+13(c)h
+-1(hec)h
+-1(king)h
+15(\(if)h
+13(the)h
+15(clien)h
+-1(t)h
+14(programmer)h
+12(mist)h
+-1(yp)h
+1(es)h
+14(a)h
+14(n)h
+-1(um)h
+-1(b)h
+1(er,)h
+13(the)h
+15(problem)h
+13(w)h
+-1(on't)h
+14(b)h
+1(e)h
+15(disco)h
+-1(v)h
+-1(ered)h
+15(un)h
+-1(til)h
+0 2354(the)s
+16(exception)h
+16(is)h
+16(raised)h
+16(and)h
+15(not)h
+15(caugh)h
+-1(t,)h
+16(but)h
+15(if)h
+15(the)h
+16(clien)h
+-1(t)h
+16(mist)h
+-1(yp)h
+1(es)h
+14(a)h
+16(prepro)h
+1(cessor)h
+18(sym)h
+-1(b)h
+1(ol,)h
+13(the)h
+16(compiler)h
+14(will)h
+0 2403(issue)s
+15(an)h
+14(\\unkno)h
+-1(wn)h
+14(sym)h
+-1(b)h
+1(ol")h
+12(error\),)h
+15(but)h
+14(it)h
+14(do)h
+1(es)h
+15(not)h
+14(pro)h
+-1(vide)h
+14(an)h
+-1(y)h
+14(w)h
+-1(a)h
+-1(y)h
+14(to)h
+14(ensure)h
+16(that)h
+14(t)h
+-1(w)h
+-1(o)h
+14(di\013eren)h
+-1(t)h
+15(exceptions)h
+0 2453(in)s
+12(t)h
+-1(w)h
+-1(o)h
+12(di\013eren)h
+-1(t)h
+14(mo)h
+1(dules)h
+12(are)h
+13(not)h
+13(using)h
+12(the)h
+13(same)h
+12(n)h
+-1(um)h
+-1(b)h
+1(er)h
+12(to)h
+13(represen)h
+-1(t)h
+15(the)h
+13(t)h
+-1(w)h
+-1(o)h
+12(di\013eren)h
+-1(t)h
+14(exceptions.)h
+19(There)h
+14(are)h
+0 2503(organizational)s
+11(solutions)h
+12(to)h
+12(this)h
+13(problem)h
+11(suc)h
+-1(h)h
+13(as)h
+13(ha)h
+-1(ving)h
+12(the)h
+13(programm)h
+-1(er)h
+11(main)h
+-1(tai)h
+-1(n)h
+11(a)h
+12(global)h
+11(list)h
+12(of)h
+12(exceptions,)h
+0 2553(but)s
+19(these)h
+21(are)h
+19(generally)h
+18(unacceptable)h
+21(in)h
+18(the)h
+20(long)h
+18(run.)h
+33(One)h
+20(other)h
+19(solution)h
+18(is)h
+19(to)h
+19(mak)h
+-1(e)h
+17(exception)h
+20(in)h
+-1(tegers)h
+0 2603(wide)s
+18(\(e.g.)h
+30(32-bits\))h
+17(and)h
+18(ha)h
+-1(v)h
+-1(e)h
+18(the)h
+19(programm)h
+-1(er)h
+16(c)h
+-1(ho)h
+1(ose)h
+19(the)h
+18(in)h
+-1(teger)h
+19(for)h
+17(eac)h
+-1(h)h
+19(exception)h
+19(b)h
+-1(y)h
+17(tossing)h
+18(a)h
+18(coin)h
+17(32)h
+0 2653(times.)s
+17(The)h
+14(probabilit)h
+-1(y)h
+12(of)h
+13(a)h
+13(collision)h
+12(w)h
+-1(ould)h
+12(b)h
+1(e)h
+14(tin)h
+-1(y)h
+-3(.)h
+17(T)h
+-3(o)h
+13(b)h
+1(e)h
+14(sure)h
+15(that)h
+13(t)h
+-1(w)h
+-1(o)h
+13(exceptions)h
+15(w)h
+-1(ere)h
+14(not)h
+14(using)h
+13(the)h
+14(same)h
+954 2770(40)s
+14 2 325 722 r
+14 2 179 2030 r
+40 @eop
+41 @bop0
+41 @bop1
+cmbx10.432 sf
+0 1636(6.3)s
+24(Iden)h
+-2(ti\014er)h
+22(Nam)h
+-1(es)h
+cmtt10.300 sf
+241 963(const)s
+520 1262(const)s
+634 2071(ex)s
+523 2594(EX)s
+1122 2644(BEGIN)s
+550(EX)h
+15(BEGIN)h
+cmti10.300 sf
+0 216(Inte)s
+-2(ger/variable:)h
+0 589(Pointer)s
+14(to)h
+15(r)h
+-2(e)h
+-2(c)h
+-2(or)h
+-2(d:)h
+0 814(Pointer)s
+16(to)h
+17(string:)h
+745 2221(A)s
+-1(l)h
+2(l)h
+12(identi\014ers)h
+13(that)h
+13(b)h
+-2(e)h
+-2(gin)h
+13(with)h
+12(an)h
+14(undersc)h
+-2(or)h
+-2(e)h
+13(ar)h
+-2(e)h
+13(always)h
+12(r)h
+-2(eserve)h
+-2(d)h
+13(for)h
+0 2271(use)s
+16(as)h
+15(identi\014ers)h
+15(with)h
+15(\014le)h
+15(scr)h
+-2(op)h
+-2(e)h
+16(in)h
+15(b)h
+-2(oth)h
+15(the)h
+16(or)h
+-2(dinary)h
+15(identi\014er)h
+15(and)h
+16(tag)h
+16(name)h
+16(sp)h
+-2(ac)h
+-2(es)h
+cmr10.300 sf
+0 42(n)s
+-1(um)h
+-1(b)h
+1(er,)h
+16(exceptions)h
+18(could)h
+17(b)h
+1(e)h
+17(registered)h
+18(with)h
+17(the)h
+17(exceptions)h
+18(pac)h
+-1(k)h
+-2(age)h
+16(whic)h
+-1(h)h
+17(w)h
+-1(ould)h
+16(c)h
+-1(hec)h
+-1(k)h
+17(the)h
+18(uniqueness)h
+18(of)h
+0 91(eac)s
+-1(h)h
+13(registered)h
+13(exception)h
+13(in)h
+-1(teger.)h
+18(Registration)h
+11(w)h
+-1(ould)h
+12(also)h
+11(allo)h
+-1(w)h
+10(the)h
+13(exception)h
+13(pac)h
+-1(k)h
+-2(age)h
+12(to)h
+12(bind)h
+11(a)h
+12(string)h
+12(name)h
+0 141(to)s
+14(eac)h
+-1(h)h
+14(exception)h
+15(n)h
+-1(um)h
+-1(b)h
+1(er.)h
+317 216(The)s
+11(\014rst)h
+12(solution)h
+10(is)h
+11(clean)h
+11(b)h
+1(ecause)h
+12(it)h
+11(uses)h
+12(prepro)h
+1(cessor)h
+13(sym)h
+-1(b)h
+1(ols.)h
+16(A)h
+11(sligh)h
+-1(tly)h
+9(di\013eren)h
+-1(t)h
+12(solution)h
+0 266(is)s
+18(to)h
+17(use)h
+19(global)h
+16(v)h
+-2(ariables)h
+17(instead.)h
+29(Under)h
+19(this)h
+18(sc)h
+-1(heme,)h
+18(a)h
+18(mo)h
+1(dule)h
+16(exp)h
+1(orting)h
+18(an)h
+17(exception)h
+18(exp)h
+1(orts)h
+19(a)h
+18(global)h
+0 315(in)s
+-1(teger)h
+15(v)h
+-2(ariable)h
+14(that)h
+16(represen)h
+-1(ts)h
+17(the)h
+16(exception.)h
+22(When)h
+15(the)h
+16(pac)h
+-1(k)h
+-2(age)h
+15(starts)h
+16(up,)h
+15(it)h
+14(registers)h
+17(the)h
+15(exception)h
+16(with)h
+0 365(the)s
+16(exception)h
+16(pac)h
+-1(k)h
+-2(age.)h
+23(Registration)h
+14(in)h
+15(this)h
+16(case)h
+16(is)h
+15(activ)h
+-1(e,)h
+16(not)h
+15(passiv)h
+-1(e;)h
+16(the)h
+16(exceptions)h
+17(pac)h
+-1(k)h
+-2(age)h
+15(allo)h
+1(cates)h
+15(an)h
+0 415(exception)s
+17(n)h
+-1(um)h
+-1(b)h
+1(er)h
+15(whic)h
+-1(h)h
+15(is)h
+16(assigned)h
+16(to)h
+15(the)h
+17(v)h
+-2(ariable.)h
+22(This)h
+16(solution)h
+15(has)h
+16(the)h
+16(adv)h
+-2(an)h
+-1(tage)h
+15(of)h
+15(guaran)h
+-1(teeing)h
+16(that)h
+0 465(exception)s
+11(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+11(are)h
+11(unique.)h
+17(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+11(exceptions)h
+12(often)h
+11(happ)h
+1(en)h
+11(under)h
+11(strange)h
+12(conditions)h
+10(and)h
+11(it)h
+10(is)h
+11(probably)h
+0 515(a)s
+14(disadv)h
+-2(an)h
+-1(tage)h
+13(to)h
+13(ha)h
+-1(v)h
+-1(e)h
+14(an)h
+14(exception)h
+14(represe)h
+1(n)h
+-1(ted)h
+16(b)h
+-1(y)h
+14(a)h
+13(writeable)h
+14(v)h
+-2(ariable.)h
+338 589(An)s
+13(alternativ)h
+-1(e)h
+13(to)h
+14(in)h
+-1(tegers)h
+14(is)h
+13(to)h
+13(represen)h
+-1(t)h
+16(exceptions)h
+14(b)h
+-1(y)h
+13(p)h
+1(oin)h
+-1(ters)h
+14(to)h
+14(records)h
+14(describing)h
+14(the)h
+0 639(exceptions.)s
+22(Eac)h
+-1(h)h
+16(record)h
+16(could)h
+15(b)h
+1(e)h
+15(declared)h
+16(statically)h
+14(\(th)h
+-1(us)h
+16(ensuring)h
+15(that)h
+15(eac)h
+-1(h)h
+16(record)h
+16(has)h
+15(a)h
+15(unique)h
+15(p)h
+1(oin)h
+-1(ter\))h
+0 689(and)s
+14(could)h
+14(con)h
+-1(tain)h
+13(a)h
+14(description)h
+15(of)h
+13(the)h
+15(exception)h
+14(and)h
+14(p)h
+1(ossibly)h
+14(other)h
+15(useful)h
+14(informa)h
+-1(tion)h
+12(\(e.g.)h
+18(a)h
+14(coun)h
+-1(t)h
+14(of)h
+13(ho)h
+-1(w)h
+0 739(often)s
+14(the)h
+14(exception)h
+15(has)h
+14(\014red\).)h
+19(The)h
+14(p)h
+1(oin)h
+-1(ters)h
+15(to)h
+14(the)h
+14(records)h
+16(could)h
+13(b)h
+1(e)h
+15(constan)h
+-1(ts.)h
+342 814(P)s
+-1(oin)h
+-1(ters)h
+16(to)h
+16(records)h
+17(are)h
+16(OK,)h
+16(but)h
+16(are)h
+16(rather)h
+17(messy)h
+15(to)h
+16(declare.)h
+24(As)h
+16(it)h
+16(seems)h
+16(that)h
+15(the)h
+17(only)h
+0 863(informati)s
+-1(on)h
+13(that)h
+14(really)h
+14(needs)h
+16(to)h
+14(b)h
+1(e)h
+15(b)h
+1(ound)h
+15(to)h
+14(an)h
+15(exception)h
+15(is)h
+14(a)h
+14(string)h
+15(describing)h
+15(the)h
+15(exception,)h
+15(a)h
+14(far)h
+14(b)h
+1(etter)h
+0 913(more)s
+12(direct)h
+13(sc)h
+-1(heme)h
+13(is)h
+13(simply)h
+10(to)h
+13(represen)h
+-1(t)h
+15(exceptions)h
+14(as)h
+12(p)h
+1(oin)h
+-1(ters)h
+14(to)h
+12(strings.)h
+18(Eac)h
+-1(h)h
+13(exception)h
+14(can)h
+13(b)h
+1(e)h
+13(statically)h
+0 963(declared)s
+12(as)h
+11(a)h
+130(p)h
+1(oin)h
+-1(ter)h
+12(to)h
+10(a)h
+11(string.)h
+17(This)h
+11(solv)h
+-1(es)h
+11(all)h
+10(the)h
+11(problems:)h
+16(1\))h
+11(the)h
+11(exception)h
+12(iden)h
+-1(tit)h
+-1(y)h
+10(is)h
+11(read-only)h
+-3(,)h
+10(2\))h
+0 1013(the)s
+11(exception)h
+11(iden)h
+-1(tit)h
+-1(y)h
+10(is)h
+11(unique)h
+10(\(b)h
+1(ecause)h
+12(eac)h
+-1(h)h
+11(string)h
+11(is)h
+10(stored)h
+12(at)h
+10(a)h
+10(di\013eren)h
+-1(t)h
+12(address\),)h
+12(3\))h
+10(the)h
+11(exception)h
+11(iden)h
+-1(tit)h
+-1(y)h
+0 1063(is)s
+14(easy)h
+14(to)h
+14(declare,)h
+14(4\))h
+14(the)h
+14(exceptions)h
+15(pac)h
+-1(k)h
+-2(age)h
+13(do)h
+1(esn't)h
+15(ha)h
+-1(v)h
+-1(e)h
+13(to)h
+14(manage)h
+12(a)h
+14(table)h
+13(of)h
+14(exceptions,)h
+14(5\))h
+14(the)h
+14(exception)h
+0 1112(v)s
+-2(ariable)h
+11(names)h
+12(are)h
+13(sub)h
+2(ject)h
+13(to)h
+13(compil)h
+-1(e-tim)h
+-1(e)h
+11(c)h
+-1(hec)h
+-1(king.)h
+18(The)h
+12(only)h
+12(disadv)h
+-2(an)h
+-1(tages)h
+12(are)h
+13(that)h
+12(1\))h
+12(the)h
+13(compiler)h
+11(migh)h
+-1(t)h
+0 1162(o)s
+-1(v)h
+-1(erlap)h
+15(t)h
+-1(w)h
+-1(o)h
+14(constan)h
+-1(t)h
+16(strings)h
+16(if)h
+14(one)h
+15(is)h
+16(a)h
+14(non-strict)h
+16(su\016x)h
+15(of)h
+15(the)h
+16(other,)h
+15(2\))h
+15(the)h
+16(exception)h
+16(is)h
+15(represe)h
+1(n)h
+-1(ted)h
+17(b)h
+-1(y)h
+15(an)h
+0 1212(ob)s
+2(ject)h
+14(that)h
+13(is)h
+13(basically)h
+12(a)h
+13(v)h
+-2(ariable)h
+13(whic)h
+-1(h)h
+13(could)h
+13(b)h
+1(e)h
+14(acciden)h
+-1(tally)h
+12(written-to)h
+14(if)h
+12(the)h
+14(program)h
+12(go)h
+1(es)h
+13(ha)h
+-1(ywire)h
+13(b)h
+1(efore)h
+0 1262(the)s
+14(exception)h
+15(is)h
+14(raised.)h
+18(The)h
+137(attribute)h
+14(helps,)h
+14(but)h
+14(ma)h
+-1(y)h
+12(b)h
+1(e)h
+14(ignored)h
+14(b)h
+-1(y)h
+13(man)h
+-1(y)h
+12(compilers)h
+13(whic)h
+-1(h)h
+13(will)h
+13(place)h
+0 1312(the)s
+14(v)h
+-2(ariable)h
+13(in)h
+14(writeable)h
+14(mem)h
+-1(ory)h
+-3(.)h
+16(These)h
+15(disadv)h
+-2(an)h
+-1(tages)h
+13(are)h
+15(considered)h
+15(minor)h
+12(compared)h
+13(to)h
+14(the)h
+14(adv)h
+-2(an)h
+-1(tages.)h
+0 1386(Of)s
+18(the)h
+19(solutions)h
+18(giv)h
+-1(en)h
+18(ab)h
+1(o)h
+-1(v)h
+-1(e,)h
+19(the)h
+19(simplest)h
+17(and)h
+18(cleanest)h
+20(is)h
+18(the)h
+19(p)h
+1(oin)h
+-1(ter)h
+19(to)h
+18(string)h
+18(solution,)h
+18(and)h
+19(this)h
+18(is)h
+18(the)h
+0 1436(sc)s
+-1(heme)h
+12(that)h
+13(is)h
+12(used)h
+13(in)h
+12(this)h
+12(pac)h
+-1(k)h
+-2(age.)h
+17(This)h
+13(is)h
+12(a)h
+12(particularly)h
+11(satisfactory)h
+13(solution)h
+11(b)h
+1(ecause)h
+14(it)h
+12(solv)h
+-1(es)h
+12(the)h
+13(problem)h
+0 1486(of)s
+13(exception)h
+15(iden)h
+-1(tit)h
+-1(y)h
+13(and)h
+14(exception)h
+15(description)h
+14(in)h
+14(one)h
+14(go.)h
+0 1723(Because)s
+17(it)h
+16(con)h
+-1(tains)h
+15(macros)h
+15(that)h
+15(refer)h
+17(to)h
+15(global)h
+14(v)h
+-2(ariables,)h
+15(this)h
+16(pac)h
+-1(k)h
+-2(age)h
+15(exp)h
+1(oses)h
+17(the)h
+16(ma)h
+2(jor)h
+14(prop)h
+1(ortion)h
+15(of)h
+15(its)h
+0 1773(names)s
+13(to)h
+14(the)h
+14(clien)h
+-1(t.)h
+18(As)h
+15(suc)h
+-1(h,)h
+14(particular)h
+13(care)h
+15(m)h
+-1(ust)h
+13(b)h
+1(e)h
+15(tak)h
+-1(en)h
+14(with)h
+13(names.)h
+0 1847(T)s
+-3(o)h
+14(assist)h
+15(p)h
+1(ortabilit)h
+-1(y)h
+14(to)h
+15(brain-dead)h
+14(compilers,)h
+14(all)h
+13(names)h
+14(ha)h
+-1(v)h
+-1(e)h
+15(generally)h
+15(b)h
+1(een)h
+16(restricted)h
+16(to)h
+15(six)h
+15(c)h
+-1(haracters)h
+16(for)h
+0 1897(external)s
+13(iden)h
+-1(ti\014ers)h
+13(and)h
+13(eigh)h
+-1(t)h
+12(for)h
+13(in)h
+-1(ternal)h
+12(iden)h
+-1(ti\014ers.)h
+18(Upp)h
+1(er)h
+14(case)h
+13(has)h
+13(b)h
+1(een)h
+14(used)h
+13(for)h
+13(prepro)h
+1(cessor)h
+15(sym)h
+-1(b)h
+1(ols)h
+11(and)h
+0 1947(lo)s
+-1(w)h
+-1(er)h
+13(case)h
+14(for)h
+13(other)h
+13(iden)h
+-1(ti\014ers.)h
+19(Although)h
+13(the)h
+13(use)h
+14(of)h
+13(upp)h
+1(er)h
+14(case)h
+14(in)h
+13(the)h
+14(main)h
+11(exception)h
+14(syn)h
+-1(tax)h
+13(is)h
+13(a)h
+13(little)h
+12(loud,)h
+0 1997(it)s
+14(is)h
+13(also)h
+14(a)h
+13(con)h
+-1(tin)h
+-1(uous)h
+14(reminder)h
+13(that)h
+14(this)h
+14(is)h
+14(a)h
+14(dangerous)h
+14(construct.)h
+0 2071(The)s
+13(menemoni)h
+-1(c)h
+11(for)h
+12(this)h
+13(pac)h
+-1(k)h
+-2(age)h
+12(is)h
+68(and)h
+12(this)h
+13(app)h
+1(ears)h
+13(at)h
+12(the)h
+13(b)h
+1(eginning)h
+12(of)h
+12(ev)h
+-1(ery)h
+13(exp)h
+1(orted)h
+13(sym)h
+-1(b)h
+1(ol.)h
+16(This)h
+12(will)h
+0 2121(assist)s
+14(to)h
+14(reduce)h
+16(sym)h
+-1(b)h
+1(ol)h
+12(collisions.)h
+17(In)h
+14(addition,)h
+12(an)h
+-1(y)h
+14(sym)h
+-1(b)h
+1(ol)h
+12(that)h
+14(is)h
+14(not)h
+14(in)h
+-1(tended)h
+14(to)h
+14(b)h
+1(e)h
+14(seen)h
+16(b)h
+-1(y)h
+13(the)h
+15(clien)h
+-1(t)h
+14(has)h
+0 2171(b)s
+1(een)h
+15(prep)h
+1(ended)h
+17(with)h
+13(an)h
+14(underscore)h
+1(.)h
+20(This)h
+15(is)h
+14(a)h
+14(little)h
+13(bit)h
+14(naugh)h
+-1(t)h
+-1(y)h
+13(as)h
+15(it)h
+14(con)h
+-1(tra)h
+-1(v)h
+-1(enes)h
+15(the)h
+15(ANSI)h
+14(standard's)h
+15(rule)h
+0 2221(7.13)s
+11(on)h
+11(iden)h
+-1(ti\014ers)h
+13(reserv)h
+-1(ed)h
+13(for)h
+12(libraries)h
+11(\(\\)h
+1537 2271("\),)s
+14(but)h
+14(as)h
+15(this)h
+14(pac)h
+-1(k)h
+-2(age)h
+0 2320(is)s
+15(supp)h
+1(osed)h
+16(to)h
+15(b)h
+1(e)h
+16(a)h
+15(library)h
+14(pac)h
+-1(k)h
+-2(age)h
+15(to)h
+1(o,)h
+15(it)h
+14(seems)h
+16(only)h
+14(a)h
+15(minor)h
+13(breac)h
+-1(h,)h
+16(and)h
+15(completely)h
+14(in)h
+14(k)h
+-1(eeping)h
+16(with)h
+14(the)h
+0 2370(st)s
+-1(yle)h
+14(of)h
+13(the)h
+15(ANSI)h
+14(library)h
+-3(.)h
+0 2445(The)s
+16(names)h
+16(of)h
+15(all)h
+15(the)h
+17(exp)h
+1(orted)h
+17(constructs)h
+18(w)h
+-1(ere)h
+17(c)h
+-1(hosen)h
+17(v)h
+-1(ery)h
+16(carefully)h
+-3(.)h
+24(Because)h
+18(most)h
+15(of)h
+15(the)h
+17(exp)h
+1(orted)h
+17(items)h
+0 2495(w)s
+-1(ere)h
+17(macros,)h
+15(b)h
+-1(y)h
+15(univ)h
+-1(ersal)h
+16(con)h
+-1(v)h
+-1(en)h
+-1(tion,)h
+15(their)h
+16(iden)h
+-1(ti\014ers)h
+17(had)h
+15(to)h
+16(b)h
+1(e)h
+16(in)h
+16(upp)h
+1(er)h
+16(case.)h
+25(This)h
+16(requiremen)h
+-1(t)h
+15(w)h
+-1(as)h
+16(not)h
+0 2545(a)s
+16(disadv)h
+-2(an)h
+-1(tage)h
+14(though)h
+16(as)h
+16(exception)h
+16(handlers)h
+17(are)h
+16(so)h
+16(imp)h
+1(ortan)h
+-1(t)h
+14(that)h
+16(they)h
+16(ough)h
+-1(t)h
+15(to)h
+16(b)h
+1(e)h
+16(syn)h
+-1(tactically)h
+16(\\loud".)h
+0 2594(Pre\014xing)s
+18(eac)h
+-1(h)h
+19(sym)h
+-1(b)h
+1(ol)h
+16(with)h
+94(is)h
+18(a)h
+18(little)h
+17(v)h
+-1(erb)h
+1(ose,)h
+20(but)h
+18(w)h
+-1(as)h
+18(w)h
+-1(orth)h
+-1(while)h
+17(b)h
+1(ecause)h
+19(it)h
+18(imm)h
+-1(ediately)h
+15(binds)h
+18(the)h
+0 2644(sym)s
+-1(b)h
+1(ol)h
+11(so)h
+13(tigh)h
+-1(tly)h
+12(to)h
+13(this)h
+13(pac)h
+-1(k)h
+-2(age)h
+12(that)h
+13(generic)h
+14(su\016xes)h
+13(suc)h
+-1(h)h
+14(as)h
+135(can)h
+13(b)h
+1(e)h
+14(used)h
+13(as)h
+13(a)h
+13(su\016x.)h
+18(Th)h
+-1(us)h
+954 2770(41)s
+14 2 570 2594 r
+14 2 1829 2644 r
+41 @eop
+42 @bop0
+cmbx10.432 sf
+[<FFFF80FFFF80FFFF80FFFF80FFFF80FFFF80>
+24 6 -1 16 23] 45 dc
+42 @bop1
+cmbx10.432 sf
+0 689(6.4)s
+24(Catering)h
+22(for)h
+24(Multi-Threadi)h
+-1(ng)h
+0 1225(6.5)s
+24(Chec)h
+-2(king)h
+cmti10.300 sf
+0 1536(Exc)s
+-2(eption)h
+13(has)h
+13(no)h
+13(hand)h
+2(ler:)h
+0 1660(Client)s
+14(p)h
+-2(ops)h
+14(the)h
+15(c)h
+-2(ontext)h
+14(to)h
+-2(o)h
+15(often:)h
+0 1934(Client)s
+13(exits)h
+13(c)h
+-2(ontext)h
+14(without)h
+13(p)h
+-2(opping)h
+15(it:)h
+cmtt10.300 sf
+77 42(EX)s
+15(END)h
+642 166(EX)s
+16(FORGET)h
+858 266(EX)s
+15(BEGIN)h
+673 390(EX)s
+15(RAISE)h
+717 440(ex)s
+15(rai)h
+1152 540(EX)s
+15(RAISE)h
+422(ex)h
+15(rai)h
+858 976(ex)s
+15(curr)h
+43(ex)h
+15(id)h
+126(ex)h
+16(info)h
+275 1075(EX)s
+16(CURR)h
+40(EX)h
+15(ID)h
+25(EX)h
+15(ID)h
+106(EX)h
+15(INFO)h
+1106 1362(longjmp)s
+736 1461(EX)s
+15(FAST)h
+1097 1536(exrai)s
+515(NULL)h
+64 1586(EX)s
+15(CURR)h
+1298 1660(EX)s
+15(POP)h
+675 1710(EX)s
+15(POP)h
+507 1760(expop)s
+529 1810(EX)s
+16(POP)h
+261(EX)h
+15(POP)h
+1615 1984(return)s
+0 2034(longjmp)s
+cmr10.300 sf
+0 42(and)s
+145(strongly)h
+10(con)h
+-1(v)h
+-1(ey)h
+10(their)h
+11(iden)h
+-1(tit)h
+-1(y)h
+9(as)h
+11(the)h
+10(b)h
+1(oundaries)h
+11(of)h
+10(an)h
+10(anon)h
+-1(ymo)h
+-1(us)h
+9(blo)h
+1(c)h
+-1(k,)h
+10(but)h
+11(also)h
+9(strongly)h
+10(indicate)h
+0 91(that)s
+14(the)h
+14(blo)h
+1(c)h
+-1(k)h
+14(is)h
+14(designed)h
+14(to)h
+14(handle)h
+14(exceptions.)h
+0 166(As)s
+13(men)h
+-1(tioned)h
+12(earlier,)h
+13(the)h
+13(iden)h
+-1(ti\014er)h
+216(w)h
+-1(as)h
+13(c)h
+-1(hosen)h
+14(so)h
+13(as)h
+13(to)h
+12(con)h
+-1(tin)h
+-1(ually)h
+12(remind)h
+11(the)h
+14(programm)h
+-1(er)h
+11(that,)h
+0 216(in)s
+16(the)h
+17(ev)h
+-1(en)h
+-1(t)h
+18(of)h
+16(an)h
+16(exception,)h
+17(all)h
+16(automatic)h
+15(v)h
+-2(ariables)h
+15(de\014ned)h
+18(within)h
+16(the)h
+17(function)h
+16(con)h
+-1(taining)h
+16(the)h
+17(exception)h
+0 266(blo)s
+1(c)h
+-1(k)h
+18(and)h
+18(whic)h
+-1(h)h
+19(ha)h
+-1(v)h
+-1(e)h
+18(b)h
+1(een)h
+20(written)h
+19(since)h
+19(the)h
+206(of)h
+17(the)h
+19(blo)h
+1(c)h
+-1(k,)h
+19(will)h
+17(b)h
+1(e)h
+19(unde\014ned.)h
+33(This)h
+19(is)h
+18(suc)h
+-1(h)h
+19(an)h
+0 315(imp)s
+1(ortan)h
+-1(t)h
+12(seman)h
+-1(tic)h
+13(p)h
+1(oin)h
+-1(t)h
+14(that)h
+14(it)h
+13(w)h
+-1(as)h
+14(considered)h
+15(w)h
+-1(orth)h
+-1(y)h
+14(of)h
+13(b)h
+1(eing)h
+14(em)h
+-1(b)h
+1(o)h
+1(died)h
+13(in)h
+13(the)h
+15(syn)h
+-1(tax)h
+14(to)h
+1(o.)h
+0 390(The)s
+15(hardest)h
+15(iden)h
+-1(ti\014er)h
+15(to)h
+14(c)h
+-1(ho)h
+1(ose)h
+15(w)h
+-1(as)h
+184(.)h
+13(F)h
+-3(or)h
+14(a)h
+14(long)h
+13(time,)h
+13(this)h
+14(construct)h
+16(w)h
+-1(as)h
+15(simply)h
+12(to)h
+14(tak)h
+-1(e)h
+15(the)h
+15(form)h
+0 440(of)s
+13(an)h
+14(exp)h
+1(orted)h
+15(function)h
+13(with)h
+14(the)h
+14(name)h
+138(.)h
+18(Ho)h
+-1(w)h
+-1(ev)h
+-1(er,)h
+14(in)h
+13(the)h
+14(end,)h
+14(it)h
+14(w)h
+-1(as)h
+14(decided)h
+14(that)h
+14(it)h
+14(w)h
+-1(ould)h
+13(b)h
+1(e)h
+14(b)h
+1(etter)h
+0 490(to)s
+14(giv)h
+-1(e)h
+14(this)h
+15(facilit)h
+-1(y)h
+13(the)h
+15(same)h
+14(syn)h
+-1(tactic)h
+15(feel)h
+15(as)h
+15(the)h
+15(other)h
+15(constructs.)h
+22(In)h
+15(addition,)h
+13(the)h
+15(raising)h
+14(of)h
+14(an)h
+14(exception)h
+0 540(is)s
+14(an)h
+13(ev)h
+-1(en)h
+-1(t)h
+15(that)h
+14(should)h
+14(probably)h
+13(b)h
+1(e)h
+14(syn)h
+-1(tactically)h
+14(loud.)h
+17(Finally)h
+194(is)h
+14(more)h
+13(readable)h
+14(than)h
+139(.)h
+0 776(An)s
+15(increasing)h
+15(amoun)h
+-1(t)h
+14(of)h
+14(co)h
+1(de)h
+16(is)h
+15(b)h
+1(eing)h
+15(run)h
+15(in)h
+15(a)h
+14(m)h
+-1(ulti-threading)h
+13(en)h
+-1(vironmen)h
+-1(t)h
+14(and)h
+15(it)h
+14(is)h
+15(imp)h
+1(ortan)h
+-1(t)h
+13(to)h
+15(ensure)h
+0 826(that)s
+19(all)h
+18(library)h
+19(pac)h
+-1(k)h
+-2(ages)h
+19(\(suc)h
+-1(h)h
+20(as)h
+19(this)h
+19(one\))h
+20(are)h
+19(compatible)h
+18(with)h
+19(m)h
+-1(ulti)h
+-1(-threading.)h
+32(A)h
+19(k)h
+-1(ey)h
+19(requiremen)h
+-1(t)h
+20(of)h
+0 876(m)s
+-1(ulti-threading)h
+13(is)h
+15(that)h
+15(there)h
+16(b)h
+1(e)h
+16(no)h
+15(global)h
+13(v)h
+-2(ariables,)h
+15(ar)h
+15(at)h
+15(least)h
+15(that)h
+15(all)h
+14(declarations)h
+15(and)h
+15(uses)h
+16(of)h
+15(the)h
+16(global)h
+0 926(v)s
+-2(ariables)h
+11(that)h
+11(do)h
+11(exist)h
+12(ha)h
+-1(v)h
+-1(e)h
+11(b)h
+1(een)h
+13(encapsulated)h
+12(in)h
+11(macros)h
+11(that)h
+11(can)h
+12(b)h
+1(e)h
+12(rede\014ned)h
+13(to)h
+12(w)h
+-1(ork)h
+11(with)h
+11(m)h
+-1(ulti-)h
+-1(threading.)h
+0 976(In)s
+16(this)h
+16(pac)h
+-1(k)h
+-2(age,)h
+16(the)h
+16(only)h
+15(global)h
+15(v)h
+-2(ariables)h
+15(are)h
+179(,)h
+134(,)h
+16(and)h
+179(.)h
+23(T)h
+-3(o)h
+15(simplif)h
+-1(y)h
+14(p)h
+1(ossible)h
+16(future)h
+0 1025(con)s
+-1(v)h
+-1(ersion)h
+15(for)h
+15(use)h
+16(with)h
+15(a)h
+14(m)h
+-1(ulti-threading)h
+13(pac)h
+-1(k)h
+-2(age,)h
+15(all)h
+13(uses)h
+17(of)h
+14(these)h
+17(v)h
+-2(ariables)h
+14(ha)h
+-1(v)h
+-1(e)h
+15(b)h
+1(een)h
+16(expressed)h
+18(in)h
+14(terms)h
+0 1075(of)s
+13(the)h
+15(macros)h
+176(,)h
+131(,)h
+116(,)h
+13(and)h
+161(.)h
+0 1312(As)s
+12(men)h
+-1(tioned)h
+10(b)h
+1(efore,)h
+12(exceptions)h
+12(are)h
+12(slipp)h
+1(ery)h
+11(things)h
+11(that)h
+12(can)h
+11(easily)h
+11(go)h
+10(wrong)h
+11(particularly)h
+11(when)h
+11(the)h
+12(exception)h
+0 1362(facilit)s
+-1(y)h
+12(is)h
+14(hac)h
+-1(k)h
+-1(ed)h
+15(together,)h
+15(as)h
+14(it)h
+14(has)h
+14(here,)h
+15(out)h
+14(of)h
+13(macros)h
+14(and)h
+168(s.)h
+17(This)h
+14(section)h
+15(con)h
+-1(tains)h
+14(a)h
+14(list)h
+14(of)h
+13(lik)h
+-1(ely)h
+0 1411(errors)s
+15(and)h
+13(failures)h
+13(and)h
+13(explains)h
+13(ho)h
+-1(w)h
+13(the)h
+13(pac)h
+-1(k)h
+-2(age)h
+13(cop)h
+1(es)h
+15(with)h
+13(them.)h
+17(The)h
+14(errors)h
+14(listed)h
+13(here)h
+15(are)h
+14(caugh)h
+-1(t)h
+13(only)h
+12(in)h
+0 1461(the)s
+14(c)h
+-1(hec)h
+-1(king)h
+15(v)h
+-1(ersion)h
+14(of)h
+13(this)h
+14(pac)h
+-1(k)h
+-2(age.)h
+18(If)h
+189(then)h
+15(no)h
+13(c)h
+-1(hec)h
+-1(king)h
+14(is)h
+14(p)h
+1(erformed.)h
+483 1536(This)s
+11(simple)h
+10(case)h
+12(is)h
+11(caugh)h
+-1(t)h
+11(b)h
+-1(y)h
+11(the)h
+147(function)h
+11(whic)h
+-1(h)h
+11(will)h
+10(detect)h
+13(a)h
+109(p)h
+1(oin)h
+-1(ter)h
+0 1586(in)s
+189(if)h
+13(there)h
+16(are)h
+14(no)h
+14(more)h
+13(exception)h
+14(blo)h
+1(c)h
+-1(ks)h
+14(to)h
+14(searc)h
+-1(h)h
+15(for)h
+13(handlers.)h
+616 1660(This)s
+13(case)h
+14(will)h
+12(o)h
+1(ccur)h
+14(if)h
+13(the)h
+14(clien)h
+-1(t)h
+13(calls)h
+151(and)h
+13(then)h
+14(exits)h
+13(the)h
+14(exception)h
+0 1710(blo)s
+1(c)h
+-1(k)h
+16(normally)h
+-4(,)h
+14(or)h
+17(if)h
+15(the)h
+17(clien)h
+-1(t)h
+17(calls)h
+157(more)h
+15(than)h
+16(once)h
+17(within)h
+16(the)h
+17(same)h
+16(exception)h
+17(blo)h
+1(c)h
+-1(k.)h
+25(Both)h
+17(these)h
+0 1760(errors)s
+17(are)h
+16(detected)h
+18(b)h
+-1(y)h
+15(the)h
+157(function)h
+15(whic)h
+-1(h)h
+16(tests)h
+17(to)h
+15(ensure)h
+18(that)h
+15(the)h
+17(con)h
+-1(text)h
+16(it)h
+15(is)h
+16(b)h
+1(eing)h
+15(ask)h
+-1(ed)h
+16(to)h
+16(p)h
+1(op)h
+0 1810(is)s
+18(the)h
+18(con)h
+-1(text)h
+18(enclosing)h
+18(the)h
+161(call.)h
+29(\(Note:)h
+168(w)h
+-1(on't)h
+17(compile)h
+16(unless)h
+19(it)h
+17(is)h
+18(called)h
+17(from)h
+16(within)h
+17(an)h
+0 1860(exception)s
+15(blo)h
+1(c)h
+-1(k,)h
+13(so)h
+14(there)h
+15(is)h
+14(no)h
+13(c)h
+-1(hance)h
+15(of)h
+13(a)h
+14(con)h
+-1(text)h
+15(b)h
+1(eing)h
+14(p)h
+1(opp)h
+1(ed)h
+14(from)h
+12(an)h
+14(external)h
+14(function\).)h
+714 1934(This)s
+12(is)h
+13(the)h
+13(single)h
+12(biggest)h
+12(headac)h
+-1(he,)h
+13(as)h
+13(there)h
+14(is)h
+12(no)h
+12(w)h
+-1(a)h
+-1(y)h
+12(that)h
+12(this)h
+13(error)h
+0 1984(can)s
+18(b)h
+1(e)h
+18(detected)h
+19(when)h
+19(it)h
+17(o)h
+1(ccurs.)h
+30(There)h
+19(is)h
+17(nothing)h
+17(to)h
+17(stop)h
+18(the)h
+18(clien)h
+-1(t)h
+18(from)h
+15(executing)h
+19(a)h
+165(or)h
+17(explicit)h
+165 2034(from)s
+11(within)h
+11(an)h
+13(exception)h
+13(blo)h
+1(c)h
+-1(k,)h
+12(and)h
+12(if)h
+12(the)h
+13(clien)h
+-1(t)h
+12(do)h
+1(es,)h
+14(the)h
+13(exception)h
+13(blo)h
+1(c)h
+-1(k)h
+12(will)h
+11(still)h
+12(b)h
+1(e)h
+13(registered)h
+14(as)h
+0 2084(the)s
+14(top)h
+14(con)h
+-1(text)h
+14(on)h
+14(the)h
+14(stac)h
+-1(k)h
+14(of)h
+13(exception)h
+14(con)h
+-1(texts,)h
+15(and)h
+13(con)h
+-1(trol)h
+13(will)h
+13(b)h
+1(e)h
+14(transferred)h
+15(to)h
+14(it)h
+13(if)h
+13(an)h
+13(exception)h
+15(go)h
+1(es)h
+0 2134(o\013,)s
+13(and)h
+13(if)h
+12(this)h
+14(happ)h
+1(ens,)h
+13(the)h
+14(program)h
+12(is)h
+13(lik)h
+-1(ely)h
+12(to)h
+13(crash,)h
+14(as)h
+13(the)h
+14(stac)h
+-1(k)h
+13(frame)h
+12(con)h
+-1(taining)h
+12(the)h
+14(exception)h
+14(blo)h
+1(c)h
+-1(k)h
+13(no)h
+0 2183(longer)s
+14(exists.)h
+0 2258(This)s
+10(problem)h
+9(cannot)h
+10(b)h
+1(e)h
+10(solv)h
+-1(ed,)h
+10(but)h
+11(it)h
+9(can)h
+10(b)h
+1(e)h
+11(atten)h
+-1(uated)h
+11(somewhat)h
+9(using)h
+10(the)h
+10(three-pronged)h
+12(approac)h
+-1(h)h
+10(adopted)h
+0 2308(in)s
+13(this)h
+14(pac)h
+-1(k)h
+-2(age:)h
+0 2383(1\))s
+18(Whenev)h
+-1(er)h
+20(a)h
+19(con)h
+-1(text)h
+19(is)h
+18(p)h
+1(opp)h
+1(ed,)h
+20(a)h
+19(c)h
+-1(hec)h
+-1(k)h
+19(is)h
+19(p)h
+1(erformed)h
+18(to)h
+19(ensure)h
+20(that)h
+18(the)h
+20(con)h
+-1(text)h
+19(b)h
+1(eing)h
+19(p)h
+1(opp)h
+1(ed)h
+19(is)h
+18(the)h
+0 2433(statically)s
+12(enclosing)h
+13(exception)h
+14(blo)h
+1(c)h
+-1(k.)h
+17(If)h
+13(it)h
+13(isn't,)h
+12(the)h
+14(program)h
+11(b)h
+1(om)h
+-1(bs.)h
+16(This)h
+13(c)h
+-1(hec)h
+-1(k)h
+14(means)h
+13(that)h
+13(the)h
+13(stac)h
+-1(k)h
+14(will)h
+11(b)h
+1(e)h
+0 2482(prop)s
+1(erly)h
+14(aligned)h
+13(follo)h
+-1(wing)h
+12(eac)h
+-1(h)h
+14(non-illegal)h
+12(termination)h
+12(of)h
+13(eac)h
+-1(h)h
+14(exception)h
+15(blo)h
+1(c)h
+-1(k.)h
+0 2557(2\))s
+11(Whenev)h
+-1(er)h
+13(an)h
+12(exception)h
+12(is)h
+12(raised,)h
+11(a)h
+12(c)h
+-1(hec)h
+-1(k)h
+12(is)h
+12(p)h
+1(erformed)h
+11(to)h
+12(ensure)h
+13(that)h
+12(the)h
+12(address)h
+13(of)h
+11(the)h
+12(con)h
+-1(text)h
+12(on)h
+12(the)h
+12(top)h
+0 2607(of)s
+14(the)h
+15(con)h
+-1(text)h
+15(stac)h
+-1(k)h
+15(is)h
+14(lo)h
+-1(w)h
+-1(er)h
+14(than)h
+14(that)h
+15(of)h
+14(the)h
+15(start)h
+15(of)h
+13(the)h
+15(stac)h
+-1(k)h
+15(frame)h
+13(of)h
+14(the)h
+15(function)h
+14(raising)h
+14(the)h
+15(exception.)h
+0 2657(If)s
+14(it)h
+13(is,)h
+13(then)h
+15(it)h
+13(m)h
+-1(ust)h
+13(b)h
+1(e)h
+15(an)h
+13(erroneously)h
+15(unp)h
+1(opp)h
+1(ed)h
+15(con)h
+-1(text.)h
+954 2770(42)s
+14 2 124 42 r
+14 2 689 166 r
+14 2 905 266 r
+14 2 720 390 r
+14 2 764 440 r
+14 2 1199 540 r
+14 2 1790 540 r
+14 2 845 976 r
+14 2 905 976 r
+14 2 1035 976 r
+14 2 1095 976 r
+14 2 1264 976 r
+14 2 1324 976 r
+14 2 262 1075 r
+14 2 322 1075 r
+14 2 450 1075 r
+14 2 510 1075 r
+14 2 638 1075 r
+14 2 847 1075 r
+14 2 723 1461 r
+14 2 783 1461 r
+14 2 1084 1536 r
+14 2 51 1586 r
+14 2 111 1586 r
+14 2 1345 1660 r
+14 2 722 1710 r
+14 2 494 1760 r
+14 2 576 1810 r
+14 2 963 1810 r
+42 @eop
+43 @bop0
+43 @bop1
+cmbx10.432 sf
+0 739(6.6)s
+24(F)h
+-6(uture)h
+23(Im)h
+-1(pro)h
+-2(v)h
+-2(em)h
+-1(e)h
+-1(n)h
+-2(ts)h
+cmr10.300 sf
+0 42(3\))s
+14(Corruptions)h
+14(of)h
+14(con)h
+-1(text)h
+15(records)h
+15(are)h
+15(detected)h
+16(b)h
+-1(y)h
+14(ha)h
+-1(ving)h
+13(t)h
+-1(w)h
+-1(o)h
+14(magi)h
+-1(c)h
+13(n)h
+-1(um)h
+-1(b)h
+1(er)h
+13(\014elds)h
+15(in)h
+13(the)h
+15(record,)h
+15(one)h
+14(at)h
+14(the)h
+0 91(start)s
+16(of)h
+14(the)h
+16(record)h
+16(and)h
+15(one)h
+15(at)h
+15(the)h
+16(end.)h
+22(If)h
+15(a)h
+15(record)h
+16(is)h
+15(corrupted,)h
+17(the)h
+15(corruption)h
+16(is)h
+15(lik)h
+-1(ely)h
+13(to)h
+15(b)h
+1(e)h
+16(detected)h
+17(the)h
+0 141(next)s
+14(time)h
+13(the)h
+14(record)h
+16(is)h
+13(manipulated.)h
+0 216(The)s
+15(last)h
+14(t)h
+-1(w)h
+-1(o)h
+13(c)h
+-1(hec)h
+-1(ks)h
+16(do)h
+14(a)h
+14(go)h
+1(o)h
+1(d)h
+14(job)h
+14(of)h
+13(co)h
+-1(v)h
+-1(ering)h
+14(the)h
+15(t)h
+-1(w)h
+-1(o)h
+14(main)h
+12(cases)h
+16(that)h
+14(can)h
+14(arise.)h
+20(When)h
+14(an)h
+14(exception)h
+15(blo)h
+1(c)h
+-1(k)h
+0 266(terminates)s
+12(without)h
+12(its)h
+13(con)h
+-1(text)h
+13(b)h
+1(eing)h
+12(p)h
+1(opp)h
+1(ed,)h
+13(con)h
+-1(trol)h
+13(will)h
+11(often)h
+12(lea)h
+-1(v)h
+-1(e)h
+12(the)h
+13(function.)h
+18(If)h
+12(it)h
+12(do)h
+1(es,)h
+13(then)h
+13(the)h
+13(top)h
+13(of)h
+0 315(the)s
+15(run-time)h
+13(stac)h
+-1(k)h
+15(will)h
+13(b)h
+1(e)h
+15(higher)h
+15(\(in)h
+14(address)h
+16(v)h
+-2(alue)h
+14(for)h
+14(stac)h
+-1(ks)h
+15(that)h
+15(gro)h
+-1(w)h
+14(do)h
+-1(wn\))h
+14(than)h
+14(the)h
+15(unp)h
+1(opp)h
+1(ed)h
+16(con)h
+-1(text.)h
+0 365(This)s
+15(is)h
+16(detected)h
+17(b)h
+-1(y)h
+15(the)h
+16(second)h
+17(test.)h
+23(If,)h
+15(later,)h
+16(the)h
+16(stac)h
+-1(k)h
+15(gro)h
+-1(ws)h
+16(again,)h
+14(it)h
+15(is)h
+15(lik)h
+-1(ely)h
+14(to)h
+15(o)h
+-1(v)h
+-1(erwrite)h
+16(the)h
+16(unp)h
+1(opp)h
+1(ed)h
+0 415(con)s
+-1(text,)h
+15(including)h
+14(the)h
+15(magic)h
+13(n)h
+-1(um)h
+-1(b)h
+1(ers)h
+14(it)h
+14(con)h
+-1(tains.)h
+20(If)h
+15(this)h
+14(happ)h
+1(ens,)h
+16(then)h
+15(the)h
+15(error)h
+16(will)h
+13(b)h
+1(e)h
+15(detecte)h
+1(d)h
+16(the)h
+15(next)h
+0 465(time)s
+13(an)h
+13(exception)h
+15(is)h
+14(raised)h
+14(or)h
+14(the)h
+14(stac)h
+-1(k)h
+15(is)h
+13(p)h
+1(opp)h
+1(ed.)h
+0 540(Ob)s
+-1(viously)h
+-3(,)h
+13(there)h
+15(are)h
+15(w)h
+-1(a)h
+-1(ys)h
+14(in)h
+13(whic)h
+-1(h)h
+14(a)h
+14(computer)h
+14(program)h
+13(migh)h
+-1(t)h
+12(satisfy)h
+14(all)h
+13(these)h
+15(tests)h
+16(and)h
+14(still)h
+13(b)h
+1(e)h
+15(erroneous,)h
+0 589(but)s
+14(at)h
+14(least)h
+14(these)h
+15(tests)h
+16(pro)h
+-1(vide)h
+13(some)h
+13(sort)h
+15(of)h
+13(safet)h
+-1(y)h
+14(net.)h
+0 826(This)s
+14(section)h
+14(giv)h
+-1(es)h
+14(a)h
+14(list)h
+13(of)h
+13(p)h
+1(ossible)h
+14(future)h
+15(impro)h
+-1(v)h
+-1(em)h
+-1(en)h
+-1(ts)h
+13(to)h
+13(this)h
+14(pac)h
+-1(k)h
+-2(age.)h
+0 901(*)s
+12(It)h
+11(migh)h
+-1(t)h
+10(b)h
+1(e)h
+13(useful)h
+12(to)h
+11(allo)h
+-1(w)h
+10(the)h
+13(clien)h
+-1(t)h
+12(to)h
+11(sp)h
+1(ecify)h
+13(a)h
+11(blo)h
+1(c)h
+-1(k)h
+12(of)h
+11(co)h
+1(de)h
+13(that)h
+12(is)h
+11(executed)h
+14(after)h
+12(an)h
+12(exception)h
+12(is)h
+12(raised,)h
+0 951(but)s
+14(b)h
+1(efore)h
+15(the)h
+14(handlers)h
+15(are)h
+14(scanned.)h
+19(This)h
+14(w)h
+-1(ould)h
+13(allo)h
+-1(w)h
+12(an)h
+14(opp)h
+1(ortunit)h
+-1(y)h
+13(for)h
+14(cleaning)h
+13(up.)h
+0 1025(*)s
+14(Rew)h
+-1(ork)h
+13(the)h
+15(terminology)h
+11(so)h
+14(that)h
+14(it)h
+14(is)h
+13(more)h
+13(consisten)h
+-1(t.)h
+0 1100(*)s
+14(Hierarc)h
+-1(hical)h
+13(exceptions.)h
+0 1175(That's)s
+14(the)h
+14(end)h
+15(of)h
+13(this)h
+14(pac)h
+-1(k)h
+-2(age!)h
+954 2770(43)s
+43 @eop
+@end
diff --git a/web/funnelweb/examples/except.tex b/web/funnelweb/examples/except.tex
new file mode 100644
index 0000000000..cc19c6f5a1
--- /dev/null
+++ b/web/funnelweb/examples/except.tex
@@ -0,0 +1,3273 @@
+
+%*******************************************************************************
+%* START OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+%* *
+%* This TeX file was automatically generated by the FunnelWeb preprocessor. *
+%* You can typeset this file to produce printed documentation by running it *
+%* through the TeX typesetter using a command such as: *
+%* tex thisfilename *
+%* The resultant file thisfilename.dvi can be printed using a command such as: *
+%* lpr -Pcslw -d thisfilename.dvi *
+%* *
+%* FunnelWeb is a preprocessor that allows programmers to weave programs and *
+%* their documentation together in a single document. The FunnelWeb program *
+%* analyses such documents producing both program files and typeset *
+%* documentation such as this TeX file. *
+%* FunnelWeb was created by Ross Williams. *
+%* *
+%* For more information on FunnelWeb look in the following FTP archive: *
+%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. *
+%* Directory: ~pub/funnelweb/ *
+%* (or some other appropriately named directory). *
+%* or email Ross Williams at ross@spam.adelaide.edu.au *
+%* *
+%*******************************************************************************
+
+
+%===================== Start of FunnelWeb TeX Definitions ======================
+
+
+% Version
+% -------
+% This is FunnelWeb TeX Macro Library Version 1.0.
+
+
+% Copyright
+% ---------
+% This set of FunnelWeb TeX definitions was written by Ross Williams and was
+% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams,
+% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions
+% and hereby authorize that the set of TeX definitions pass into the public
+% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia.
+
+
+% Modification
+% ------------
+% Please record all modifications to these TeX definitions here. Unless
+% otherwise specified, all modified definitions fall in the public domain too.
+%
+% Programmers:
+% RNW Ross N. Williams ross@spam.adelaide.edu.au
+%
+% Changes:
+% 07-May-1992 RNW Prepared this work for public domain release.
+%
+
+
+% General Comments
+% ----------------
+% This set of TeX definitions exists for two reasons:
+%
+% 1. To shorten and neaten the FunnelWeb TeX output.
+% 2. To allow users to fiddle with the output format in their input files
+% (by inserting redefining "\def"s) without having to resort to
+% modifying the FunnelWeb code.
+%
+% The user is warned that these definitions may be changed from time to time
+% (but probably not much). The user should not be too sneaky. In particular,
+% users wishing to redefine some of these macros should do so in an explicitly
+% defined section at the top of their input file. This will mean that in the
+% event of problems, that section can simply be deleted or commented out to
+% allow the document to at least be typeset in the default format. Users should
+% limit themselves to redefining these macros in such a section and should
+% refrain from using the macros throughout their documents.
+
+
+% Environment Parameters
+% ----------------------
+% \tolerance tells TeX how tolerant it should be about making bad line and
+% page breaks. Here we set it to it's maximum, as
+% 1) Computer programs are likely to cause lots of bad breaks.
+% 2) In most cases the user would probably rather get the TeX file through
+% TeX without any errors than fiddle with spacings for perfection.
+\tolerance=10000
+
+% I don't like indentation as it makes the page look more busy. Instead,
+% paragraphs are separated by a little space (see next).
+\parindent=0pt
+
+% In many cases, users will produce documents with long runs of paragraphs.
+% In order to space out these paragraphs, it is convenient to maintain a
+% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is
+% that the skip becomes a problem in macro definitions which require no skip
+% and so we have to turn the skip on and off. The following two macros
+% simplify this process.
+\def\fwparskipon{\parskip=\medskipamount}
+\def\fwparskipoff{\parskip=0pt}
+\fwparskipon
+
+% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the
+% page in order to better vertically align the rest of the page (e.g. skips
+% won't stretch as much). It also means that headings are less likely to be
+% isolated at the bottom of the page without any following text.
+\raggedbottom
+
+
+% Fonts
+% -----
+% Most of the typeset output is set in 10pt roman and 10pt tt font.
+% The major extra font needs spring from titles and headings.
+% For portability's sake we use only the following fonts:
+% cmr10
+% cmbx10
+% cmtt10
+% and some enlargements of them. These fonts are all "standard" fonts
+% in Plain TeX. See The TeXbook p.350.
+\font\fwfontnote=cmr7
+
+\font\fwfontnorm=cmr10
+\font\fwfontnorma=cmr10 scaled \magstep1
+\font\fwfontnormb=cmr10 scaled \magstep2
+
+\font\fwfontbold=cmbx10
+\font\fwfontbolda=cmbx10 scaled \magstep1
+\font\fwfontboldb=cmbx10 scaled \magstep2
+\font\fwfontboldc=cmbx10 scaled \magstep3
+\font\fwfontboldd=cmbx10 scaled \magstep4
+
+
+% Macros for Stylistic Details
+% ----------------------------
+% This section contains all the fiddly little macros for setting the details
+% of each macro definition.
+
+% Macro definitions are sandwiched by calls to these macros which can be used
+% to sort out the spacing before and after the macro definition.
+\def\fwbeginmacro{\fwparskipoff\bigskip}
+\def\fwendmacro{\fwparskipon\par}
+
+% These macros deal with the macro name and definition line.
+\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$}
+\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$}
+\def\fwzero#1{{\bf Z}}
+\def\fwmany#1{{\bf M}}
+\def\fwequals{ $\equiv$}
+\def\fwplusequals{ $+\equiv$}
+
+% Now for the actual body of the definition. It looks nice to have the tt
+% code indented a little. Again, we use macros instead of writing direct TeX,
+% so as to allow the user to fiddle this stuff to taste without having to
+% modify the FunnelWeb C code.
+\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt}
+\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt}
+\def\fwoquote{`}
+\def\fwcquote{'}
+\def\fwoparen{$($}
+\def\fwcomma{$,$}
+\def\fwcparen{$)$}
+\def\fwparam#1{$\diamond #1$}
+\def\fwparams#1{$(\diamond #1)$}
+
+% These macros deal with the notes that are appended at the end of each
+% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso
+% have the same definition, they are given different names so as to allow the
+% user to redefine these macros to typeset each kind of information differently
+% if desired.
+\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip}
+\def\fwnote#1{{\fwfontnote #1}\par}
+\def\fwisafile#1{\fwnote{#1}}
+\def\fwusedin#1{\fwnote{#1}}
+\def\fwseealso#1{\fwnote{#1}}
+\def\fwendmacronotes{\endgroup}
+
+
+% Macros to Typeset Program Code Verbatim
+% ---------------------------------------
+% This is by far the hairiest and most difficult part of the typesetting task
+% because we have to turn off most of TeX's natural instincts in order to
+% typeset the program text exactly as it appears in the input file.
+% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble.
+% Their code was inspired by the following sections of "The TeXbook":
+% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382.
+% Appendix E: Example Formats, p.421.
+% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work.
+% The liberal use of "%" is because I don't understand TeX well enough to
+% understand when an end of line will cause trouble, and I am playing it safe.
+
+% Before defining the main \fwbtx macro, we have to stash away some definitions
+% in the hidden part of TeX's environment. Let's hope that these "hidden"
+% definitions don't affect anything except what is desired to be affected.
+
+% The tt font in which we wish to set the text has two Latin lurking ligatures!
+% These are ?` and !`. To disable them, we define the left quote when ACTIVE
+% to be defined in such a way as to prevent ligatures. The main TeX text will
+% normally not be exposed to this definition because normally the leftquote
+% character is not active. The \fwbtx macro temporarily makes the left quote
+% character active thus activating the deactivation of left quote ligatures.
+% See The TeXbook p.381.
+{\catcode`\`=\active \gdef`{\relax\lq}}
+
+% TeX is fairly carefree about spaces and so we have to make it more serious.
+% To do so we pull the same trick as above, setting up a definition for active
+% space, but only making space active during the span of the verbatim text.
+% In Plain TeX the active space is defined to be simply a space, but here we
+% define it to be a control space. This ensures that the space cannot
+% be gobbled up by one of TeX's mysterious mechanisms when activated.
+% See The TeXbook, p.381 and p.352.
+{\obeyspaces\global\let =\ }
+
+% Here is the main \fwbtx verbatim text macro.
+% Note: The order in which all these pieces of business have to be done is
+% still a partial mystery to me. Don't fiddle with this stuff unless you
+% think you know what you are doing.
+\def\fwbtx[{%
+%
+% The funnies involved in getting verbatim output are safely housed inside
+% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used
+% instead of curly braces because we have to be able to signal the end of
+% this macro with a curly brace.
+\begingroup%
+%
+% \pars at the end of empty lines in the verbatim text won't come out normally
+% because TeX is in vertical mode and they get gobbled up. To prevent this,
+% we force \par to exit vertical mode first. See The TeXbook p.381.
+\def\par{\leavevmode\endgraf}%
+%
+% Activate the leftquote character so as to avoid ligatures (see above).
+\catcode`\`=\active%
+%
+% The \obeylines macro simply defines end of line (^M) to be \par. This ensures
+% that TeX will treat each verbatim line as a new paragraph.
+\obeylines%
+%
+% To get verbatim output, we have to desex all the special characters. This
+% is explained in detail in The TeXbook p.380.
+\def\do##1{\catcode`##1=12 }\dospecials%
+%
+% Activate the space character so as to make TeX treat blanks seriously.
+% This activation invokes an eralier definition (see above).
+\obeyspaces
+%
+% Interparagraph skips do not help the cause.
+% Note: We have to preserve the indentation though, as the code is actually
+% indented in the final output. See \fwodef in an earlier section.
+\parskip=0pt%
+%
+% We typeset the verbatim text in tt font (courier on the Macintosh) for a
+% number of reasons:
+% - tt font has the same horizontal spacing for each character.
+% - tt font covers the ASCII character set.
+% - tt font doesn't have many surprises (e.g. ligatures).
+% - tt font looks much what you might see on a computer terminal screen.
+\tt%
+%
+% Having set up an environment for verbatim, we are ready to use it.
+% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as
+% part of the parameter of \fwverbatimgobble) until it sees the termination
+% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence
+% must never occur in the verbatim text).
+\fwverbatimgobble}
+
+% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text.
+\def\fwverbatimgobble#1]fwetx={#1\endgroup}
+
+
+% Table of Contents
+% -----------------
+% The five levels of table of contents that FunnelWeb supports are identified
+% by the five letters [A..E]. These are used throughout the following macros.
+
+% The following macros are utilities to the TOC macros to follow.
+\def\fwrule{\medskip\hrule\medskip}
+\def\fwqh{\hskip1.5em\relax}
+\def\fwbeforesec{\penalty-200\bigskip\medskip\par}
+
+% The following macros are used to typeset the table of contents.
+\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule}
+\def\fwtoca#1#2{\leftline{{\bf #1 #2}}}
+\def\fwtocb#1#2{\leftline{\fwqh #1 #2}}
+\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}}
+\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtocfinish#1{\fwrule}
+
+% The following "library" macros define five different strengths of headings
+% which can be used later in the section macros.
+\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip}
+\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip}
+\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip}
+\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200}
+\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}}
+
+% Here are the macros that actually typeset the section headings throughout
+% the document. The fwlib system has been employed so as to easily allow the
+% user to redefine the strengths of headings to taste. For example, the
+% user could insert in the input document a similar set of definitions to these
+% but with the b..e headings set to \fwlibc. This would tone down the output.
+\def\fwseca#1#2{\fwliba{#1}{#2}}
+\def\fwsecb#1#2{\fwlibb{#1}{#2}}
+\def\fwsecc#1#2{\fwlibc{#1}{#2}}
+\def\fwsecd#1#2{\fwlibd{#1}{#2}}
+\def\fwsece#1#2{\fwlibe{#1}{#2}}
+
+
+% Support for Explicit Typesetting
+% --------------------------------
+% FunnelWeb supports pragmas and other constructs that allow
+% typesetter-independent typesetting commands to be given. The
+% following macros support these features.
+
+% The in-text literal @{sloth@} and emphasise @[walrus@] features.
+\def\fwlit#1{{\tt #1}}
+\def\fwemp#1{{\it #1}}
+
+% The "@p new_page" pragma.
+\def\fwnewpage{\vfill\eject}
+
+% The "@p vskip Nmm" pragma.
+\def\fwvskip#1{\null\vskip #1mm}
+
+% The "@p title <font> <align> <text>" pragma.
+\def\fwfontnormal#1{{\fwfontnorm {#1}}}
+\def\fwfonttitle#1{{\fwfontboldd {#1}}}
+\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}}
+\def\fwleftline#1{\leftline{#1}}
+\def\fwcenterline#1{\centerline{#1}}
+\def\fwrightline#1{\rightline{#1}}
+
+
+% Support for Old FunnelWeb
+% -------------------------
+% The following macros were used extensively in the first version of
+% FunnelWeb and are retained so that these older input files will still
+% typeset cleanly.
+\def\p#1{{\tt #1}} % P for Program text.
+\def\flagpage#1#2{
+ \null
+ \vfill
+ \centerline{\fwfontboldd #1}
+ \vskip 1cm
+ \centerline{\fwfontboldd #2}
+ \vfill
+ \null
+ \vfill
+}
+
+%====================== End of FunnelWeb TeX Definitions =======================
+
+\fwvskip{50}
+\fwcenterline{\fwfonttitle{Exceptions}}
+\fwcenterline{\fwfonttitle{Package}}
+\fwvskip{10}
+\fwcenterline{\fwfontsmalltitle{by Ross Williams}}
+\fwcenterline{\fwfontsmalltitle{April 1993}}
+
+\fwnewpage
+
+\fwvskip{20}
+\fwcenterline{\fwfonttitle{Contents}}
+\fwvskip{10}
+
+\fwtocstart{}
+\fwtoca{1}{Overview}
+\fwtocb{1.1}{Configuration Header Notice}
+\fwtocb{1.2}{Abstract}
+\fwtocb{1.3}{Motivation}
+\fwtocb{1.4}{What is an Exception?}
+\fwtocb{1.5}{Exceptions as Active Statuses}
+\fwtocb{1.6}{How to Use This Package}
+\fwtoca{2}{Static Parameters of this Package}
+\fwtocb{2.1}{Inline Switch Parameter}
+\fwtocb{2.2}{Threading Parameter}
+\fwtocb{2.3}{Macros for Global Variables}
+\fwtoca{3}{Specification}
+\fwtocb{3.1}{Specification Includes}
+\fwtocb{3.2}{Exception Type}
+\fwtocb{3.3}{Macro EX\_RAISE}
+\fwtocb{3.4}{Exception Block Construct}
+\fwtocb{3.5}{Definition of Semantics}
+\fwtocb{3.6}{Exception Information}
+\fwtocb{3.7}{Function ex\_str}
+\fwtocb{3.8}{A Warning About Names}
+\fwtocb{3.9}{Glossary}
+\fwtoca{4}{Implementation}
+\fwtocb{4.1}{Overview and Data Structure Description}
+\fwtocc{4.1.1}{Global Variables}
+\fwtocc{4.1.2}{Magic Numbers}
+\fwtocb{4.2}{Exception type}
+\fwtocb{4.3}{Macros for Declaring and Defining Exceptions}
+\fwtocb{4.4}{Macro for Raising Exceptions}
+\fwtocb{4.5}{Exception Block Macros (Safe)}
+\fwtocb{4.6}{Fast, Inline Versions of the Exception Block Macros}
+\fwtocb{4.7}{Function ex\_str}
+\fwtocb{4.8}{Support Functions}
+\fwtocc{4.8.1}{Function \_exrai}
+\fwtocc{4.8.2}{Function ex\_bomb}
+\fwtocc{4.8.3}{Function \_expop}
+\fwtoca{5}{Test Program}
+\fwtocb{5.1}{Function sc01}
+\fwtocb{5.2}{Function sc02}
+\fwtocb{5.3}{Function sc03}
+\fwtocb{5.4}{Function sc04}
+\fwtocb{5.5}{Function sc05}
+\fwtocb{5.6}{Function sc06}
+\fwtocb{5.7}{Function sc07}
+\fwtocb{5.8}{Function sc08}
+\fwtocb{5.9}{Function sc09}
+\fwtocb{5.10}{Function fa01}
+\fwtocb{5.11}{Function fa02}
+\fwtocb{5.12}{Function fa03}
+\fwtocb{5.13}{Function fa04}
+\fwtocb{5.14}{Function fa05}
+\fwtocb{5.15}{Function fa06}
+\fwtocb{5.16}{Function fa07}
+\fwtocb{5.17}{Function fa08}
+\fwtocb{5.18}{Function fa09}
+\fwtoca{6}{Design Notes}
+\fwtocb{6.1}{Architectural Discussion}
+\fwtocb{6.2}{Exception Identity}
+\fwtocb{6.3}{Identifier Names}
+\fwtocb{6.4}{Catering for Multi-Threading}
+\fwtocb{6.5}{Checking}
+\fwtocb{6.6}{Future Improvements}
+\fwtocfinish{}
+
+
+\fwnewpage
+
+
+
+\fwseca{1}{Overview}
+
+This overview section provides general information about this package.
+
+Processing this file using FunnelWeb will result in the production of the
+specification and implementation files defined below. In addition a test
+program for testing this package will be generated. This FunnelWeb source
+file and the files that it generates are Copyright (C) Ross Williams 1993.
+See the configuration header notice below.
+
+\fwbeginmacro
+\fwfilename{except.h}{1}\fwequals \fwodef \fwmacroname{Specification file}{18}\fwbtx[
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwisafile{This macro is attached to an output file.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwfilename{except.c}{2}\fwequals \fwodef \fwmacroname{Implementation file}{31}\fwbtx[
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwisafile{This macro is attached to an output file.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwfilename{ex\_test.c}{3}\fwequals \fwodef \fwmacroname{Test program file}{74}\fwbtx[
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwisafile{This macro is attached to an output file.}
+\fwendmacronotes
+\fwendmacro
+
+
+The remainder of this overview section contains only descriptions. It does
+not contain any code.
+
+
+\fwsecb{1.1}{Configuration Header Notice}
+
+The following notice applies to this FunnelWeb source file as well as to
+the FunnelWeb output files to which it is written.
+
+\fwbeginmacro
+\fwmacroname{Configuration header notice}{4}\fwmany{}\fwequals \fwodef \fwbtx[
+/*************************************************************************/
+/* Package name : Except. */
+/* Version : 1.0 */
+/* Completed : April 1993. */
+/* Released : 29 September 1993. */
+/* First created : This package was first created in April 1993. */
+/* Summary : This package provides Ada-like exceptions for C. */
+/* Components : except.fw - FunnelWeb source file. */
+/* except.h - Exported header file. */
+/* except.c - Implementation file. */
+/* ex_test.c - C test program. */
+/* Requires : style.h, as.h, as.c. */
+/* Author : Ross N. Williams (ross@guest.adelaide.edu.au) */
+/* Rocksoft^tm Pty Ltd */
+/* 16 Lerwick Avenue, Hazelwood Park 5066, Australia. */
+/* FTP Archive : This file can be found in */
+/* "ftp.adelaide.edu.au/pub/funnelweb/examples/" */
+/* Disclaimer : This program is distributed WITHOUT ANY WARRANTY; */
+/* without even the implied warranty of MERCHANTABILITY */
+/* or FITNESS FOR A PARTICULAR PURPOSE. */
+/* Copyright : Copyright (C) Ross Williams 1993. */
+/* However, permission is granted for anyone to copy, */
+/* modify, and distribute this work for any purpose, */
+/* commercial or non-commercial, so long as this notice */
+/* is included verbatim, and so long as all */
+/* modifications are recorded in the change log below. */
+/* Changes : Please log any changes to this software either in the */
+/* originating FunnelWeb source file, or, if you must, */
+/* in the C source files produced from the FunnelWeb */
+/* file. */
+/* --<Start of Change Log>-- */
+/* ??-Apr-93: RNW: Created this package. */
+/* 29-Sep-93: RNW: Released this package. */
+/* --<End of Change Log>-- */
+/*************************************************************************/
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definitions 18, 31, and 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{1.2}{Abstract}
+
+This package provides an \fwemp{exceptions} facility for C that is very similar to
+the exceptions facility in the Ada programming language. An exception is a
+control-flow event that causes control to be transferred up the stack
+(with the stack unwinding as it goes) until a \fwemp{handler} for the particular
+exception invoked is found. The exception facility is totally under the
+client's control. The client defines a set of exceptions, and \fwemp{raises} an
+exception event by calling \fwlit{EX\_RAISE}. Other functions defined by the client
+can catch the exceptions by name. The exception facility is useful for
+error handling and package interface definition.
+
+
+\fwsecb{1.3}{Motivation}
+
+The motivation for creating this package was to provide a simpler, safer, and
+more sophisticated non-local jump facility than is provided by the standard
+ANSI \fwlit{setjmp} (ANSI 7.6.1.1) and \fwlit{longjmp} (7.6.2.1) primitives. In
+particular, the biggest problem with the ANSI functions is that they
+require that the thrower and catcher of the control event be sufficiently
+coordinated to share a single global variable containing the catcher's
+context. The requirement for this link is unacceptable because it precludes
+the use of non-local jumps as an element of the interface of packages
+having an abstract client (unless \fwlit{jmpbuf}s are passed as parameters - yuk!).
+This lack of abstraction results in the following disadvantages:
+
+* A global variable of type \fwlit{jmpbuf} must be agreed upon between thrower
+and catcher for each potential throw. The result is a proliferation of
+global context variables, whose validity at any particular instant is often
+unclear.
+
+* If the programmer wishes to set up a nest of handlers for a particular
+condition, the global \fwlit{jmpbuf} buffer for the condition must be explicitly
+and carefully saved and restored by each function in the nest.
+
+* The interface to \fwlit{setjmp} and \fwlit{longjmp} is a bit raw, requiring
+fiddling with integer values and embedding calls in conditional statements.
+
+A better solution to the problem of non-local jumps is a system of
+exceptions.
+
+
+\fwsecb{1.4}{What is an Exception?}
+
+An exception is essentially a non-local \fwlit{goto} to the nearest dynamically
+enclosing target label in the stack of suspended functions. To execute an
+exception \fwlit{goto}, one \fwemp{raises} the exception, for example with a \fwlit{raise}
+statement \fwlit{raise sloth\_exception;}. Control is then immediately transferred
+to the nearest dynamically enclosing handler (label) for \fwlit{sloth\_exception}.
+
+In fact handlers are not simply labels, but block-structured constructs
+that define an execution zone within which the set of exceptions that they
+handle will be caught. For example, the following exception handling
+anonymous block might appear in a program written in the Ada programming
+language:
+
+\fwbeginmacro
+\fwmacroname{Example of an Ada exception handling block}{5}\fwzero{}\fwequals \fwodef \fwbtx[
+declare
+ n : integer := 2*x+y;
+begin
+ sloth_action(n);
+ walrus_action(n*n);
+exception
+ when sloth_exception => PUT("The sloth exception went off.");
+ when aardvark_exception => PUT("The aardvark exception went off.");
+end
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+In the above example, the code between \fwlit{declare} and \fwlit{exception} is
+the code within which exceptions will be caught. The code between
+\fwlit{exception} and \fwlit{end} contains two exception handlers that will catch
+the exceptions \fwlit{sloth\_exception} and \fwlit{aardvark\_exception} should they
+be raised by the execution of the declarations or \fwlit{sloth\_action} or
+\fwlit{walrus\_action}. Any other exception that is raised within the controlled
+zone will simply propagate further up the call chain to the nearest handler
+that can handle it.
+
+A most important aspect of the exceptions provided by Ada and this package
+is that an exception propagates to the nearest \fwemp{dynamically} enclosing
+exception handler. This means that, apart from the shared knowledge of the
+definition of the exception, there is not necessarily any static relationship
+between the function that raises an exception and the function that catches
+it. This makes exceptions both dangerous and powerful. Dangerous because a
+programmer can code a \fwlit{raise} statement with no knowledge of the function
+catching the exception. Powerful, because this very abstraction allows
+packages to raise exceptions that can be caught by abstract clients.
+
+
+\fwsecb{1.5}{Exceptions as Active Statuses}
+
+Over the years, exceptions have received a lot of bad press and have
+generally been considered to be dangerous things. For example, Tony Hoare,
+in his Turing Award lecture of 1980, when covering the programming
+language Ada, remarked:
+
+\fwemp{Gradually these objectives have been sacrificed in favour of power,
+supposedly achieved by a plethora of features and notational conventions,
+many of them unncessary and some of them, like exception handling,
+even dangerous.} --- Charles Antony Richard Hoare, Turing Award Speech, 1980.
+
+Certainly exceptions can be dangerous things. However, I believe that, on
+balance, exceptions enhance reliability rather than deteriorating it. The
+reason for this belief is that exceptions \fwemp{actively} indicate problems,
+whereas their alternative in this capacity, statuses, \fwemp{passively} indicate
+problems.
+
+To see this, consider the simple example case of a function that is supposed
+to write its argument character to its argument device. This is a
+straightforward operation, unless the device fails in some way, in which case
+this fact must be indicated to the caller. The traditional way of defining such
+a function is to have it return a status indicating whether the call succeeded.
+
+\fwbeginmacro
+\fwmacroname{Example of a function returning a status}{6}\fwzero{}\fwequals \fwodef \fwbtx[
+EXPORT bool writdev P_((dev_t,char));
+/* Returns TRUE upon success, FALSE if the write failed. */
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+This results in calling code that should look something like this:
+
+\fwbeginmacro
+\fwmacroname{Example of call to function returning a status}{7}\fwzero{}\fwequals \fwodef \fwbtx[
+if (!writdev(slothdev,'x'))
+ bomb("Sloth device failed - aborting.\n");
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+but often looks like this:
+
+\fwbeginmacro
+\fwmacroname{Example of call without checking to a function returning a status}{8}\fwzero{}\fwequals \fwodef \fwbtx[
+writdev(slothdev,'x');
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+Code such as this is extremely dangerous because a program written in this
+way might operate correctly for years, but then suddenly start behaving in
+odd ways when undetected errors occur. Unfortunately, it
+is extremely easy to write code such as this, as is easy to forget that
+a particular function even returns a status! Code such as this is quite
+common.
+
+Now consider how \fwlit{writdev} looks if it is defined using an exception to
+take care of the error case:
+
+\fwbeginmacro
+\fwmacroname{Example of a function that uses an exception}{9}\fwzero{}\fwequals \fwodef \fwbtx[
+EXPORT void writdev P_((dev_t,char));
+/* Raises writedev_ex exception if the write fails. */
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+By casting the error condition in terms of an exception, the function
+\fwemp{by default} ensures that something will happen if an error arises.
+In fact, one of two things must happen if the exception is ever raised: either
+the programmer codes a catcher for the exception and deals with it (in which
+case, it will probably be dealt with properly) or the exception propagates
+up out of \fwlit{main()} where it will cause the exceptions package to
+initiate a controlled program bomb describing the unhandled exception.
+Both of these alternatives ensure that the condition is explicitly handled
+which is the important thing.
+
+By using exceptions, the programmer can ensure that \fwemp{by default} any
+error condition that arises will cause a program bomb. This is such a
+strong safety net that it actually \fwemp{legitimizes} the no-error checking
+style of programming so criticized earlier. If you are in a hurry to write
+a program and do not wish to bother with error checking, the use of
+functions that raise exceptions upon errors ensures that if the code
+terminates normally, then it has terminated error-free --- even though
+the programmer did not code any checking of return conditions.
+
+Another advantage of exceptions is that they allow whole classes of errors
+that might arise in a span of code to be handled at one point. For example:
+
+\fwbeginmacro
+\fwmacroname{Example of single-point error handling}{10}\fwzero{}\fwequals \fwodef \fwbtx[
+EX_BEGIN
+ f_file_t file1, file2;
+ char line[1000];
+ f_open(file1,read,"sloth.dat");
+ f_open(file2,write,"walrus.dat");
+ while (!f_eof(file1))
+ {
+ f_readline (file1,line,1000);
+ f_writeline(file2,line,1000);
+ }
+ fclose(file1);
+ fclose(file2);
+EX_FORGET
+ EX_WHEN(f_open_ex ) goto f_handle;
+ EX_WHEN(f_read_ex ) goto f_handle;
+ EX_WHEN(f_write_ex) goto f_handle;
+ EX_WHEN(f_close_ex)
+ f_handle:
+ f_delete(file2);
+ printf("Error performing copy.");
+EX_END]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+In the above code, a single exception handler handles all the error conditions
+that might arise during all the file operations. The resultant code is far
+cleaner than the code that would be necessary if the status of each call
+had to be checked independently. Using exceptions, the normal and the
+exceptional cases can each be expressed clearly.
+
+\fwemp{Summary:} There is no doubt that, when misused, exceptions can be
+an extremely dangerous language construct. However, they also have the
+outstanding quality of enabling functions to be written that \fwemp{actively}
+indicate errors, thus ensuring either that the client code does \fwemp{something}
+about the error, or that the program will bomb with an unhandled exception
+error. In this capacity exceptions act as \fwemp{active statuses}. In addition,
+exceptions allow error handling to be separated from ordinary execution.
+These two properties of exceptions mean that, in my opinion, they improve
+reliability on balance, and are a worthy programming tool.
+
+
+\fwsecb{1.6}{How to Use This Package}
+
+Using this package is easy - just follow the following steps!
+
+\fwemp{STEP 1: Define the exception.} Before raising or catching an exception,
+you have to define it and make it visible to every entity that needs to
+refer to the exception. To define it, you need to think of an identifier that
+will be used to represent the exception, and you need to think of a short
+(one-line) description for the exception. Having done this, if you want
+the exception to be visible only within the current program file, insert
+a call to the macro \fwlit{EX\_LOCAL} in the variable section. For example:
+
+\fwbeginmacro
+\fwmacroname{Example exception definition}{11}\fwzero{}\fwequals \fwodef \fwbtx[
+EX_LOCAL(buf_full,"buf_full: Buffer is full exception.");
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+The first argument is the \fwemp{exception identifier} and the second argument is
+the \fwemp{exception description}. The \fwlit{EX\_LOCAL} macro translates into a
+string constant declaration having the name \fwlit{buf\_full} and the value
+\fwlit{\char`\"buf\_full: Buff...\char`\"}. It is important that the exception identifer be
+unique within its scope as it is implemented by an ordinary constant. It
+is also very important that the description of the exception be unique
+within the set of exceptions in the program. If each exception has a unique
+description, then unhandled exceptions (see later) can be easily identified.
+
+If you want the exception to be visible within all clients of the module
+declaring it, replace \fwlit{EX\_LOCAL} above with \fwlit{EX\_EXPORT} and insert a
+call to \fwlit{EX\_EXCEPT} in the header file for the module. \fwlit{EX\_EXCEPT}
+requires just the variable name.
+
+\fwbeginmacro
+\fwmacroname{Example exception declaration}{12}\fwzero{}\fwequals \fwodef \fwbtx[
+EX_EXCEPT(buf_full);
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwemp{STEP 2: Raise the exception.} Having completed step 1, you can now raise the
+exception in any module that can see the exception (i.e. the \fwlit{.c} file
+with the \fwlit{EX\_LOCAL} or \fwlit{EX\_EXPORT}, and any \fwlit{.c} file that includes
+the header file containing the \fwlit{EX\_EXCEPT}) simply be calling \fwlit{EX\_RAISE}.
+Note: \fwlit{EX\_RAISE} is syntactically equivalent to a compound statement.
+
+\fwbeginmacro
+\fwmacroname{Example of raising an exception}{13}\fwzero{}\fwequals \fwodef \fwbtx[
+/* If the buffer is full, raise the full buffer exception. */
+if (bufsiz > BUF_MAX)
+ EX_RAISE(buf_ful);
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+The effect of a call to \fwlit{EX\_RAISE} is that control will leave the current
+function, and the stack will unwind until a function is encountered whose
+context contains an active exception handler construct that specifies a
+catcher for the exception that has been raised (in this case \fwlit{buf\_ful}.
+If no such handler exists, the exception package will bomb the program,
+printing out an error message stating that an exception has not been
+handled, and giving the description of the exception.
+
+\fwemp{STEP 3: Catch the exception.} Catching exceptions is a little tricker than
+raising them. To catch an exception, you need to specify so in advance
+by enclosing the code that might raise the exception within an \fwemp{exception
+block} construct provided by the \fwlit{EX\_} macros \fwlit{EX\_BEGIN}, \fwlit{EX\_FORGET},
+\fwlit{EX\_WHEN} and \fwlit{EX\_END}. Here is an abstract example:
+
+\fwbeginmacro
+\fwmacroname{Exception block syntax}{14}\fwzero{}\fwequals \fwodef \fwbtx[
+EX_BEGIN
+ <Code that might raise an exception>
+EX_FORGET
+ EX_WHEN(<name of exception 1>)
+ <Code to handle exception 1>
+ EX_WHEN(<name of exception 2>)
+ <Code to handle exception 2>
+ EX_WHEN(<name of exception 3>)
+ <Code to handle exception 3>
+EX_END
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+The entire context (from \fwlit{EX\_BEGIN} to \fwlit{EX\_END}) is syntactically
+equivalent to a compound statement (\fwlit{\char`\{\char`\}}). Its semantics are that the
+code that might raise an exception is executed, and, if no exceptions are
+raised, terminates. If an exception is raised, the code aborts to
+the corresponding handler, or is propagated upwards if no matching handler
+is present. For a more detailed description of the semantics, see the
+specification section.
+
+
+\fwseca{2}{Static Parameters of this Package}
+
+This package has a few static (compile-time) parameters which can be used
+to modify its behavior.
+
+
+\fwsecb{2.1}{Inline Switch Parameter}
+
+Exceptions are tricky constructs, particularly in a programming language
+like C, and it makes sense to incorporate lots of checking into a package
+such as this one. At the same time, exceptions are a fundamental language
+construct that are likely to be used extensively, and it should be possible
+to configure them to be as efficient as possible.
+
+To satisfy these twin needs, this package provides a boolean parameter which
+can be used to select two different kinds of implementation. Set \fwlit{\_EX\_FAST}
+to \fwlit{FALSE} if you want the exported macros to generate function calls and to
+perform lots of checks. Set \fwlit{\_EX\_FAST} to \fwlit{TRUE} if you want the exported
+macros to generate inline code that runs as fast as possible with no checking
+at all. It is strongly recommended that this symbol be set to \fwlit{FALSE}
+unless performance requirements absolutely demand that it be set to \fwlit{TRUE}.
+
+\fwbeginmacro
+\fwmacroname{Symbol \_EX\_FAST}{15}\fwequals \fwodef \fwbtx[
+#define _EX_FAST FALSE
+/* Set _EX_FAST to TRUE to turn on inlining and turn off checking. */
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 32.}
+\fwendmacronotes
+\fwendmacro
+
+
+Note: Some other packages (such as the \fwlit{link} package) allow parameters
+like this to be set by the client package, thus enabling different client
+modules to specify different safety/efficiency trade-offs. However, this level
+of parameterization granularity could not be achieved in this package as
+some of the checking is magic number checking which must be employed globally
+or not at all. The problem is that a module with checks on might complain
+about incorrect magic numbers that were not set by another module with checks
+off.
+
+
+\fwsecb{2.2}{Threading Parameter}
+
+The parameter \fwlit{\_EX\_THRD} tells the package whether it is operating within
+a multi-threaded environment (\fwlit{TRUE}) (thus prohibiting single-instance
+global variables). If you set this to \fwlit{TRUE}, you will also need to
+modify the macros for global variables in the next section.
+
+\fwbeginmacro
+\fwmacroname{Symbol \_EX\_THRD}{16}\fwequals \fwodef \fwbtx[
+#define _EX_THRD FALSE
+/* To configure this package to work under a multi-threaded environment, */
+/* set _EX_THRD to TRUE and modify the k_var calls later on in the file. */
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 32.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{2.3}{Macros for Global Variables}
+
+This package uses three global variables --- \fwlit{\_ex\_curr}, \fwlit{\_ex\_id},
+and \fwlit{\_ex\_info} --- which root the exception context stack, and store
+information about the most recently raised exception. Unfortunately,
+global variables such as these cause problems on multi-threaded
+systems which require that separate instances of all global variables be
+maintained for each thread.
+
+The solution to this problem is to define the global variables as usual,
+but to refer to them only through a set of lvalue-yielding macros. These
+macros can then be configured to point either directly to a single set of
+global variables (non-threaded system), or to thread-instance variables
+(threaded system). This is the approach that has been taken in this package.
+Accordingly the macros have been defined in this package static
+parameter section. Both unthreaded and threaded versions appear below.
+
+\fwbeginmacro
+\fwmacroname{Macros for global variables}{17}\fwequals \fwodef \fwbtx[
+#if !_EX_THRD
+/* Non-threaded system macros simply point to variables. */
+#define _EX_CURR _ex_curr
+#define EX_ID ((p_ex_t) _ex_id)
+#define _EX_ID _ex_id
+#define EX_INFO _ex_info
+#else
+/* Threaded system macros translate to kernel calls. */
+/* To make this package work in a multi-threaded environment, */
+/* set _EX_THRD to TRUE and modify these definitions. */
+/* Note: The kernel should initialize _EX_CURR to NULL. */
+#define _EX_CURR (* ((_ex_cx_t *) k_var(51)))
+#define EX_ID ((p_ex_t) (* ((p_ex_t *) k_var(52))))
+#define _EX_ID (* ((p_ex_t *) k_var(52)))
+#define EX_INFO (* ((ptrint *) k_var(53)))
+#endif
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 32.}
+\fwendmacronotes
+\fwendmacro
+
+
+(The 51, 52 and so on are just example variable numbers. By the way, each of
+the three global variables will fit into a \fwlit{ptrint}.).
+
+The global variable \fwlit{\_ex\_curr} is not supposed to be used by the client
+so its symbol starts with \fwlit{\_}. \fwlit{EX\_ID} and \fwlit{EX\_INFO} are
+intended to be visible to the client. However, the client is not allowed
+to write to \fwlit{EX\_ID} and so two forms have been provided, one hidden
+read/write form (\fwlit{\_EX\_ID}) and one read-only form (\fwlit{EX\_ID}). The type cast
+in \fwlit{EX\_ID} is there solely to convert the value from an lvalue to an rvalue
+(ANSI 6.3.4 (footnote 44)) so that the client can't write to it.
+
+If these macros are changed to point to thread instance variables, be
+sure to initialize the \fwlit{\_EX\_CURR} variable to \fwlit{NULL} (before performing
+any exception actions) if you want unhandled exceptions to be correctly
+detected. The other two variables don't need to be initialized.
+
+Because these macros can translate to function calls, an
+attempt has been made in the rest of the package to minimize references to
+them (e.g. assign their values to temporary variables and manipulate them
+rather than using the macro itself multiple times).
+
+
+\fwseca{3}{Specification}
+
+Because this package exports lots of macros, its specification (\fwlit{.h}) file
+contains lots of stuff that should really be in the implementation file out
+of sight of the client. Luckily, FunnelWeb allows most of these implementation
+details to be located in the implementation section of this FunnelWeb file,
+leaving this section to describe, as cleanly as possible, only those components
+in the specification file intended to be presented to the client.
+
+In a nutshell, the package exports an exception type, and macros to raise
+and catch exceptions.
+
+\fwbeginmacro
+\fwmacroname{Specification file}{18}\fwequals \fwodef \fwbtx[
+]fwetx=%
+\fwmacroname{Configuration header notice}{4}\fwbtx[
+#ifndef _EX_DONE
+#define _EX_DONE 1
+]fwetx=%
+\fwmacroname{Specification includes}{19}\fwbtx[
+]fwetx=%
+\fwmacroname{Exception type}{20}\fwbtx[
+]fwetx=%
+\fwmacroname{Hidden definitions}{32}\fwbtx[
+]fwetx=%
+\fwmacroname{Macro EX\_RAISE}{22}\fwbtx[
+]fwetx=%
+\fwmacroname{Macros for constructing exception blocks}{23}\fwbtx[
+]fwetx=%
+\fwmacroname{Function spec ex\_str}{30}\fwbtx[
+]fwetx=%
+\fwmacroname{Hidden function specs}{33}\fwbtx[
+#endif
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 1.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{3.1}{Specification Includes}
+
+The specification file requires just the following includes. The \fwlit{style.h}
+include file contains basic C style stuff. The ANSI standard \fwlit{setjmp.h}
+include file (ANSI Standard Section 7.6) is required because the \fwlit{setjmp}
+and \fwlit{longjmp} functions/macros are used to implement the package.
+
+\fwbeginmacro
+\fwmacroname{Specification includes}{19}\fwequals \fwodef \fwbtx[
+#include "style.h"
+#include <setjmp.h>
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 18.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{3.2}{Exception Type}
+
+Under this package, each exception is represented by an explicit object that
+resides in memory. However, the package does not export this object type.
+Like many C packages that export abstract types, this package exports only
+a pointer-to-object type, the intent being that the client should only ever
+manipulate the abstract objects through pointers. Thus, this package exports
+a pointer-to-exception type \fwlit{p\_ex\_t}, but does not export a corresponding
+exception type \fwlit{ex\_t}.
+
+Most packages that export abstract objects by pointer type also export
+functions to dynamically create and destroy the abstract objects. However,
+in the case of exceptions there is no need for this. In fact there is a
+positive need to create exceptions at compile time and bind them statically
+(Dynamic creation would mean that an exception would have to be created before
+being raised, which would be awkward to coordinate at run time).
+So, instead of exporting a function to create an exception, this package
+exports macros that allow the client to statically create (i.e. at compile
+time) a new (hidden) exception object and, simultaneously, define a constant
+pointer (of type \fwlit{p\_ex\_t}) that points to the new exception object, and
+to which an identifier of the client programmer's choosing can be bound.
+Here are the macros that do this.
+
+\fwbeginmacro
+\fwmacroname{Exception type}{20}\fwequals \fwodef \fwbtx[
+]fwetx=%
+\fwmacroname{Type p\_ex\_t}{40}\fwbtx[
+#define EX_EXCEPT(NAME) ]fwetx=%
+\fwmacroname{Implementation of EX\_EXCEPT}{41}\fwbtx[
+#define EX_EXPORT(NAME,DESC) ]fwetx=%
+\fwmacroname{Implementation of EX\_EXPORT}{42}\fwbtx[
+#define EX_LOCAL(NAME,DESC) ]fwetx=%
+\fwmacroname{Implementation of EX\_LOCAL}{43}\fwbtx[
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 18.}
+\fwendmacronotes
+\fwendmacro
+
+
+The macros \fwlit{EX\_EXPORT} and \fwlit{EX\_LOCAL} each create a brand new exception
+object. They can be called only at places in a module where variables can be
+declared. The argument \fwlit{DESC} must be a one-line constant string that
+describes the exception; it will be written out if the exception is involved
+in some kind of error (e.g. if it propagates out of \fwlit{main()} and has to be
+described to the user). The \fwlit{NAME} argument must be a program identifier
+which will be the name of the pointer constant that will point to the
+new exception. Macros \fwlit{EX\_EXPORT} and \fwlit{EX\_LOCAL} are identical except
+that \fwlit{EX\_EXPORT} makes the constant pointer globally visible in the
+program (i.e. it is present in the symbol table at link time), whereas
+\fwlit{EX\_LOCAL} does not. If \fwlit{EX\_EXPORT} has been used, the constant pointer
+to the exception can be made visible in other modules by adding an instance
+of the \fwlit{EX\_EXCEPT} macro in the header file of the module containing the
+exception definition.
+
+Here is an example of a global exception declaration:
+
+\fwbeginmacro
+\fwmacroname{Example exception declarations}{21}\fwzero{}\fwequals \fwodef \fwbtx[
+In sloth.h:
+ EX_EXCEPT(sloth_exception);
+
+In sloth.c:
+ EX_EXPORT(sloth_exception,"Sloth exception");
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{3.3}{Macro EX\_RAISE}
+
+The macro \fwlit{EX\_RAISE} raises its argument exception. The argument exception
+must be an expression evaluating to a pointer to the exception to be raised.
+See a later section for the precise semantics of an exception raise.
+
+This macro is syntactically equivalent to a compound statement. It is
+guaranteed that its argument will be evaluated exactly once.
+
+\fwbeginmacro
+\fwmacroname{Macro EX\_RAISE}{22}\fwequals \fwodef \fwbtx[
+#if _EX_FAST
+#define EX_RAISE(P_EX) ]fwetx=%
+\fwmacroname{Fast implementation of EX\_RAISE(P\_EX)}{45}\fwbtx[
+#else
+#define EX_RAISE(P_EX) ]fwetx=%
+\fwmacroname{Safe implementation of EX\_RAISE(P\_EX)}{44}\fwbtx[
+#endif
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 18.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{3.4}{Exception Block Construct}
+
+The only way to catch one or more exceptions is to declare a construct
+that encloses the code that could raise the exceptions, along with the handler
+code. This construct is called an exception block and is implemented using
+a small set of preprocessor macros. Here they are:
+
+\fwbeginmacro
+\fwmacroname{Macros for constructing exception blocks}{23}\fwequals \fwodef \fwbtx[
+#if _EX_FAST
+#define EX_BEGIN \
+]fwetx=%
+\fwmacroname{Fast implementation of EX\_BEGIN}{52}\fwbtx[
+#define EX_FORGET ]fwetx=%
+\fwmacroname{Fast implementation of EX\_FORGET}{53}\fwbtx[
+#define EX_WHEN(P_EX) ]fwetx=%
+\fwmacroname{Fast implementation of EX\_WHEN(P\_EX)}{54}\fwbtx[
+#define EX_OTHERS ]fwetx=%
+\fwmacroname{Fast implementation of EX\_OTHERS}{55}\fwbtx[
+#define EX_END ]fwetx=%
+\fwmacroname{Fast implementation of EX\_END}{56}\fwbtx[
+#define EX_POP ]fwetx=%
+\fwmacroname{Fast implementation of EX\_POP}{57}\fwbtx[
+#else
+#define EX_BEGIN \
+]fwetx=%
+\fwmacroname{Safe implementation of EX\_BEGIN}{46}\fwbtx[
+#define EX_FORGET ]fwetx=%
+\fwmacroname{Safe implementation of EX\_FORGET}{47}\fwbtx[
+#define EX_WHEN(P_EX) ]fwetx=%
+\fwmacroname{Safe implementation of EX\_WHEN(P\_EX)}{48}\fwbtx[
+#define EX_OTHERS ]fwetx=%
+\fwmacroname{Safe implementation of EX\_OTHERS}{49}\fwbtx[
+#define EX_END ]fwetx=%
+\fwmacroname{Safe implementation of EX\_END}{50}\fwbtx[
+#define EX_POP ]fwetx=%
+\fwmacroname{Safe implementation of EX\_POP}{51}\fwbtx[
+#endif
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 18.}
+\fwendmacronotes
+\fwendmacro
+
+
+These macros must be used in accordance with the following syntax:
+
+\fwbeginmacro
+\fwmacroname{Syntax of exception block}{24}\fwzero{}\fwequals \fwodef \fwbtx[
+compound_statement = other_forms_of_compound_statement | exception_block
+ | EX_POP
+exception_block = "EX_BEGIN" c_code "EX_FORGET" { handler } "EX_END"
+handler = "EX_WHEN(" expression ")" c_code
+handler = "EX_OTHERS"
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+The argument to each instantiation of \fwlit{EX\_WHEN} must be an rvalue of type
+\fwlit{p\_ex\_t}. It is guaranteed that this argument will be evaluated \fwemp{at most}
+once.
+
+The macro \fwlit{EX\_POP} should be invoked only from within the normal code of
+an exception block.
+
+
+\fwsecb{3.5}{Definition of Semantics}
+
+This section contains a detailed English description of the semantics of the
+exception constructs provided by this package. Normally this sort of
+information would be laced throughout the package specification. However, in
+this package, there are so many special cases that it was thought best to
+collect all the tricky stuff in one place. The reader is advised to study
+this section thoroughly, as a lack of knowledge about the precise semantics
+of the exception construct can be very dangerous.
+
+\fwemp{Basic semantics:} When control hits an exception block,
+the code between \fwlit{EX\_BEGIN} and \fwlit{EX\_FORGET} (the
+\fwemp{normal code}) is executed. If, during the execution of the normal code, no
+exceptions propagate up to this construct then, upon completion of the normal
+code, execution of the entire construct terminates. If, during the execution
+of the normal code, an exception is raised (in the code or any function it
+calls) that propagates up to this construct, control exits the normal code at
+that point and is transferred to the code associated with the handler for
+the exception raised (the \fwemp{handler code}). If there is no handler for the
+exception raised, the exception is propagated to the next dynamically
+enclosing handler in the dynamic chain. If there is a handler for the target
+exception, the code associated with that handler is executed and the
+construct terminates. If an exception propagates out of \fwlit{main()}, the
+exception package bombs the program with an error message explaining what
+has happened and printing out the description of the offending exception.
+
+\fwemp{State of the function:} You may be wondering why the middle keyword
+in the exception construct is \fwlit{EX\_FORGET}. The reason is that the ANSI
+standard (ANSI 7.6.2.1) states: \fwemp{All accessible objects have values as of
+the time longjmp was called, except that the values of objects of automatic
+storage duration that are local to the function containing the invocation
+of the corresponding setjmp macro that do not have volatile-qualified type
+and have been changed between the setjmp invocation and longjmp call
+are indeterminate.} These are strong words! Because this exception package
+is implemented using \fwlit{setjmp} and \fwlit{longjmp}, these words mean that
+following the raising of an exception, you cannot rely on the value of any
+\fwlit{auto}matic variable that was modified within the normal code of an
+exception construct before the exception was raised. The \fwlit{EX\_FORGET} syntax
+has been designed to act as a continual reminder of this danger.
+
+\fwemp{Direct exits from normal code:} Because the exception package
+maintains an explicit stack of exception handling contexts, there are some
+restrictions about how control can leave such constructs. ``Acceptable'' ways
+of leaving the main code of an exception block are 1) reaching the end of the
+block, and 2) raising an exception (handled or unhandled). However, control
+can also exit the construct in four other ``unacceptable'' ways. These are
+1) by executing a \fwlit{goto} out of the block,
+2) by executing a \fwlit{return},
+3) by executing an explicit \fwlit{longjmp},
+4) by executing \fwlit{exit} or some other program terminating function
+(actually this case does not matter as much as the program ends anyway).
+To ensure that the exception package correctly maintains its stack of
+live exception blocks, each instance of any of the four unacceptable ways
+of exiting a block should be prededed by a call to \fwlit{EX\_POP}. Here is
+an example of a correct explicit exception block termination.
+
+\fwbeginmacro
+\fwmacroname{Example of a correct direct exit from an exception block}{25}\fwzero{}\fwequals \fwodef \fwbtx[
+EX_BEGIN
+ add_char(buffer,'x');
+ if (is_full(buffer)) {EX_POP; return TRUE;}
+EX_FORGET
+ EX_WHEN(buf_ful)
+ return TRUE;
+EX_END
+return FALSE;
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwlit{EX\_POP} can only be called from within the normal code of an exception
+block.
+
+\fwemp{No restrictions on exiting handler code:} By the time control reaches any
+exception handler code, the current exception context has been popped, so
+there are no constraints at all on exits from handler code. In the example
+above, the \fwlit{return TRUE} from the normal code must be preceeded by a call
+to \fwlit{EX\_POP}, but no such call is required for the \fwlit{return TRUE} in the
+handler code. In fact, such a call would be erroneous. As soon
+as control hits handler code it is guaranteed that the current context
+has been popped.
+
+\fwemp{Exception handler code can jump to other exception handlers:} Just place a
+label inside one handler and a goto in another. This is useful where the code
+in one handler is suitable for many exceptions. For example:
+
+\fwbeginmacro
+\fwmacroname{Example of goto in exception handler}{26}\fwzero{}\fwequals \fwodef \fwbtx[
+EX_BEGIN
+ add_char(buffer,'x');
+EX_FORGET
+ EX_WHEN(misc_1) goto doit;
+ EX_WHEN(misc_2) goto doit;
+ EX_WHEN(misc_3) goto doit;
+ EX_WHEN(misc_4) goto doit;
+ EX_WHEN(misc_5)
+ doit:
+ printf("Miscellaneous exception happened.\n");
+ return FALSE;
+EX_END
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+Because there are no restrictions on how handlers can exit, the \fwlit{gotos}
+could have pointed outside the construct too.
+
+\fwemp{Local variables:} Each normal code and handler code segment is actually
+framed as a compound statement. This means that you can declare local
+variables if desired. For example:
+
+\fwbeginmacro
+\fwmacroname{Example of local variables in an exception block}{27}\fwzero{}\fwequals \fwodef \fwbtx[
+EX_BEGIN
+ int result;
+ result=add_char(buffer,'x');
+ if (result > 10) {EX_POP; return TRUE;}
+EX_FORGET
+ EX_WHEN(buf_ful)
+ string walrus = "An example string.\n";
+ printf(walrus);
+ return TRUE;
+EX_END
+return FALSE;
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwemp{Exception blocks can be nested:} Functions can contain many exception
+blocks. Exception blocks can even be nested. However, be very sure to obey
+the other rules. Here is an example:
+
+\fwbeginmacro
+\fwmacroname{Example of nested exception handlers}{28}\fwzero{}\fwequals \fwodef \fwbtx[
+EX_BEGIN
+ add_char(buffer,'x');
+ EX_BEGIN
+ big_func();
+ EX_FORGET
+ EX_WHEN(buf_ful) printf("big_func raised buf_ful.\n");
+ EX_END
+EX_FORGET
+ EX_WHEN(buf_ful) printf("add_char raised buf_ful.\n");
+ EX_WHEN(sloth) printf("either add_char or big_func raised sloth.\n");
+EX_END
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwemp{OTHERS handler:} The \fwlit{EX\_OTHERS} handler catches all exceptions.
+
+\fwemp{Handler precedence:} The first handler that matches an exception
+catches the exception. If more than one handler matches the same exception,
+the first handler will be activated.
+
+\fwemp{Re-raising an exception:} To re-raise an exception, simply
+code the statement \fwlit{EX\_RAISE(EX\_ID);}.
+
+
+\fwsecb{3.6}{Exception Information}
+
+When an exception is raised, two symbols provide information about the
+exception being raised. These symbols are macros and do not necessarily
+translate to variable names. However, it is guaranteed that \fwlit{EX\_ID} will be
+an rvalue (ANSI 6.2.2.1 (footnote 31)) of type \fwlit{p\_ex\_t}, and that \fwlit{EX\_INFO}
+will behave like an modifiable lvalue (ANSI 6.2.2.1) of type \fwlit{ptrint} (see
+the header file \fwlit{style.h} for this type). The declarations of these macros
+appear in the static parameters section of this document.
+
+Whenever an exception is raised, \fwlit{EX\_ID} contains the ID of the exception
+being raised. This value persists until the next exception is raised.
+This variable is only marginally useful in the current version of
+this package, as each exception handler will always statically ``know'' the
+exception that it has caught. In long and complex handlers though, the
+capacity for self-reference that \fwlit{EX\_ID} provides enables such handlers
+to be coded without hard-wiring the exception in question whenever it is
+re-raised. This allows exceptions to be more easily renamed. The macro is
+also useful because it allows exceptions to be dynamically re-raised from
+code to which many handlers have been pointed to with \fwlit{goto}s. For example:
+
+\fwbeginmacro
+\fwmacroname{Example of use of EX\_ID}{29}\fwzero{}\fwequals \fwodef \fwbtx[
+EX_BEGIN
+ add_char(buffer,'x');
+EX_FORGET
+ EX_WHEN(misc_1) goto doit;
+ EX_WHEN(misc_2) goto doit;
+ EX_WHEN(misc_3) goto doit;
+ EX_WHEN(misc_4) goto doit;
+ EX_WHEN(misc_5)
+ doit:
+ printf("Miscellaneous exception happened.\n");
+ EX_RAISE(EX_ID);
+EX_END
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwlit{EX\_ID} has been configured as an rvalue so that it cannot be written.
+Thus, it is guaranteed always to contain the ID of the exception most recently
+raised.
+
+The variable \fwlit{EX\_INFO} is more under client control. It exists simply to
+act as an abstract channel for code raising exceptions to communicate with
+code catching exceptions. There are no rules for this value --- it can be
+written to, or read from any piece of code at any time; make up your own
+rules. The type of \fwlit{EX\_INFO} has been set to \fwlit{ptrint} so as to allow
+any pointer or integer to be conveyed through the variable. This effectively
+allows any amount of information to be passed.
+
+
+\fwsecb{3.7}{Function ex\_str}
+
+The function \fwlit{ex\_str} accepts a pointer to an exception and returns a
+pointer to a constant static string being the one line description of the
+exception that was provided when the exception was defined with \fwlit{EX\_LOCAL}
+or \fwlit{EX\_EXPORT}.
+
+\fwbeginmacro
+\fwmacroname{Function spec ex\_str}{30}\fwequals \fwodef \fwbtx[EXPORT string ex_str P_((p_ex_t));]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 18.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{3.8}{A Warning About Names}
+
+This package exports a number of compile-time and link-time symbols that
+pollute the symbol table and link table. This pollution is necessary because
+this package relies significantly on exported macros that reference exported
+variables. To reduce naming conflicts, nearly all exported names that are
+supposed to be visible to the client commence with \fwlit{ex\_} and all exported
+names that are supposed to be invisible to the client commence with \fwlit{\_ex}.
+Please be careful to avoid names with these prefixes.
+
+
+\fwsecb{3.9}{Glossary}
+
+\fwlit{Abstract client} --- A client of this package about which no information
+is known.
+
+\fwlit{Catch} --- When an exception is raised, it propagates up the run-time
+context stack until it encounters a corresponding handler at which point it
+is said to have been caught.
+
+\fwlit{Client} --- Any code that uses this package.
+
+\fwlit{Exception} --- A dynamic non-local control-flow event.
+
+\fwlit{Exception block} --- A special kind of anonymous block (called a compound
+statement in C) containing exception handlers.
+
+\fwlit{Exception description} --- A single-line string briefly describing the
+exception. This string is printed out whenever an exception has to be
+identified to the user.
+
+\fwlit{Exception identifier} --- A program identifier that is bound to a constant
+whose value is a pointer pointing to an exception object.
+
+\fwlit{Exception handler} --- An exception/code binding that appears at the
+end of an exception block and catches the specified exception should it
+propagate to that level.
+
+\fwlit{Direct exit} --- The termination of an exception block in a way that
+bypasses the exception package (for example, by \fwlit{return} or explicit
+\fwlit{longjmp}). The macro \fwlit{EX\_POP} should be called before all such exits.
+
+\fwlit{Raise} --- An exception is raised by an \fwlit{EX\_RAISE} statement. Once
+raised, an exception unwinds the stack until it encounters a handler for
+the specific exception.
+
+
+\fwseca{4}{Implementation}
+
+This section describes the implementation of this package. The implementation
+is short, but is rather messy because of the fast/safe alternatives, and
+because of the fact that much of the functionality of the package is provided
+in the \fwlit{.h} file. Much of that functionality has been deferred using
+FunnelWeb macros to this section.
+
+The implementation (\fwlit{.c}) file itself is fairly simply, consisting only
+of some global variables and a few function definitions.
+
+\fwbeginmacro
+\fwmacroname{Implementation file}{31}\fwequals \fwodef \fwbtx[
+]fwetx=%
+\fwmacroname{Configuration header notice}{4}\fwbtx[
+#include "except.h"
+#include "as.h"
+]fwetx=%
+\fwmacroname{Global variables (.c)}{35}\fwbtx[
+]fwetx=%
+\fwmacroname{Function ex\_str}{58}\fwbtx[
+]fwetx=%
+\fwmacroname{Function ex\_bomb}{67}\fwbtx[
+]fwetx=%
+\fwmacroname{Function \_exrai}{60}\fwbtx[
+]fwetx=%
+\fwmacroname{Function \_expop}{69}\fwbtx[
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 2.}
+\fwendmacronotes
+\fwendmacro
+
+
+All the real action happens in the definitions in the specification (\fwlit{.h})
+file that are hidden from the client.
+
+\fwbeginmacro
+\fwmacroname{Hidden definitions}{32}\fwequals \fwodef \fwbtx[
+]fwetx=%
+\fwmacroname{Symbol \_EX\_FAST}{15}\fwbtx[
+]fwetx=%
+\fwmacroname{Symbol \_EX\_THRD}{16}\fwbtx[
+]fwetx=%
+\fwmacroname{Exception block context type}{34}\fwbtx[
+]fwetx=%
+\fwmacroname{Global variables (.h)}{36}\fwbtx[
+]fwetx=%
+\fwmacroname{Macros for global variables}{17}\fwbtx[
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 18.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwbeginmacro
+\fwmacroname{Hidden function specs}{33}\fwequals \fwodef \fwbtx[
+]fwetx=%
+\fwmacroname{Function spec \_exrai}{59}\fwbtx[
+]fwetx=%
+\fwmacroname{Function spec \_expop}{68}\fwbtx[
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 18.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{4.1}{Overview and Data Structure Description}
+
+This section gives an overview of the implementation of this package.
+
+This package operates by maintaining an explicit stack of currently active
+exception blocks. Whenever an exception block is entered (\fwlit{EX\_BEGIN}),
+a \fwlit{setjmp} is executed and the resultant \fwlit{jmp\_buf} is inserted into a
+stack node and pushed onto the stack. Whenever an exception block is exited
+normally (\fwlit{EX\_END}), the stack node on the top of the stack is popped. When
+an exception is raised, the top of the stack is popped off and a \fwlit{longjmp}
+is executed to its context. The context then searches its handlers for a
+handler for the exception raised. If it finds one, it executes it. If it
+doesn't, it pops and \fwlit{longjmp}s the top of stack again. This goes on
+until the exception is caught, or the stack is empty.
+
+The stack is composed of a singly-linked list of records of the following
+type:
+
+\fwbeginmacro
+\fwmacroname{Exception block context type}{34}\fwequals \fwodef \fwbtx[
+typedef struct _ex_cxt_
+ {
+]fwetx=%
+\fwmacroname{Header magic number field}{37}\fwbtx[
+ jmp_buf _ex_jmbf; /* Exception block context. */
+ struct _ex_cxt_ *_ex_prev; /* Pointer to previous stack record. */
+]fwetx=%
+\fwmacroname{Trailer magic number field}{38}\fwbtx[
+ } _ex_cx_t;
+]fwetx=%
+\fwmacroname{Magic number symbols}{39}\fwbtx[
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 32.}
+\fwendmacronotes
+\fwendmacro
+
+
+The sneaky part is that instead of storing this stack explicitly on the
+heap, it is stored on the run-time stack itself. This is done by having the
+\fwlit{EX\_BEGIN} macro create a compound statement containing a local
+automatic variable of type \fwlit{\_ex\_cx\_t} which forms a node of the stack.
+These nodes are threaded into a linked list that is rooted by the global
+variable \fwlit{\_ex\_curr} which points to the node at the top of the stack,
+or \fwlit{NULL} if the stack is empty. Two other hidden global variables
+\fwlit{\_ex\_id} and \fwlit{\_ex\_info} store the exception id and the exception
+information.
+
+
+\fwsecc{4.1.1}{Global Variables}
+
+This package requires three global variables to keep track of everything.
+The variable \fwlit{\_ex\_curr} points to the context record on the top of the
+stack, or \fwlit{NULL} if the stack is empty. The variable \fwlit{\_ex\_id} contains
+a pointer to the exception most recently raised. The variable \fwlit{\_ex\_info}
+is provided for the use of the client.
+
+To enable this package (and its client code) to be converted over to a
+multi-threaded system at a later date, these global variables are referred
+to only through a set of macros. The macros are described in the static
+parameters section of this document. They are called \fwlit{\_EX\_CURR},
+\fwlit{EX\_ID}, \fwlit{\_EX\_ID}, \fwlit{EX\_INFO}.
+
+\fwbeginmacro
+\fwmacroname{Global variables (.c)}{35}\fwequals \fwodef \fwbtx[
+#if !_EX_THRD
+GLOVAR _ex_cx_t *_ex_curr = NULL;
+GLOVAR p_ex_t _ex_id;
+GLOVAR ptrint _ex_info;
+#endif
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 31.}
+\fwendmacronotes
+\fwendmacro
+
+
+Here is the version of these variables that appears in the header file.
+
+\fwbeginmacro
+\fwmacroname{Global variables (.h)}{36}\fwequals \fwodef \fwbtx[
+#if !_EX_THRD
+extern _ex_cx_t *_ex_curr;
+extern p_ex_t _ex_id;
+extern ptrint _ex_info;
+#endif
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 32.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecc{4.1.2}{Magic Numbers}
+
+In order to detect corruptions in exception context records, two magic
+number fields have been placed at the start and end of the record. In C, there
+are hundreds of ways for corruptions to occur, but in particular, in this
+package, if a client exits an exception context without first popping it,
+it is quite likely that the context will be ``run over'' by stack frames of
+functions called later. If the context is then invoked, the program will
+crash. The following magic number fields greatly improve the chances of
+detecting such corruptions.
+
+\fwbeginmacro
+\fwmacroname{Header magic number field}{37}\fwequals \fwodef \fwbtx[#if !_EX_FAST
+ ulong _ex_mag1; /* Header magic number. */
+#endif]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 34.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwbeginmacro
+\fwmacroname{Trailer magic number field}{38}\fwequals \fwodef \fwbtx[#if !_EX_FAST
+ ulong _ex_mag2; /* Trailer magic number. */
+#endif]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 34.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwbeginmacro
+\fwmacroname{Magic number symbols}{39}\fwequals \fwodef \fwbtx[
+#define _EX_MAG1 0xFB8A5D30
+#define _EX_MAG2 0x09F2E7A2]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 34.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{4.2}{Exception type}
+
+Here is the definition of the pointer-to-exception type. Normally, a hidden
+exception type would be declared to which the pointer type would point, but as
+exceptions have only a single attribute, their description string, it makes
+sense simply to declare the pointer type to be \fwlit{string} type (pointer to
+char).
+
+\fwbeginmacro
+\fwmacroname{Type p\_ex\_t}{40}\fwequals \fwodef \fwbtx[typedef string p_ex_t;]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 20.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{4.3}{Macros for Declaring and Defining Exceptions}
+
+The three exception declaration macros make use of the fact that \fwlit{p\_ex\_t}
+is really just a string pointer. There is a slight danger that a too-clever
+C compiler might overlap two strings for which one is a non-strict suffix
+of the other. However, this is considered unlikely.
+
+\fwbeginmacro
+\fwmacroname{Implementation of EX\_EXCEPT}{41}\fwequals \fwodef \fwbtx[extern const p_ex_t NAME]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 20.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{Implementation of EX\_EXPORT}{42}\fwequals \fwodef \fwbtx[ const p_ex_t NAME = DESC]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 20.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{Implementation of EX\_LOCAL}{43}\fwequals \fwodef \fwbtx[static const p_ex_t NAME = DESC]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 20.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{4.4}{Macro for Raising Exceptions}
+
+Two forms of the \fwlit{EX\_RAISE} macro are given. The first simply calls
+\fwlit{\_exrai} which performs lots of checks before raising the argument exception.
+The fast form does not perform any checking --- it just performs the
+essential operations of setting the ID and executing the \fwlit{longjmp}.
+
+\fwbeginmacro
+\fwmacroname{Safe implementation of EX\_RAISE(P\_EX)}{44}\fwequals \fwodef \fwbtx[{_exrai(P_EX);}]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 22.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwbeginmacro
+\fwmacroname{Fast implementation of EX\_RAISE(P\_EX)}{45}\fwequals \fwodef \fwbtx[{_EX_ID = (P_EX); longjmp(_EX_CURR->_ex_jmbf,NON_ZERO);}]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 22.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{4.5}{Exception Block Macros (Safe)}
+
+The exception block macros are messy and deserve some explanation.
+These macros operate as a coherent whole, so it is probably best to read
+them through a few times to see how they interact, rather than attempting
+to understand each one independently. Two versions of the exception block
+macros are given --- the safe version and the fast version. The safe version
+is described first.
+
+The \fwlit{EX\_BEGIN} macro sets the stage for the entire exception block by
+starting a compound statement, declaring a local variable for the stack
+node (\fwlit{\_ex\_cxlc}), initializing its magic checking numbers, pushing it onto
+the stack, and finally saving the current execution context in the \fwlit{\_ex\_jmbf}
+field of the newly created stack node. This work has to be done in this macro
+as most of the operations require direct access to the local context. Not much
+checking can be done here either as we have no way of cross checking the value
+of \fwlit{\_EX\_CURR} upon entry. The open \fwlit{if} statement encloses the entire
+normal code of the exception block.
+
+\fwbeginmacro
+\fwmacroname{Safe implementation of EX\_BEGIN}{46}\fwequals \fwodef \fwbtx[{_ex_cx_t _ex_cxlc; \
+ _ex_cxlc._ex_mag1 = _EX_MAG1; \
+ _ex_cxlc._ex_mag2 = _EX_MAG2; \
+ _ex_cxlc._ex_prev = _EX_CURR; \
+ _EX_CURR = &_ex_cxlc; \
+ if (!setjmp(_ex_cxlc._ex_jmbf)) { ]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 23.}
+\fwendmacronotes
+\fwendmacro
+
+
+At the point of forgetting, we need to terminate the compound statement
+for the normal code, pop the current exception context and then test the
+currently live exception against the candidate handlers. This is most
+simply performed with a cascaded \fwlit{if} statement. The \fwlit{if} statement
+has to start with a \fwlit{FALSE} branch so as to establish the syntactic
+context for the first \fwlit{EX\_WHEN} macro.
+
+An earlier version of this package that used integers to represent exceptions
+used a \fwlit{switch} statement instead of an \fwlit{if} chain. A \fwlit{switch} statement
+is actually preferable to an \fwlit{if} chain because \fwlit{switch}es prohibit
+duplicate labels. However, \fwlit{switch}es had to be abandoned because when the
+package was changed over so that it used pointers as exception ids, it was
+noticed that K\&R78 section 9.7 says that the argument to \fwlit{switch} must be of
+type \fwlit{int}. K\&R88 (section A9.4) and ANSI (section 6.6.4.2) weaken this to
+include all integral types, but still preclude pointers. So an \fwlit{if} chain
+had to be used.
+
+\fwbeginmacro
+\fwmacroname{Safe implementation of EX\_FORGET}{47}\fwequals \fwodef \fwbtx[;EX_POP} else {EX_POP; if (FALSE) {]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 23.}
+\fwendmacronotes
+\fwendmacro
+
+
+The start of each handler in the exception block is marked by a call to the
+\fwlit{EX\_WHEN} macro. All it does is add an extra clause onto the \fwlit{if} chain.
+
+\fwbeginmacro
+\fwmacroname{Safe implementation of EX\_WHEN(P\_EX)}{48}\fwequals \fwodef \fwbtx[} else if ((P_EX) == (EX_ID)) {]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 23.}
+\fwendmacronotes
+\fwendmacro
+
+
+The \fwlit{EX\_OTHERS} macro is also easily implemented (but, like \fwlit{EX\_FORGET},
+could conceivably provoke some inconvenient warnings from \fwlit{lint}.
+
+\fwbeginmacro
+\fwmacroname{Safe implementation of EX\_OTHERS}{49}\fwequals \fwodef \fwbtx[} else if (TRUE) {]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 23.}
+\fwendmacronotes
+\fwendmacro
+
+
+To end the construct, we terminate the current handler, re-raise the
+currently live exception if it has not already been caught, and terminate
+the \fwlit{else} of \fwlit{EX\_FORGET} and the outer braces of the entire construct.
+
+\fwbeginmacro
+\fwmacroname{Safe implementation of EX\_END}{50}\fwequals \fwodef \fwbtx[} else _exrai(EX_ID); }}]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 23.}
+\fwendmacronotes
+\fwendmacro
+
+
+Popping the current exception context is easily achieved with a function call.
+Note: The reference to \fwlit{\_ex\_cxlc} will simply not compile if there
+isn't a current context. This correctly precludes the use of this macro
+outside an exception block. It also guarantees that the argument to \fwlit{\_expop}
+will be a pointer to the context record of the innermost statically-enclosing
+exception block.
+
+\fwbeginmacro
+\fwmacroname{Safe implementation of EX\_POP}{51}\fwequals \fwodef \fwbtx[{_expop(&_ex_cxlc);}]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 23.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{4.6}{Fast, Inline Versions of the Exception Block Macros}
+
+Here are the fast, inline versions of the exported macros. This version
+of the macros operates in exactly the same way as the other version except
+that no checking is performed whatsoever. This version of the macros
+performs everything on the spot, without calling any support functions at all.
+
+\fwbeginmacro
+\fwmacroname{Fast implementation of EX\_BEGIN}{52}\fwequals \fwodef \fwbtx[{_ex_cx_t _ex_cxlc; \
+ _ex_cxlc._ex_prev = _EX_CURR; \
+ _EX_CURR = &_ex_cxlc; \
+ if (!setjmp(_ex_cxlc._ex_jmbf)) { ]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 23.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwbeginmacro
+\fwmacroname{Fast implementation of EX\_FORGET}{53}\fwequals \fwodef \fwbtx[;EX_POP} else {EX_POP; if (FALSE) {]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 23.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{Fast implementation of EX\_WHEN(P\_EX)}{54}\fwequals \fwodef \fwbtx[} else if ((P_EX) == (EX_ID)) {]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 23.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{Fast implementation of EX\_OTHERS}{55}\fwequals \fwodef \fwbtx[} else if (TRUE) {]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 23.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwbeginmacro
+\fwmacroname{Fast implementation of EX\_END}{56}\fwequals \fwodef \fwbtx[} else longjmp(_EX_CURR->_ex_jmbf,NON_ZERO); }}]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 23.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwbeginmacro
+\fwmacroname{Fast implementation of EX\_POP}{57}\fwequals \fwodef \fwbtx[{_EX_CURR = _EX_CURR->_ex_prev;}]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 23.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{4.7}{Function ex\_str}
+
+The function \fwlit{ex\_str} is easily implemented. Because exceptions are just
+pointers to strings, all it has to do is return its argument!
+
+\fwbeginmacro
+\fwmacroname{Function ex\_str}{58}\fwequals \fwodef \fwbtx[
+EXPORT string ex_str (p_ex) p_ex_t p_ex; {return p_ex;}]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 31.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{4.8}{Support Functions}
+
+Although most of what this package exports is macros, some of the macros
+translate into calls to the support functions described in this section.
+Functions have been used for operations that are particularly long-winded.
+
+
+\fwsecc{4.8.1}{Function \_exrai}
+
+The function \fwlit{\_exrai} raises an exception. This function performs
+all the grunt work for the \fwlit{EX\_RAISE} macro, which merely translates to a
+call of this function. The function specification appears in the header file
+but is not supposed to be seen by the client.
+
+\fwbeginmacro
+\fwmacroname{Function spec \_exrai}{59}\fwequals \fwodef \fwbtx[EXPORT void _exrai P_((p_ex_t));]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 33.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwbeginmacro
+\fwmacroname{Function \_exrai}{60}\fwequals \fwodef \fwbtx[
+EXPORT void _exrai (p_ex)
+p_ex_t p_ex;
+{
+#if _EX_FAST
+ as_bomb("_exrai: This function should not be called with _EX_FAST==TRUE.");
+#else
+ ]fwetx=%
+\fwmacroname{Take a copy of \_EX\_CURR in p\_curr}{61}\fwbtx[
+ ]fwetx=%
+\fwmacroname{Set the exception ID}{62}\fwbtx[
+ ]fwetx=%
+\fwmacroname{Bomb if the stack is empty}{63}\fwbtx[
+ ]fwetx=%
+\fwmacroname{Bomb if the target context is not on the stack}{64}\fwbtx[
+ ]fwetx=%
+\fwmacroname{Bomb if the target context is corrupted}{65}\fwbtx[
+ ]fwetx=%
+\fwmacroname{Raise the exception}{66}\fwbtx[
+#endif
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 31.}
+\fwendmacronotes
+\fwendmacro
+
+
+This function refers to the value of \fwlit{\_EX\_CURR} lots of times. However,
+\fwlit{\_EX\_CURR} could be a function call. To avoid excessive use of this
+variable, we take a copy of its value in \fwlit{p\_curr}.
+
+\fwbeginmacro
+\fwmacroname{Take a copy of \_EX\_CURR in p\_curr}{61}\fwmany{}\fwequals \fwodef \fwbtx[_ex_cx_t * p_curr = _EX_CURR;]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definitions 60 and 69.}
+\fwendmacronotes
+\fwendmacro
+
+
+We set the global exception ID variable \fwlit{\_EX\_ID} \fwemp{before} performing
+all the sanity checks so that if one of them fails, the current exception
+can be printed out by \fwlit{ex\_bomb}.
+
+\fwbeginmacro
+\fwmacroname{Set the exception ID}{62}\fwequals \fwodef \fwbtx[_EX_ID = p_ex;]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 60.}
+\fwendmacronotes
+\fwendmacro
+
+
+If the context stack is empty then there is no handler to catch the exception
+and we have to bomb the program.
+
+\fwbeginmacro
+\fwmacroname{Bomb if the stack is empty}{63}\fwequals \fwodef \fwbtx[
+if (p_curr == NULL) {as_wl("_exrai: Unhandled exception."); ex_bomb();}]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 60.}
+\fwendmacronotes
+\fwendmacro
+
+
+If the target context is lower down in memory than the stack frame of \fwemp{this}
+function (\fwlit{\_exrai}), then because stacks nearly always grow downwards, it
+is almost certain that a context was not popped when it should have been.
+Strictly speaking, this test is non-portable. However, in
+practice, stacks grow downward in the address space on nearly all machines,
+and it's such a powerful check, it seems worth the potential portability
+problems.
+
+\fwbeginmacro
+\fwmacroname{Bomb if the target context is not on the stack}{64}\fwequals \fwodef \fwbtx[
+if (UWIDE(&p_curr) > UWIDE(&p_curr->_ex_jmbf))
+ {
+ as_wl("_exrai: Target exception context is no longer legitimate.");
+ as_wl(" Exception context resides beneath the top of stack.");
+ as_wl(" This means that earlier on, control must have left an");
+ as_wl(" exception context without first popping its handler.");
+ as_wl(" Look for jumps out of exception contexts that are not");
+ as_wl(" immediately preceded by calls to EX_POP.");
+ ex_bomb();
+ }]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 60.}
+\fwendmacronotes
+\fwendmacro
+
+
+Check the target context for corruptions. There is no point doing a \fwlit{longjmp}
+to a corrupted context!
+
+\fwbeginmacro
+\fwmacroname{Bomb if the target context is corrupted}{65}\fwequals \fwodef \fwbtx[
+if ((p_curr->_ex_mag1 != _EX_MAG1) || (p_curr->_ex_mag2 != _EX_MAG2))
+ {
+ as_wl("_exrai: Target exception context has been corrupted. This could");
+ as_wl(" be because an exception context wasn't popped, or it");
+ as_wl(" could be just a common garden-variety C corruption :-)");
+ ex_bomb();
+ }]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 60.}
+\fwendmacronotes
+\fwendmacro
+
+
+Actually raising the exception is the easy part! All that is required is a
+\fwlit{longjmp}.
+
+\fwbeginmacro
+\fwmacroname{Raise the exception}{66}\fwequals \fwodef \fwbtx[longjmp(p_curr->_ex_jmbf,NON_ZERO);]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 60.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecc{4.8.2}{Function ex\_bomb}
+
+The function \fwlit{ex\_bomb} writes out a description of the most recently
+raised exception and then bombs the program. This function is used by
+\fwlit{\_exrai}.
+
+\fwbeginmacro
+\fwmacroname{Function ex\_bomb}{67}\fwequals \fwodef \fwbtx[
+LOCAL void ex_bomb P_((void));
+LOCAL void ex_bomb ()
+{
+ char s[100];
+ as_wr(" Exception desc is : \""); as_wr(EX_ID); as_wl("\".");
+ as_wr(" Exception id is : ");
+ sprintf(s,"%lu (= %lX)",ULONG(EX_ID),ULONG(EX_ID)); as_wl(s);
+ as_wr(" Exception info is : ");
+ sprintf(s,"%lu (= %lX)",ULONG(EX_INFO),ULONG(EX_INFO)); as_wl(s);
+ as_bomb("Aborting program after exception error.");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 31.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecc{4.8.3}{Function \_expop}
+
+The function \fwlit{\_expop} pops the current exception block from the context
+stack. Before doing this, it performs a few checks. To assist it with its
+checks, the caller must pass a pointer to the current context record
+in the first parameter. This can always be done by the caller directly
+(without referencing \fwlit{\_EX\_CURR}) because popping is only supposed to take
+place within the static context of an enclosing exception block.
+
+\fwbeginmacro
+\fwmacroname{Function spec \_expop}{68}\fwequals \fwodef \fwbtx[EXPORT void _expop P_((_ex_cx_t *));]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 33.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwbeginmacro
+\fwmacroname{Function \_expop}{69}\fwequals \fwodef \fwbtx[
+EXPORT void _expop (p_check)
+_ex_cx_t *p_check;
+{
+#if _EX_FAST
+ as_bomb("_exrai: This function should not be called with _EX_FAST==TRUE.");
+#else
+ ]fwetx=%
+\fwmacroname{Take a copy of \_EX\_CURR in p\_curr}{61}\fwbtx[
+ ]fwetx=%
+\fwmacroname{Bomb if the current context is not the top of stack context}{70}\fwbtx[
+ ]fwetx=%
+\fwmacroname{Bomb if current context is corrupted}{71}\fwbtx[
+ ]fwetx=%
+\fwmacroname{Zap the current context}{72}\fwbtx[
+ ]fwetx=%
+\fwmacroname{Pop the context}{73}\fwbtx[
+#endif
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 31.}
+\fwendmacronotes
+\fwendmacro
+
+
+The first check test is to make sure that the context about to be popped is
+the current context --- the one statically enclosing the pop call.
+
+\fwbeginmacro
+\fwmacroname{Bomb if the current context is not the top of stack context}{70}\fwequals \fwodef \fwbtx[
+if (p_curr != p_check)
+ {
+ if (p_curr == NULL)
+ as_bomb("_expop: Context stack is empty.");
+ else
+ as_bomb("_expop: Top of context stack is not the current context.");
+ }
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 69.}
+\fwendmacronotes
+\fwendmacro
+
+
+The second check tests the current context (the one about to be popped) to
+make sure that it isn't corrupted. If it is, then the program should be
+bombed.
+
+\fwbeginmacro
+\fwmacroname{Bomb if current context is corrupted}{71}\fwequals \fwodef \fwbtx[
+if ((p_curr->_ex_mag1 != _EX_MAG1) || (p_curr->_ex_mag2 != _EX_MAG2))
+ {
+ as_wl("_ex_rai: Target exception context has been corrupted. This could");
+ as_wl(" be because an exception context wasn't popped, or it");
+ as_wl(" could be just a common garden-variety C corruption :-)");
+ as_bomb("Aborting program after exception error.");
+ }
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 69.}
+\fwendmacronotes
+\fwendmacro
+
+
+Before popping the current context, we need to zap its magic numbers so that
+they don't float around in stack memory where they might cause some future
+magic number test to succeed when it should have failed.
+
+\fwbeginmacro
+\fwmacroname{Zap the current context}{72}\fwequals \fwodef \fwbtx[
+p_curr->_ex_mag1 = ~_EX_MAG1;
+p_curr->_ex_mag2 = ~_EX_MAG2;
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 69.}
+\fwendmacronotes
+\fwendmacro
+
+
+Having checked and zapped the context, popping it is easy!
+
+\fwbeginmacro
+\fwmacroname{Pop the context}{73}\fwequals \fwodef \fwbtx[_EX_CURR = p_curr->_ex_prev;]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 69.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwseca{5}{Test Program}
+
+This section provides a test program which can be used to test the exceptions
+package. The program provides nine success tests and nine failure tests.
+The success tests do not cause the program to terminate, and so can all
+be performed in a single run. However, each failure test causes the
+program to bomb with an assertion error, and so the failure tests must
+be performed separately as nine separate invocations of the test
+program. At the end of this testing, the user can have a high degree of
+confidence that the package is working.
+
+Each of the eighteen tests is embodied in a separate function.
+The global boolean variable \fwlit{flag} is a miscellaneous temporary variable
+which is usually used to tell if an exception has fired.
+
+\fwbeginmacro
+\fwmacroname{Test program file}{74}\fwequals \fwodef \fwbtx[
+]fwetx=%
+\fwmacroname{Configuration header notice}{4}\fwbtx[
+
+#include "style.h"
+#include "except.h"
+#include "as.h"
+
+EX_LOCAL(sloth_ex,"Sloth exception");
+EX_LOCAL(walrus_ex,"Walrus exception");
+
+GLOVAR bool flag;
+
+]fwetx=%
+\fwmacroname{Function sc01}{75}\fwbtx[
+]fwetx=%
+\fwmacroname{Function sc02}{76}\fwbtx[
+]fwetx=%
+\fwmacroname{Function sc03}{77}\fwbtx[
+]fwetx=%
+\fwmacroname{Function sc04}{78}\fwbtx[
+]fwetx=%
+\fwmacroname{Function sc05}{79}\fwbtx[
+]fwetx=%
+\fwmacroname{Function sc06}{80}\fwbtx[
+]fwetx=%
+\fwmacroname{Function sc07}{81}\fwbtx[
+]fwetx=%
+\fwmacroname{Function sc08}{82}\fwbtx[
+]fwetx=%
+\fwmacroname{Function sc09}{83}\fwbtx[
+
+]fwetx=%
+\fwmacroname{Function fa01}{84}\fwbtx[
+]fwetx=%
+\fwmacroname{Function fa02}{85}\fwbtx[
+]fwetx=%
+\fwmacroname{Function fa03}{86}\fwbtx[
+]fwetx=%
+\fwmacroname{Function fa04}{87}\fwbtx[
+]fwetx=%
+\fwmacroname{Function fa05}{88}\fwbtx[
+]fwetx=%
+\fwmacroname{Function fa06}{89}\fwbtx[
+]fwetx=%
+\fwmacroname{Function fa07}{90}\fwbtx[
+]fwetx=%
+\fwmacroname{Function fa08}{91}\fwbtx[
+]fwetx=%
+\fwmacroname{Function fa09}{92}\fwbtx[
+
+main()
+{
+ char ch;
+
+ printf("Test Program for the EXCEPT Package\n");
+ printf("===================================\n");
+ printf("This test program provides a number of different tests. Because\n");
+ printf("some tests provoke the package to bomb on purpose, this test\n");
+ printf("program must be run a number of times, once for each test.\n");
+ printf("The 0 test performs a group of tests that are not supposed to\n");
+ printf("fail. The 1..9 tests each perform a test that is supposed to\n");
+ printf("bomb the program if the test succeeds. The 0 test should be run\n");
+ printf("with the package compiled with both _EX_FAST==FALSE and\n");
+ printf("_EX_FAST==TRUE. The 1..9 tests should use only _EX_FAST==FALSE.\n");
+ printf("\n");
+ if (_EX_FAST)
+ printf("Current value of EX_FAST == TRUE.\n");
+ else
+ printf("Current value of EX_FAST == FALSE.\n");
+ printf("\n");
+ printf("Enter 0 for success tests, or 1..9 for one of nine fail tests>");
+ ch=getchar(); printf("\n");
+ if (ch == '0')
+ {
+ printf("Success Tests\n");
+ printf("-------------\n");
+ printf("The following tests (sc01..sc09) test the normal features\n");
+ printf("the exceptions package. You should see nine success lines\n");
+ printf("appear on the screen. If the package bombs during this test,\n");
+ printf("then something is wrong and should be fixed.\n");
+ printf("\n");
+ sc01();
+ sc02();
+ sc03();
+ sc04();
+ sc05();
+ sc06();
+ sc07();
+ sc08();
+ sc09();
+ printf("\n");
+ printf("All of the success tests SUCCEEDED.\n");
+ }
+ else
+ {
+ if (_EX_FAST)
+ {
+ as_wl("Error in test configuration. An attempt was made to perform");
+ as_wl("a 1..9 test with _EX_FAST==TRUE. This does not make sense as");
+ as_wl("these tests test the error checking capability of the package");
+ as_wl("and _EX_FAST=TRUE has all error checking turned off!");
+ as_bomb("Please recompile with _EX_FAST==FALSE and try again.");
+ }
+ switch (ch)
+ {
+ case '1': fa01();
+ case '2': fa02();
+ case '3': fa03();
+ case '4': fa04();
+ case '5': fa05();
+ case '6': fa06();
+ case '7': fa07();
+ case '8': fa08();
+ case '9': fa09();
+ default:
+ printf("\nCharacter entered was not 0..9. Aborting...\n");
+ }
+ }
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 3.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{5.1}{Function sc01} This test checks to make sure that exception blocks operate correctly
+when no exceptions are raised.
+
+\fwbeginmacro
+\fwmacroname{Function sc01}{75}\fwequals \fwodef \fwbtx[
+LOCAL void sc01 P_((void));
+LOCAL void sc01 ()
+{
+ printf("Test SC01: Exception block with no exceptions raised.\n");
+
+ /* The NULL exception block should be OK. */
+ EX_BEGIN
+ EX_FORGET
+ EX_END
+
+ /* Now put some code in the normal section. */
+ flag=FALSE;
+ EX_BEGIN
+ flag=TRUE;
+ EX_FORGET
+ EX_END
+ as_cold(flag,"sc01: First flag block test failed.");
+
+ /* Make sure the EX_OTHERS branch only applies to exceptions. */
+ flag=FALSE;
+ EX_BEGIN
+ flag=TRUE;
+ EX_FORGET
+ EX_OTHERS
+ as_bomb("sc01: Raise failed.");
+ EX_END
+ as_cold(flag,"sc01: Second flag block test failed.");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{5.2}{Function sc02} This test tests to make sure that an exception raised within an exception
+block can be caught by that block.
+
+\fwbeginmacro
+\fwmacroname{Function sc02}{76}\fwequals \fwodef \fwbtx[
+LOCAL void sc02 P_((void));
+LOCAL void sc02 ()
+{
+ printf("Test SC02: Exception caught within immediate block.\n");
+ flag = FALSE;
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc02: Raise failed.");
+ EX_FORGET
+ EX_WHEN(sloth_ex) flag=TRUE;
+ EX_END
+ as_cold(flag,"sc02: Exception was not caught by local block.");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{5.3}{Function sc03} This test tests the \fwlit{EX\_OTHERS} feature.
+
+\fwbeginmacro
+\fwmacroname{Function sc03}{77}\fwequals \fwodef \fwbtx[
+LOCAL void sc03 P_((void));
+LOCAL void sc03 ()
+{
+ printf("Test SC03: Exception is caught by OTHERS clause.\n");
+ flag = FALSE;
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc03: Raise failed.");
+ EX_FORGET
+ EX_OTHERS flag=TRUE;
+ EX_END
+ as_cold(flag,"sc03: Exception was not caught by EX_OTHERS clause.");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{5.4}{Function sc04} This test tests nested exception blocks.
+
+\fwbeginmacro
+\fwmacroname{Function sc04}{78}\fwequals \fwodef \fwbtx[
+LOCAL void sc04 P_((void));
+LOCAL void sc04 ()
+{
+ printf("Test SC04: Exception is caught by nested exception block.\n");
+
+ /* Try a simple nested handler. */
+ flag=FALSE;
+ EX_BEGIN
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc04: Raise failed (1).");
+ EX_FORGET
+ EX_WHEN(walrus_ex)
+ as_bomb("sc04: Walrus exception caught (1).");
+ EX_END
+ EX_FORGET
+ EX_WHEN(sloth_ex) flag=TRUE;
+ EX_WHEN(walrus_ex) as_bomb("sc04: Walrus exception caught (x).");
+ EX_END
+ as_cold(flag,"sc04: First nested test failed.");
+
+ /* Test a re-raise. */
+ flag=FALSE;
+ EX_BEGIN
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc04: Raise failed (2).");
+ EX_FORGET
+ EX_WHEN(sloth_ex)
+ EX_RAISE(walrus_ex)
+ as_bomb("sc04: Raise failed (3).");
+ EX_WHEN(walrus_ex)
+ as_bomb("sc04: Walrus exception caught (2).");
+ EX_END
+ EX_FORGET
+ EX_WHEN(sloth_ex)
+ as_bomb("sc04: Sloth exception escaped.");
+ EX_WHEN(walrus_ex)
+ flag=TRUE;
+ EX_END
+ as_cold(flag,"sc04: Second nested test failed.");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{5.5}{Function sc05} This test tests whether \fwlit{EX\_OTHERS} can successfully re-raise an
+exception.
+
+\fwbeginmacro
+\fwmacroname{Function sc05}{79}\fwequals \fwodef \fwbtx[
+LOCAL void sc05 P_((void));
+LOCAL void sc05 ()
+{
+ STAVAR bool flag2;
+ printf("Test SC05: Single OTHERS handler reraises current exception.\n");
+ flag=FALSE;
+ flag2=FALSE;
+ EX_BEGIN
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc05: Raise failed (2).");
+ EX_FORGET
+ EX_OTHERS
+ flag=TRUE;
+ EX_RAISE(EX_ID);
+ as_bomb("sc05: Raise failed (3).");
+ EX_END
+ EX_FORGET
+ EX_WHEN(sloth_ex)
+ flag2=TRUE;
+ EX_OTHERS
+ as_bomb("sc05: Exception escaped.");
+ EX_END
+ as_cold(flag ,"sc05: OTHERS test failed (1).");
+ as_cold(flag2,"sc05: OTHERS test failed (2).");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{5.6}{Function sc06}
+
+
+\fwbeginmacro
+\fwmacroname{Function sc06}{80}\fwequals \fwodef \fwbtx[
+LOCAL void sc06 P_((void));
+LOCAL void sc06 ()
+{
+ printf("Test SC06: Handlers all GOTO same code.\n");
+ flag=FALSE;
+ EX_BEGIN
+ EX_RAISE(sloth_ex);
+ as_bomb("sc06: Raise failed.");
+ EX_FORGET
+ EX_WHEN(sloth_ex) goto handle;
+ EX_WHEN(walrus_ex)
+ as_bomb("sc06: Walrus exception went off.");
+ handle:
+ flag=TRUE;
+ EX_OTHERS
+ as_bomb("sc06: Exception escaped to OTHERS.");
+ EX_END
+ as_cold(flag,"sc06: GOTO test failed.");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{5.7}{Function sc07} This test simply checks that EX\_INFO can be written to and read from.
+
+\fwbeginmacro
+\fwmacroname{Function sc07}{81}\fwequals \fwodef \fwbtx[
+LOCAL void sc07 P_((void));
+LOCAL void sc07 ()
+{
+ printf("Test SC07: Exercise EX_INFO.\n");
+ EX_INFO = 3;
+ as_cold(EX_INFO == 3,"sc07: EX_INFO test failed.");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{5.8}{Function sc08} This test simply checks that the \fwlit{ex\_str} function is working.
+
+\fwbeginmacro
+\fwmacroname{Function sc08}{82}\fwequals \fwodef \fwbtx[
+LOCAL void sc08 P_((void));
+LOCAL void sc08 ()
+{
+ printf("Test SC08: Exercise ex_str.\n");
+ as_cold(ex_str(sloth_ex) == sloth_ex,"sc08: Failed.");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{5.9}{Function sc09} Test the legitimate use of \fwlit{EX\_POP}.
+
+\fwbeginmacro
+\fwmacroname{Function sc09}{83}\fwequals \fwodef \fwbtx[
+LOCAL void sc09 P_((void));
+LOCAL void sc09 ()
+{
+ printf("Test SC09: Test EX_POP.\n");
+ flag=FALSE;
+ EX_BEGIN
+ EX_BEGIN
+ EX_POP; goto finish;
+ EX_FORGET
+ EX_WHEN(sloth_ex) as_bomb("sc09: Inner catcher caught the sloth.");
+ EX_END
+ finish: EX_RAISE(sloth_ex);
+ EX_FORGET
+ EX_WHEN(sloth_ex) flag=TRUE;
+ EX_END
+ as_cold(flag,"sc09: Sloth exception failed to work.");
+ as_cold(_EX_CURR == NULL,"sc09: EX_POP failed to pop correctly.");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{5.10}{Function fa01} This test tests that an unhandled exception will be properly caught.
+
+\fwbeginmacro
+\fwmacroname{Function fa01}{84}\fwequals \fwodef \fwbtx[
+LOCAL void fa01 P_((void));
+LOCAL void fa01 ()
+{
+ printf("Test FA01: Unhandled Exception\n");
+ printf("------------------------------\n");
+ printf("This test raises the sloth exception but doesn't handle it.\n");
+ printf("The result should be an \"unhandled exception\" bomb specifying\n");
+ printf("the sloth exception. Here we go...\n");
+ printf("\n");
+ EX_RAISE(sloth_ex);
+ as_wl ("FA01 FAILED: the exception package did not catch the\n");
+ as_bomb("unhandled sloth exception.\n");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{5.11}{Function fa02} This test tests two calls to \fwlit{EX\_POP}.
+
+\fwbeginmacro
+\fwmacroname{Function fa02}{85}\fwequals \fwodef \fwbtx[
+LOCAL void fa02 P_((void));
+LOCAL void fa02 ()
+{
+ printf("Test FA02: Double EX_POP\n");
+ printf("------------------------\n");
+ printf("This test executes two calls to EX_POP within the normal code of\n");
+ printf("an exception block. The second one should cause a\n");
+ printf("\"context stack is empty\" bomb. Here we go...\n");
+ printf("\n");
+ EX_BEGIN
+ EX_POP;
+ EX_POP;
+ as_bomb("FA02 FAILED: Second EX_POP did not cause bomb (1).");
+ EX_FORGET
+ EX_END
+ as_bomb("FA02 FAILED: Second EX_POP did not cause bomb (2).");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{5.12}{Function fa03} This test tests a single call to \fwlit{EX\_POP} followed by a normal
+termination of the normal code.
+
+\fwbeginmacro
+\fwmacroname{Function fa03}{86}\fwequals \fwodef \fwbtx[
+LOCAL void fa03 P_((void));
+LOCAL void fa03 ()
+{
+ printf("Test FA03: EX_POP Followed by Normal Termination\n");
+ printf("------------------------------------------------\n");
+ printf("This test executes a call to EX_POP then falls through to the\n");
+ printf("end of the normal code of the exception block. The result should\n");
+ printf("be a \"context stack is empty\" bomb. Here we go...\n");
+ printf("\n");
+ EX_BEGIN
+ EX_POP;
+ EX_FORGET
+ EX_END
+ as_bomb("FA03 FAILED: Fallthough after EX_POP did not cause bomb.");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{5.13}{Function fa04} This test checks to make sure that a context can detect when it is popping
+the wrong context.
+
+\fwbeginmacro
+\fwmacroname{Function fa04}{87}\fwequals \fwodef \fwbtx[
+LOCAL void fa04 P_((void));
+LOCAL void fa04 ()
+{
+ printf("Test FA04: Exit a block without EX_POPing\n");
+ printf("-----------------------------------------\n");
+ printf("This test exits an exception block using a goto without first\n");
+ printf("EX_POPing. The exception block is nested within another, and this\n");
+ printf("test is to make sure that the outer block detects that it is\n");
+ printf("popping the wrong context. The result should be a\n");
+ printf("\"not current context\" bomb. Here we go...\n");
+ printf("\n");
+ EX_BEGIN
+ EX_BEGIN
+ goto there;
+ EX_FORGET
+ EX_END
+ there:
+ EX_FORGET
+ EX_END
+ as_bomb("FA04 FAILED: Outer block FAILED to detect stack misalignment.");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{5.14}{Function fa05} This test tests for the detection of an unpopped invalid stack context.
+
+\fwbeginmacro
+\fwmacroname{Function fa05}{88}\fwequals \fwodef \fwbtx[
+LOCAL void fa05_x P_((void));
+LOCAL void fa05_x ()
+{
+ EX_BEGIN
+ return;
+ EX_FORGET
+ EX_END
+}
+
+LOCAL void fa05 P_((void));
+LOCAL void fa05 ()
+{
+ printf("Test FA05: Target Context Does Not Exist\n");
+ printf("----------------------------------------\n");
+ printf("This test exits an exception block from within a function using\n");
+ printf("a return statement. Thus, the context remains stacked even though\n");
+ printf("the enclosing C block has terminated. This test checks to see\n");
+ printf("whether this problem is detected next time an exception is raised.\n");
+ printf("The result should be an illegitimate context error. Here we go...\n");
+ printf("\n");
+ EX_BEGIN
+ fa05_x();
+ EX_RAISE(sloth_ex);
+ as_bomb("FA05 FAILED: Failed to raise sloth.");
+ EX_FORGET
+ EX_WHEN(sloth_ex)
+ as_bomb("FA05 FAILED: Sloth exception was raised.");
+ EX_END
+ as_bomb("FA05 FAILED: Costruct terminated normally - it shouldn't have.");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{5.15}{Function fa06} This test is identical to the previous one except that the test is made
+at the point of exit of the outer block, not at the point of raising an
+exception.
+
+\fwbeginmacro
+\fwmacroname{Function fa06}{89}\fwequals \fwodef \fwbtx[
+LOCAL void fa06 P_((void));
+LOCAL void fa06 ()
+{
+ printf("Test FA06: Target Context Does Not Exist (Fallthrough)\n");
+ printf("------------------------------------------------------\n");
+ printf("This test is identical to test FA05 except that it does not\n");
+ printf("raise an exception in the outer block. The result should be a\n");
+ printf("\"not current context\" error. Here we go...\n");
+ printf("\n");
+ EX_BEGIN
+ fa05_x();
+ EX_FORGET
+ EX_END
+ as_bomb("FA06 FAILED: Costruct terminated normally - it shouldn't have.");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwsecb{5.16}{Function fa07}
+
+\fwbeginmacro
+\fwmacroname{Function fa07}{90}\fwequals \fwodef \fwbtx[
+LOCAL void fa07 P_((void));
+LOCAL void fa07 ()
+{
+ as_bomb("Test FA07: Test FA06 is the last test.");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwsecb{5.17}{Function fa08}
+
+\fwbeginmacro
+\fwmacroname{Function fa08}{91}\fwequals \fwodef \fwbtx[
+LOCAL void fa08 P_((void));
+LOCAL void fa08 ()
+{
+ as_bomb("Test FA08: Test FA06 is the last test.");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwsecb{5.18}{Function fa09}
+
+\fwbeginmacro
+\fwmacroname{Function fa09}{92}\fwequals \fwodef \fwbtx[
+LOCAL void fa09 P_((void));
+LOCAL void fa09 ()
+{
+ as_bomb("Test FA09: Test FA06 is the last test.");
+}
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 74.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\fwseca{6}{Design Notes}
+
+This section contains a detailed design discussion of particular aspects of
+this package. Inserting these notes into the implementation section would have
+cluttered it up too much.
+
+
+\fwsecb{6.1}{Architectural Discussion}
+
+The basic engine for exceptions is provided by the ANSI standard \fwlit{setjmp}
+and \fwlit{longjmp} primitives which provide simple non-local jumps. The challenge
+is organizing them into an exception facility. To see the problems involved
+in doing this, we need only focus on an executing program at the time that
+an exception is raised. At this time, the exceptions package must locate
+the closest handler for the particular exception. From this, two things
+become immediately clear: 1) that the exceptions package is going to have to
+perform ``work'' whenever an exception block is encountered as well as whenever
+an exception is raised, 2) some sort of stacking of \fwlit{jmp\_buf} contexts
+is required.
+
+This reasoning suggests two organizations:
+
+1) Maintain a stack for each exception. Whenever an exception block is
+entered, push all the handlers for that block on their respective stacks.
+Pop them when exiting the handler. If an exception is raised, simply look
+on the top of its stack.
+
+2) Maintain a stack of exception blocks. If an exception is raised, search
+each block in turn for a matching handler.
+
+Of these two organizations, the second is by far the better. Exceptions are
+almost by definition rare events, and so in assessing the two organizations,
+the emphasis should be placed on the efficiency of the ordinary case which
+is the pushing and popping. The first alternative may require multiple pushes
+and pops per exception block, whereas the second requires just one. There
+are also a number of more practical reasons why the second alternative is
+better.
+
+Having decided that a stack of exception blocks should be maintained, the
+next thing to decide is where it should be stored. The first thing that
+pops to mind is to organize for the exceptions package to maintain a stack
+in a linked list growing out of a global variable. While completely feasible,
+this solution is distasteful as it requires a memory allocation and
+deallocation per exception block instance. A far better scheme is simply
+to store the stack on the run-time stack! This can be done by storing
+each node of the stack in an automatic variable within the stack frame
+of the function containing the exception block. These automatic variables
+can then be threaded together with points to form the originally desired
+explicit stack.
+
+
+\fwsecb{6.2}{Exception Identity}
+
+One interesting aspect of the design is the identity of exceptions.
+When the client raises an exception by calling \fwlit{ex\_raise}, an argument
+must be provided that in some way identifies the exception being raised.
+A number of possible schemes spring to mind:
+
+\fwemp{Integer/preprocessor constant:} Each exception could be mapped
+onto a unique integer which would represent the exception. These integers
+could be managed by defining preprocessor symbols for them. To raise an
+exception, the client would simply pass the preprocessor symbol. This solution
+is simple and provides compile-time checking (if the client programmer
+mistypes a number, the problem won't be discovered until the exception is
+raised and not caught, but if the client mistypes a preprocessor symbol, the
+compiler will issue an ``unknown symbol'' error), but it does not provide
+any way to ensure that two different exceptions in two different modules
+are not using the same number to represent the two different exceptions.
+There are organizational solutions to this problem such as having the
+programmer maintain a global list of exceptions, but these are generally
+unacceptable in the long run. One other solution is to make exception
+integers wide (e.g. 32-bits) and have the programmer choose the integer
+for each exception by tossing a coin 32 times. The probability of a collision
+would be tiny. To be sure that two exceptions were not using the same
+number, exceptions could be registered with the exceptions package which
+would check the uniqueness of each registered exception integer. Registration
+would also allow the exception package to bind a string name to each
+exception number.
+
+\fwemp{Integer/variable:} The first solution is clean because it uses
+preprocessor symbols. A slightly different solution is to use global variables
+instead. Under this scheme, a module exporting an exception exports a global
+integer variable that represents the exception. When the package starts
+up, it registers the exception with the exception package. Registration in
+this case is active, not passive; the exceptions package allocates an
+exception number which is assigned to the variable. This solution has the
+advantage of guaranteeing that exception numbers are unique. However,
+exceptions often happen under strange conditions and it is probably a
+disadvantage to have an exception represented by a writeable variable.
+
+\fwemp{Pointer to record:} An alternative to integers is to represent
+exceptions by pointers to records describing the exceptions. Each record
+could be declared statically (thus ensuring that each record has a unique
+pointer) and could contain a description of the exception and possibly
+other useful information (e.g. a count of how often the exception has fired).
+The pointers to the records could be constants.
+
+\fwemp{Pointer to string:} Pointers to records are OK, but are rather messy
+to declare. As it seems that the only information that really needs to be
+bound to an exception is a string describing the exception, a far better
+more direct scheme is simply to represent exceptions as pointers to strings.
+Each exception can be statically declared as a \fwlit{const} pointer to a string.
+This solves all the problems: 1) the exception identity is read-only,
+2) the exception identity is unique (because each string is stored at
+a different address), 3) the exception identity is easy to declare,
+4) the exceptions package doesn't have to manage a table of exceptions,
+5) the exception variable names are subject to compile-time checking.
+The only disadvantages are that 1) the compiler might overlap two constant
+strings if one is a non-strict suffix of the other, 2) the exception is
+represented by an object that is basically a variable which could be
+accidentally written-to if the program goes haywire before the exception is
+raised. The \fwlit{const} attribute helps, but may be ignored by many compilers
+which will place the variable in writeable memory. These disadvantages are
+considered minor compared to the advantages.
+
+Of the solutions given above, the simplest and cleanest is the pointer to
+string solution, and this is the scheme that is used in this package. This
+is a particularly satisfactory solution because it solves the problem of
+exception identity and exception description in one go.
+
+
+\fwsecb{6.3}{Identifier Names}
+
+Because it contains macros that refer to global variables, this package
+exposes the major proportion of its names to the client. As such, particular
+care must be taken with names.
+
+To assist portability to brain-dead compilers, all names have generally been
+restricted to six characters for external identifiers and eight for internal
+identifiers. Upper case has been used for preprocessor symbols and lower case
+for other identifiers. Although the use of upper case in the main exception
+syntax is a little loud, it is also a continuous reminder that this is a
+dangerous construct.
+
+The menemonic for this package is \fwlit{ex} and this appears at the beginning of
+every exported symbol. This will assist to reduce symbol collisions.
+In addition, any symbol that is not intended to be seen by the client has
+been prepended with an underscore. This is a little bit naughty as it
+contravenes the ANSI standard's rule 7.13 on identifiers reserved for
+libraries (``\fwemp{All identifiers that begin with an underscore are always
+reserved for use as identifiers with file scrope in both the ordinary
+identifier and tag name spaces}''), but as this package is supposed to be
+a library package too, it seems only a minor breach, and completely in keeping
+with the style of the ANSI library.
+
+The names of all the exported constructs were chosen very carefully.
+Because most of the exported items were macros, by universal convention,
+their identifiers had to be in upper case. This requirement was not a
+disadvantage though as exception handlers are so important that they ought
+to be syntactically ``loud''. Prefixing each symbol with \fwlit{EX\_} is a little
+verbose, but was worthwhile because it immediately binds the symbol so
+tightly to this package that generic suffixes such as \fwlit{BEGIN} can be used
+as a suffix. Thus \fwlit{EX\_BEGIN} and \fwlit{EX\_END} strongly convey their identity
+as the boundaries of an anonymous block, but also strongly indicate that the
+block is designed to handle exceptions.
+
+As mentioned earlier, the identifier \fwlit{EX\_FORGET} was chosen so as to
+continually remind the programmer that, in the event of an exception, all
+automatic variables defined within the function containing the exception block
+and which have been written since the \fwlit{EX\_BEGIN} of the block, will be
+undefined. This is such an important semantic point that it was considered
+worthy of being embodied in the syntax too.
+
+The hardest identifier to choose was \fwlit{EX\_RAISE}. For a long time, this
+construct was simply to take the form of an exported function with the
+name \fwlit{ex\_rai}. However, in the end, it was decided that it would be
+better to give this facility the same syntactic feel as the other constructs.
+In addition, the raising of an exception is an event that should probably
+be syntactically loud. Finally \fwlit{EX\_RAISE} is more readable than \fwlit{ex\_rai}.
+
+
+\fwsecb{6.4}{Catering for Multi-Threading}
+
+An increasing amount of code is being run in a multi-threading environment
+and it is important to ensure that all library packages (such as this one)
+are compatible with multi-threading. A key requirement of multi-threading
+is that there be no global variables, ar at least that all declarations
+and uses of the global variables that do exist have been encapsulated in
+macros that can be redefined to work with multi-threading. In this package,
+the only global variables are \fwlit{\_ex\_curr}, \fwlit{\_ex\_id}, and \fwlit{\_ex\_info}.
+To simplify possible future conversion for use with a multi-threading package,
+all uses of these variables have been expressed in terms of the macros
+\fwlit{\_EX\_CURR}, \fwlit{\_EX\_ID}, \fwlit{EX\_ID}, and \fwlit{EX\_INFO}.
+
+
+\fwsecb{6.5}{Checking}
+
+As mentioned before, exceptions are slippery things that can easily go
+wrong particularly when the exception facility is hacked together, as it
+has here, out of macros and \fwlit{longjmp}s. This section contains a list of
+likely errors and failures and explains how the package copes with them.
+The errors listed here are caught only in the checking version of this
+package. If \fwlit{\_EX\_FAST} then no checking is performed.
+
+\fwemp{Exception has no handler:} This simple case is caught by the \fwlit{\_exrai}
+function which will detect a \fwlit{NULL} pointer in \fwlit{\_EX\_CURR} if there
+are no more exception blocks to search for handlers.
+
+\fwemp{Client pops the context too often:} This case will occur if the
+client calls \fwlit{EX\_POP} and then exits the exception block normally, or
+if the client calls \fwlit{EX\_POP} more than once within the same exception
+block. Both these errors are detected by the \fwlit{\_expop} function which
+tests to ensure that the context it is being asked to pop is the context
+enclosing the \fwlit{EX\_POP} call. (Note: \fwlit{EX\_POP} won't compile unless it
+is called from within an exception block, so there is no chance of a
+context being popped from an external function).
+
+\fwemp{Client exits context without popping it:} This is the single biggest
+headache, as there is no way that this error can be detected when it occurs.
+There is nothing to stop the client from executing a \fwlit{return} or explicit
+\fwlit{longjmp} from within an exception block, and if the client does, the
+exception block will still be registered as the top context on the stack
+of exception contexts, and control will be transferred to it if an exception
+goes off, and if this happens, the program is likely to crash, as the
+stack frame containing the exception block no longer exists.
+
+This problem cannot be solved, but it can be attenuated somewhat using
+the three-pronged approach adopted in this package:
+
+1) Whenever a context is popped, a check is performed to ensure that the
+context being popped is the statically enclosing exception block. If it
+isn't, the program bombs. This check means that the stack will be properly
+aligned following each non-illegal termination of each exception block.
+
+2) Whenever an exception is raised, a check is performed to ensure that
+the address of the context on the top of the context stack is lower than
+that of the start of the stack frame of the function raising the exception.
+If it is, then it must be an erroneously unpopped context.
+
+3) Corruptions of context records are detected by having two magic number
+fields in the record, one at the start of the record and one at the end.
+If a record is corrupted, the corruption is likely to be detected the
+next time the record is manipulated.
+
+The last two checks do a good job of covering the two main cases that can
+arise. When an exception block terminates without its context being popped,
+control will often leave the function. If it does, then the top of the
+run-time stack will be higher (in address value for stacks that grow down)
+than the unpopped context. This is detected by the second test. If, later,
+the stack grows again, it is likely to overwrite the unpopped
+context, including the magic numbers it contains. If this happens, then the
+error will be detected the next time an exception is raised or the stack is
+popped.
+
+Obviously, there are ways in which a computer program might satisfy all
+these tests and still be erroneous, but at least these tests provide some
+sort of safety net.
+
+
+\fwsecb{6.6}{Future Improvements}
+
+This section gives a list of possible future improvements to this package.
+
+* It might be useful to allow the client to specify a block of code that
+is executed after an exception is raised, but before the handlers are scanned.
+This would allow an opportunity for cleaning up.
+
+* Rework the terminology so that it is more consistent.
+
+* Hierarchical exceptions.
+
+That's the end of this package!
+
+
+\bye
+
+
+%*******************************************************************************
+%* END OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+
diff --git a/web/funnelweb/examples/style.h b/web/funnelweb/examples/style.h
new file mode 100644
index 0000000000..f70a906e6c
--- /dev/null
+++ b/web/funnelweb/examples/style.h
@@ -0,0 +1,87 @@
+/******************************************************************************/
+/* Start of style.h */
+/******************************************************************************/
+
+/*
+
+This style.h file contains a compilation of stuff from a number of
+header files that collectively make up my C style environment.
+
+This header file was hacked together solely to simplify the distribution
+of the exceptions package - the originating style.h file is much more
+complicated and #includes other files.
+
+For this reason I make no apology for the poor quality of this style.h
+file and the as.h and as.c files also provided in support of except.fw.
+They exist solely so that the user can compile and use the exception
+package. It is expected that the user will transfer some of these
+definitions to the user's own style file and replace #includes of this
+style file to the user's own style file.
+
+This file is distributed without warranty and was placed in the public
+domain by its author Ross Williams on 29 September 1993.
+
+*/
+/******************************************************************************/
+
+#ifndef DONE_STYLE
+#define DONE_STYLE
+
+
+#include <stdio.h>
+#include <stdlib.h>
+
+typedef unsigned long ulong; /* 32-bit unsigned. */
+typedef unsigned long uwide; /* As wide as the address space. */
+typedef unsigned bool;
+
+typedef char *string;
+
+#define LOCAL static
+#define EXPORT
+#define GLOVAR
+/* STAVAR is for static variables local to a function. */
+#define STAVAR static
+
+#define ULONG(X) ((ulong) (X))
+#define UWIDE(X) ((uwide) (X))
+
+#ifndef FALSE
+#define FALSE (0)
+#endif
+
+#ifndef TRUE
+#define TRUE (1)
+#endif
+
+#ifndef EXIT_FAILURE
+#define EXIT_FAILURE (-1)
+#endif
+
+#ifndef EXIT_SUCCESS
+#define EXIT_SUCCESS (0)
+#endif
+
+#define NON_ZERO 1
+
+/* Set this to TRUE iff your compiler allows ANSI prototypes. */
+#if TRUE
+#define P_(A) A
+#else
+#define P_(A) ()
+#endif
+
+/* An uintegral type wide enough to hold a pointer. */
+typedef long ptrint;
+
+#define EOL '\n'
+
+/* Set to the empty string if your compiler doesn't support "const". */
+#define const
+
+#endif
+
+/******************************************************************************/
+/* End of style.h */
+/******************************************************************************/
+
diff --git a/web/funnelweb/hackman/h_ch0.tex.gz b/web/funnelweb/hackman/h_ch0.tex.gz
new file mode 100644
index 0000000000..047a38c03b
--- /dev/null
+++ b/web/funnelweb/hackman/h_ch0.tex.gz
Binary files differ
diff --git a/web/funnelweb/hackman/h_ch1.tex.gz b/web/funnelweb/hackman/h_ch1.tex.gz
new file mode 100644
index 0000000000..12d53ff493
--- /dev/null
+++ b/web/funnelweb/hackman/h_ch1.tex.gz
Binary files differ
diff --git a/web/funnelweb/hackman/h_ch2.tex.gz b/web/funnelweb/hackman/h_ch2.tex.gz
new file mode 100644
index 0000000000..99ba1e1379
--- /dev/null
+++ b/web/funnelweb/hackman/h_ch2.tex.gz
Binary files differ
diff --git a/web/funnelweb/hackman/h_ch3.tex.gz b/web/funnelweb/hackman/h_ch3.tex.gz
new file mode 100644
index 0000000000..0e03b96ef7
--- /dev/null
+++ b/web/funnelweb/hackman/h_ch3.tex.gz
Binary files differ
diff --git a/web/funnelweb/hackman/h_ch4.tex.gz b/web/funnelweb/hackman/h_ch4.tex.gz
new file mode 100644
index 0000000000..9be39747bb
--- /dev/null
+++ b/web/funnelweb/hackman/h_ch4.tex.gz
Binary files differ
diff --git a/web/funnelweb/hackman/h_cha.tex.gz b/web/funnelweb/hackman/h_cha.tex.gz
new file mode 100644
index 0000000000..5162d4e875
--- /dev/null
+++ b/web/funnelweb/hackman/h_cha.tex.gz
Binary files differ
diff --git a/web/funnelweb/hackman/h_manual.aux.gz b/web/funnelweb/hackman/h_manual.aux.gz
new file mode 100644
index 0000000000..e6954f0aa5
--- /dev/null
+++ b/web/funnelweb/hackman/h_manual.aux.gz
Binary files differ
diff --git a/web/funnelweb/hackman/h_manual.idx.gz b/web/funnelweb/hackman/h_manual.idx.gz
new file mode 100644
index 0000000000..d6af870bfd
--- /dev/null
+++ b/web/funnelweb/hackman/h_manual.idx.gz
Binary files differ
diff --git a/web/funnelweb/hackman/h_manual.log.gz b/web/funnelweb/hackman/h_manual.log.gz
new file mode 100644
index 0000000000..e52472a273
--- /dev/null
+++ b/web/funnelweb/hackman/h_manual.log.gz
Binary files differ
diff --git a/web/funnelweb/hackman/h_manual.sin.gz b/web/funnelweb/hackman/h_manual.sin.gz
new file mode 100644
index 0000000000..75891c9612
--- /dev/null
+++ b/web/funnelweb/hackman/h_manual.sin.gz
Binary files differ
diff --git a/web/funnelweb/hackman/h_manual.tex.gz b/web/funnelweb/hackman/h_manual.tex.gz
new file mode 100644
index 0000000000..705fcebc60
--- /dev/null
+++ b/web/funnelweb/hackman/h_manual.tex.gz
Binary files differ
diff --git a/web/funnelweb/hackman/h_manual.toc.gz b/web/funnelweb/hackman/h_manual.toc.gz
new file mode 100644
index 0000000000..cfd83d7fc4
--- /dev/null
+++ b/web/funnelweb/hackman/h_manual.toc.gz
Binary files differ
diff --git a/web/funnelweb/scripts/0license.txt.gz b/web/funnelweb/scripts/0license.txt.gz
new file mode 100644
index 0000000000..fab10bb917
--- /dev/null
+++ b/web/funnelweb/scripts/0license.txt.gz
Binary files differ
diff --git a/web/funnelweb/scripts/master.fws.gz b/web/funnelweb/scripts/master.fws.gz
new file mode 100644
index 0000000000..c6a4292cb4
--- /dev/null
+++ b/web/funnelweb/scripts/master.fws.gz
Binary files differ
diff --git a/web/funnelweb/scripts/test_gen.fws.gz b/web/funnelweb/scripts/test_gen.fws.gz
new file mode 100644
index 0000000000..78e21d5835
--- /dev/null
+++ b/web/funnelweb/scripts/test_gen.fws.gz
Binary files differ
diff --git a/web/funnelweb/scripts/test_l.fws.gz b/web/funnelweb/scripts/test_l.fws.gz
new file mode 100644
index 0000000000..e41a8d9cd0
--- /dev/null
+++ b/web/funnelweb/scripts/test_l.fws.gz
Binary files differ
diff --git a/web/funnelweb/scripts/test_ld.fws.gz b/web/funnelweb/scripts/test_ld.fws.gz
new file mode 100644
index 0000000000..8126f22f6f
--- /dev/null
+++ b/web/funnelweb/scripts/test_ld.fws.gz
Binary files differ
diff --git a/web/funnelweb/scripts/test_lo.fws.gz b/web/funnelweb/scripts/test_lo.fws.gz
new file mode 100644
index 0000000000..ead8d4e021
--- /dev/null
+++ b/web/funnelweb/scripts/test_lo.fws.gz
Binary files differ
diff --git a/web/funnelweb/scripts/test_lo2.fws.gz b/web/funnelweb/scripts/test_lo2.fws.gz
new file mode 100644
index 0000000000..bfa7bf2e7c
--- /dev/null
+++ b/web/funnelweb/scripts/test_lo2.fws.gz
Binary files differ
diff --git a/web/funnelweb/scripts/test_lot.fws.gz b/web/funnelweb/scripts/test_lot.fws.gz
new file mode 100644
index 0000000000..7933657cba
--- /dev/null
+++ b/web/funnelweb/scripts/test_lot.fws.gz
Binary files differ
diff --git a/web/funnelweb/scripts/test_lt.fws.gz b/web/funnelweb/scripts/test_lt.fws.gz
new file mode 100644
index 0000000000..6d352bf690
--- /dev/null
+++ b/web/funnelweb/scripts/test_lt.fws.gz
Binary files differ
diff --git a/web/funnelweb/sources/analyse.c.gz b/web/funnelweb/sources/analyse.c.gz
new file mode 100644
index 0000000000..7230c962cd
--- /dev/null
+++ b/web/funnelweb/sources/analyse.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/analyse.h.gz b/web/funnelweb/sources/analyse.h.gz
new file mode 100644
index 0000000000..7fd7290599
--- /dev/null
+++ b/web/funnelweb/sources/analyse.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/as.c.gz b/web/funnelweb/sources/as.c.gz
new file mode 100644
index 0000000000..c9eefd08a7
--- /dev/null
+++ b/web/funnelweb/sources/as.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/as.h.gz b/web/funnelweb/sources/as.h.gz
new file mode 100644
index 0000000000..d75bb2b89c
--- /dev/null
+++ b/web/funnelweb/sources/as.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/clock.c.gz b/web/funnelweb/sources/clock.c.gz
new file mode 100644
index 0000000000..83f4599ffa
--- /dev/null
+++ b/web/funnelweb/sources/clock.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/clock.h.gz b/web/funnelweb/sources/clock.h.gz
new file mode 100644
index 0000000000..8c2f479ab6
--- /dev/null
+++ b/web/funnelweb/sources/clock.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/command.c.gz b/web/funnelweb/sources/command.c.gz
new file mode 100644
index 0000000000..08d4814a96
--- /dev/null
+++ b/web/funnelweb/sources/command.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/command.h.gz b/web/funnelweb/sources/command.h.gz
new file mode 100644
index 0000000000..6eea76e3e0
--- /dev/null
+++ b/web/funnelweb/sources/command.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/data.c.gz b/web/funnelweb/sources/data.c.gz
new file mode 100644
index 0000000000..9ea8ae1250
--- /dev/null
+++ b/web/funnelweb/sources/data.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/data.h.gz b/web/funnelweb/sources/data.h.gz
new file mode 100644
index 0000000000..c8eb716fe8
--- /dev/null
+++ b/web/funnelweb/sources/data.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/dump.c.gz b/web/funnelweb/sources/dump.c.gz
new file mode 100644
index 0000000000..e62777c74a
--- /dev/null
+++ b/web/funnelweb/sources/dump.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/dump.h.gz b/web/funnelweb/sources/dump.h.gz
new file mode 100644
index 0000000000..cb75ded2bf
--- /dev/null
+++ b/web/funnelweb/sources/dump.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/environ.h.gz b/web/funnelweb/sources/environ.h.gz
new file mode 100644
index 0000000000..286b30732f
--- /dev/null
+++ b/web/funnelweb/sources/environ.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/help.c.gz b/web/funnelweb/sources/help.c.gz
new file mode 100644
index 0000000000..0c03b245e6
--- /dev/null
+++ b/web/funnelweb/sources/help.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/help.h.gz b/web/funnelweb/sources/help.h.gz
new file mode 100644
index 0000000000..2f0788f22b
--- /dev/null
+++ b/web/funnelweb/sources/help.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/help_gnu.c.gz b/web/funnelweb/sources/help_gnu.c.gz
new file mode 100644
index 0000000000..9713503e78
--- /dev/null
+++ b/web/funnelweb/sources/help_gnu.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/help_gnu.ctx.gz b/web/funnelweb/sources/help_gnu.ctx.gz
new file mode 100644
index 0000000000..2f7c08d5b3
--- /dev/null
+++ b/web/funnelweb/sources/help_gnu.ctx.gz
Binary files differ
diff --git a/web/funnelweb/sources/help_gnu.h.gz b/web/funnelweb/sources/help_gnu.h.gz
new file mode 100644
index 0000000000..d2fff495bf
--- /dev/null
+++ b/web/funnelweb/sources/help_gnu.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/help_gnu.txt.gz b/web/funnelweb/sources/help_gnu.txt.gz
new file mode 100644
index 0000000000..a940894c1b
--- /dev/null
+++ b/web/funnelweb/sources/help_gnu.txt.gz
Binary files differ
diff --git a/web/funnelweb/sources/list.c.gz b/web/funnelweb/sources/list.c.gz
new file mode 100644
index 0000000000..8c04d61fb9
--- /dev/null
+++ b/web/funnelweb/sources/list.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/list.h.gz b/web/funnelweb/sources/list.h.gz
new file mode 100644
index 0000000000..e10c92a6d0
--- /dev/null
+++ b/web/funnelweb/sources/list.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/lister.c.gz b/web/funnelweb/sources/lister.c.gz
new file mode 100644
index 0000000000..e9614920f0
--- /dev/null
+++ b/web/funnelweb/sources/lister.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/lister.h.gz b/web/funnelweb/sources/lister.h.gz
new file mode 100644
index 0000000000..025d1f7e7d
--- /dev/null
+++ b/web/funnelweb/sources/lister.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/machin.c.gz b/web/funnelweb/sources/machin.c.gz
new file mode 100644
index 0000000000..9f399180a4
--- /dev/null
+++ b/web/funnelweb/sources/machin.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/machin.h.gz b/web/funnelweb/sources/machin.h.gz
new file mode 100644
index 0000000000..0644c26bf2
--- /dev/null
+++ b/web/funnelweb/sources/machin.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/main.c.gz b/web/funnelweb/sources/main.c.gz
new file mode 100644
index 0000000000..69f3fff3af
--- /dev/null
+++ b/web/funnelweb/sources/main.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/mapper.c.gz b/web/funnelweb/sources/mapper.c.gz
new file mode 100644
index 0000000000..3279adeccf
--- /dev/null
+++ b/web/funnelweb/sources/mapper.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/mapper.h.gz b/web/funnelweb/sources/mapper.h.gz
new file mode 100644
index 0000000000..afbd8f8c36
--- /dev/null
+++ b/web/funnelweb/sources/mapper.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/memory.c.gz b/web/funnelweb/sources/memory.c.gz
new file mode 100644
index 0000000000..13269ac508
--- /dev/null
+++ b/web/funnelweb/sources/memory.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/memory.h.gz b/web/funnelweb/sources/memory.h.gz
new file mode 100644
index 0000000000..39cb035ba7
--- /dev/null
+++ b/web/funnelweb/sources/memory.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/misc.c.gz b/web/funnelweb/sources/misc.c.gz
new file mode 100644
index 0000000000..e6174c4858
--- /dev/null
+++ b/web/funnelweb/sources/misc.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/misc.h.gz b/web/funnelweb/sources/misc.h.gz
new file mode 100644
index 0000000000..7f9a99db3b
--- /dev/null
+++ b/web/funnelweb/sources/misc.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/option.c.gz b/web/funnelweb/sources/option.c.gz
new file mode 100644
index 0000000000..c0266949a8
--- /dev/null
+++ b/web/funnelweb/sources/option.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/option.h.gz b/web/funnelweb/sources/option.h.gz
new file mode 100644
index 0000000000..b13deadd69
--- /dev/null
+++ b/web/funnelweb/sources/option.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/parser.c.gz b/web/funnelweb/sources/parser.c.gz
new file mode 100644
index 0000000000..0cf477ccb4
--- /dev/null
+++ b/web/funnelweb/sources/parser.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/parser.h.gz b/web/funnelweb/sources/parser.h.gz
new file mode 100644
index 0000000000..2f21d48401
--- /dev/null
+++ b/web/funnelweb/sources/parser.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/scanner.c.gz b/web/funnelweb/sources/scanner.c.gz
new file mode 100644
index 0000000000..02b06e5c16
--- /dev/null
+++ b/web/funnelweb/sources/scanner.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/scanner.h.gz b/web/funnelweb/sources/scanner.h.gz
new file mode 100644
index 0000000000..1c5ebfcfae
--- /dev/null
+++ b/web/funnelweb/sources/scanner.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/section.c.gz b/web/funnelweb/sources/section.c.gz
new file mode 100644
index 0000000000..7f13c82709
--- /dev/null
+++ b/web/funnelweb/sources/section.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/section.h.gz b/web/funnelweb/sources/section.h.gz
new file mode 100644
index 0000000000..6a89047207
--- /dev/null
+++ b/web/funnelweb/sources/section.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/style.h.gz b/web/funnelweb/sources/style.h.gz
new file mode 100644
index 0000000000..78b5d17d60
--- /dev/null
+++ b/web/funnelweb/sources/style.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/table.c.gz b/web/funnelweb/sources/table.c.gz
new file mode 100644
index 0000000000..35218ffaf9
--- /dev/null
+++ b/web/funnelweb/sources/table.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/table.h.gz b/web/funnelweb/sources/table.h.gz
new file mode 100644
index 0000000000..f2b2fd79aa
--- /dev/null
+++ b/web/funnelweb/sources/table.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/tangle.c.gz b/web/funnelweb/sources/tangle.c.gz
new file mode 100644
index 0000000000..0de5d23858
--- /dev/null
+++ b/web/funnelweb/sources/tangle.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/tangle.h.gz b/web/funnelweb/sources/tangle.h.gz
new file mode 100644
index 0000000000..d60b08920f
--- /dev/null
+++ b/web/funnelweb/sources/tangle.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/texhead.c.gz b/web/funnelweb/sources/texhead.c.gz
new file mode 100644
index 0000000000..87f209721b
--- /dev/null
+++ b/web/funnelweb/sources/texhead.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/texhead.ctx.gz b/web/funnelweb/sources/texhead.ctx.gz
new file mode 100644
index 0000000000..7c071e2a80
--- /dev/null
+++ b/web/funnelweb/sources/texhead.ctx.gz
Binary files differ
diff --git a/web/funnelweb/sources/texhead.h.gz b/web/funnelweb/sources/texhead.h.gz
new file mode 100644
index 0000000000..bf623683a5
--- /dev/null
+++ b/web/funnelweb/sources/texhead.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/texhead.tex.gz b/web/funnelweb/sources/texhead.tex.gz
new file mode 100644
index 0000000000..11e2734983
--- /dev/null
+++ b/web/funnelweb/sources/texhead.tex.gz
Binary files differ
diff --git a/web/funnelweb/sources/weave.c.gz b/web/funnelweb/sources/weave.c.gz
new file mode 100644
index 0000000000..c4ffe2b601
--- /dev/null
+++ b/web/funnelweb/sources/weave.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/weave.h.gz b/web/funnelweb/sources/weave.h.gz
new file mode 100644
index 0000000000..efe26132df
--- /dev/null
+++ b/web/funnelweb/sources/weave.h.gz
Binary files differ
diff --git a/web/funnelweb/sources/writfile.c.gz b/web/funnelweb/sources/writfile.c.gz
new file mode 100644
index 0000000000..f1375475c2
--- /dev/null
+++ b/web/funnelweb/sources/writfile.c.gz
Binary files differ
diff --git a/web/funnelweb/sources/writfile.h.gz b/web/funnelweb/sources/writfile.h.gz
new file mode 100644
index 0000000000..449a5b8fbd
--- /dev/null
+++ b/web/funnelweb/sources/writfile.h.gz
Binary files differ
diff --git a/web/funnelweb/tests/0license.txt.gz b/web/funnelweb/tests/0license.txt.gz
new file mode 100644
index 0000000000..2e4757373e
--- /dev/null
+++ b/web/funnelweb/tests/0license.txt.gz
Binary files differ
diff --git a/web/funnelweb/tests/an01.fw.gz b/web/funnelweb/tests/an01.fw.gz
new file mode 100644
index 0000000000..377b3b1bdc
--- /dev/null
+++ b/web/funnelweb/tests/an01.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/an02.fw.gz b/web/funnelweb/tests/an02.fw.gz
new file mode 100644
index 0000000000..a8bd5601a5
--- /dev/null
+++ b/web/funnelweb/tests/an02.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/an03.fw.gz b/web/funnelweb/tests/an03.fw.gz
new file mode 100644
index 0000000000..d60a72c9aa
--- /dev/null
+++ b/web/funnelweb/tests/an03.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/an04.fw.gz b/web/funnelweb/tests/an04.fw.gz
new file mode 100644
index 0000000000..caf69ba99a
--- /dev/null
+++ b/web/funnelweb/tests/an04.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex01.fw.gz b/web/funnelweb/tests/ex01.fw.gz
new file mode 100644
index 0000000000..45c7698e56
--- /dev/null
+++ b/web/funnelweb/tests/ex01.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex02.fw.gz b/web/funnelweb/tests/ex02.fw.gz
new file mode 100644
index 0000000000..04198040a8
--- /dev/null
+++ b/web/funnelweb/tests/ex02.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex03.fw.gz b/web/funnelweb/tests/ex03.fw.gz
new file mode 100644
index 0000000000..bbac3e119d
--- /dev/null
+++ b/web/funnelweb/tests/ex03.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex04.fw.gz b/web/funnelweb/tests/ex04.fw.gz
new file mode 100644
index 0000000000..a9a9c3a40f
--- /dev/null
+++ b/web/funnelweb/tests/ex04.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex05.fw.gz b/web/funnelweb/tests/ex05.fw.gz
new file mode 100644
index 0000000000..5b3166014b
--- /dev/null
+++ b/web/funnelweb/tests/ex05.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex06.fw.gz b/web/funnelweb/tests/ex06.fw.gz
new file mode 100644
index 0000000000..24aaab571e
--- /dev/null
+++ b/web/funnelweb/tests/ex06.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex07.fw.gz b/web/funnelweb/tests/ex07.fw.gz
new file mode 100644
index 0000000000..c76772b32c
--- /dev/null
+++ b/web/funnelweb/tests/ex07.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex08.fw.gz b/web/funnelweb/tests/ex08.fw.gz
new file mode 100644
index 0000000000..36deba18a6
--- /dev/null
+++ b/web/funnelweb/tests/ex08.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex09.fw.gz b/web/funnelweb/tests/ex09.fw.gz
new file mode 100644
index 0000000000..e8cc9252f6
--- /dev/null
+++ b/web/funnelweb/tests/ex09.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex09a.fwi.gz b/web/funnelweb/tests/ex09a.fwi.gz
new file mode 100644
index 0000000000..7e837436da
--- /dev/null
+++ b/web/funnelweb/tests/ex09a.fwi.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex10.fw.gz b/web/funnelweb/tests/ex10.fw.gz
new file mode 100644
index 0000000000..ba6c118ea1
--- /dev/null
+++ b/web/funnelweb/tests/ex10.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex10a.fwi.gz b/web/funnelweb/tests/ex10a.fwi.gz
new file mode 100644
index 0000000000..43775a5bc5
--- /dev/null
+++ b/web/funnelweb/tests/ex10a.fwi.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex11.fw.gz b/web/funnelweb/tests/ex11.fw.gz
new file mode 100644
index 0000000000..1413f0fa30
--- /dev/null
+++ b/web/funnelweb/tests/ex11.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex12.fw.gz b/web/funnelweb/tests/ex12.fw.gz
new file mode 100644
index 0000000000..0e73b8d7eb
--- /dev/null
+++ b/web/funnelweb/tests/ex12.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex13.fw.gz b/web/funnelweb/tests/ex13.fw.gz
new file mode 100644
index 0000000000..77081bf829
--- /dev/null
+++ b/web/funnelweb/tests/ex13.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex14.fw.gz b/web/funnelweb/tests/ex14.fw.gz
new file mode 100644
index 0000000000..3f800f90a4
--- /dev/null
+++ b/web/funnelweb/tests/ex14.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex15.fw.gz b/web/funnelweb/tests/ex15.fw.gz
new file mode 100644
index 0000000000..7f70289cd8
--- /dev/null
+++ b/web/funnelweb/tests/ex15.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/ex16.fw.gz b/web/funnelweb/tests/ex16.fw.gz
new file mode 100644
index 0000000000..ddc1daa8e2
--- /dev/null
+++ b/web/funnelweb/tests/ex16.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/generate.fw.gz b/web/funnelweb/tests/generate.fw.gz
new file mode 100644
index 0000000000..a437597e87
--- /dev/null
+++ b/web/funnelweb/tests/generate.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/hi01.fw.gz b/web/funnelweb/tests/hi01.fw.gz
new file mode 100644
index 0000000000..71a75d0d94
--- /dev/null
+++ b/web/funnelweb/tests/hi01.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/hi02.fw.gz b/web/funnelweb/tests/hi02.fw.gz
new file mode 100644
index 0000000000..78ada95145
--- /dev/null
+++ b/web/funnelweb/tests/hi02.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/hi03.fw.gz b/web/funnelweb/tests/hi03.fw.gz
new file mode 100644
index 0000000000..965eb61d88
--- /dev/null
+++ b/web/funnelweb/tests/hi03.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/hi04.fw.gz b/web/funnelweb/tests/hi04.fw.gz
new file mode 100644
index 0000000000..5cb756deb9
--- /dev/null
+++ b/web/funnelweb/tests/hi04.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/hi05.fw.gz b/web/funnelweb/tests/hi05.fw.gz
new file mode 100644
index 0000000000..36a657ded1
--- /dev/null
+++ b/web/funnelweb/tests/hi05.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/hi06.fw.gz b/web/funnelweb/tests/hi06.fw.gz
new file mode 100644
index 0000000000..24f57f239f
--- /dev/null
+++ b/web/funnelweb/tests/hi06.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/hi07.fw.gz b/web/funnelweb/tests/hi07.fw.gz
new file mode 100644
index 0000000000..ad73ba6bf8
--- /dev/null
+++ b/web/funnelweb/tests/hi07.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/hi08.fw.gz b/web/funnelweb/tests/hi08.fw.gz
new file mode 100644
index 0000000000..9fe40cf29e
--- /dev/null
+++ b/web/funnelweb/tests/hi08.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/hi09.fw.gz b/web/funnelweb/tests/hi09.fw.gz
new file mode 100644
index 0000000000..48dbd9f4ec
--- /dev/null
+++ b/web/funnelweb/tests/hi09.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/hi10.fw.gz b/web/funnelweb/tests/hi10.fw.gz
new file mode 100644
index 0000000000..0a0519c957
--- /dev/null
+++ b/web/funnelweb/tests/hi10.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/pr01.fw.gz b/web/funnelweb/tests/pr01.fw.gz
new file mode 100644
index 0000000000..6a1f9ddb29
--- /dev/null
+++ b/web/funnelweb/tests/pr01.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/pr02.fw.gz b/web/funnelweb/tests/pr02.fw.gz
new file mode 100644
index 0000000000..5a9d5c6a6f
--- /dev/null
+++ b/web/funnelweb/tests/pr02.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/pr03.fw.gz b/web/funnelweb/tests/pr03.fw.gz
new file mode 100644
index 0000000000..5f59a772fd
--- /dev/null
+++ b/web/funnelweb/tests/pr03.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/pr04.fw.gz b/web/funnelweb/tests/pr04.fw.gz
new file mode 100644
index 0000000000..b3264951ab
--- /dev/null
+++ b/web/funnelweb/tests/pr04.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/pr05.fw.gz b/web/funnelweb/tests/pr05.fw.gz
new file mode 100644
index 0000000000..dbeae52b8c
--- /dev/null
+++ b/web/funnelweb/tests/pr05.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/pr06.fw.gz b/web/funnelweb/tests/pr06.fw.gz
new file mode 100644
index 0000000000..7b29079528
--- /dev/null
+++ b/web/funnelweb/tests/pr06.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/pr07.fw.gz b/web/funnelweb/tests/pr07.fw.gz
new file mode 100644
index 0000000000..db9455eb5c
--- /dev/null
+++ b/web/funnelweb/tests/pr07.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/pr08.fw.gz b/web/funnelweb/tests/pr08.fw.gz
new file mode 100644
index 0000000000..54324a6534
--- /dev/null
+++ b/web/funnelweb/tests/pr08.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/pr09.fw.gz b/web/funnelweb/tests/pr09.fw.gz
new file mode 100644
index 0000000000..4284d138ce
--- /dev/null
+++ b/web/funnelweb/tests/pr09.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/pr10.fw.gz b/web/funnelweb/tests/pr10.fw.gz
new file mode 100644
index 0000000000..6e900ef9a3
--- /dev/null
+++ b/web/funnelweb/tests/pr10.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc01_note.fw.gz b/web/funnelweb/tests/sc01_note.fw.gz
new file mode 100644
index 0000000000..3a25383ec3
--- /dev/null
+++ b/web/funnelweb/tests/sc01_note.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc02.fw.gz b/web/funnelweb/tests/sc02.fw.gz
new file mode 100644
index 0000000000..88db2caaf9
--- /dev/null
+++ b/web/funnelweb/tests/sc02.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc03.fw.gz b/web/funnelweb/tests/sc03.fw.gz
new file mode 100644
index 0000000000..47f3e72484
--- /dev/null
+++ b/web/funnelweb/tests/sc03.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc04.fw.gz b/web/funnelweb/tests/sc04.fw.gz
new file mode 100644
index 0000000000..938e55d009
--- /dev/null
+++ b/web/funnelweb/tests/sc04.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc05.fw.gz b/web/funnelweb/tests/sc05.fw.gz
new file mode 100644
index 0000000000..bc541cc147
--- /dev/null
+++ b/web/funnelweb/tests/sc05.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc06.fw.gz b/web/funnelweb/tests/sc06.fw.gz
new file mode 100644
index 0000000000..adfb8668cb
--- /dev/null
+++ b/web/funnelweb/tests/sc06.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc07.fw.gz b/web/funnelweb/tests/sc07.fw.gz
new file mode 100644
index 0000000000..d99153ca6a
--- /dev/null
+++ b/web/funnelweb/tests/sc07.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc08.fw.gz b/web/funnelweb/tests/sc08.fw.gz
new file mode 100644
index 0000000000..136fce7eba
--- /dev/null
+++ b/web/funnelweb/tests/sc08.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc09.fw.gz b/web/funnelweb/tests/sc09.fw.gz
new file mode 100644
index 0000000000..fa96b25a10
--- /dev/null
+++ b/web/funnelweb/tests/sc09.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc10.fw.gz b/web/funnelweb/tests/sc10.fw.gz
new file mode 100644
index 0000000000..ba682eb4bf
--- /dev/null
+++ b/web/funnelweb/tests/sc10.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc11.fw.gz b/web/funnelweb/tests/sc11.fw.gz
new file mode 100644
index 0000000000..3a0510d413
--- /dev/null
+++ b/web/funnelweb/tests/sc11.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc12.fw.gz b/web/funnelweb/tests/sc12.fw.gz
new file mode 100644
index 0000000000..1f824b77a1
--- /dev/null
+++ b/web/funnelweb/tests/sc12.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc13.fw.gz b/web/funnelweb/tests/sc13.fw.gz
new file mode 100644
index 0000000000..31f03816ad
--- /dev/null
+++ b/web/funnelweb/tests/sc13.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc13a.fwi.gz b/web/funnelweb/tests/sc13a.fwi.gz
new file mode 100644
index 0000000000..ecb2d48983
--- /dev/null
+++ b/web/funnelweb/tests/sc13a.fwi.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc13b.fwi.gz b/web/funnelweb/tests/sc13b.fwi.gz
new file mode 100644
index 0000000000..02fc793704
--- /dev/null
+++ b/web/funnelweb/tests/sc13b.fwi.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc13c.fwi.gz b/web/funnelweb/tests/sc13c.fwi.gz
new file mode 100644
index 0000000000..f52cbc3c96
--- /dev/null
+++ b/web/funnelweb/tests/sc13c.fwi.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc13d.fwi.gz b/web/funnelweb/tests/sc13d.fwi.gz
new file mode 100644
index 0000000000..6196a29e66
--- /dev/null
+++ b/web/funnelweb/tests/sc13d.fwi.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc13e.fwi.gz b/web/funnelweb/tests/sc13e.fwi.gz
new file mode 100644
index 0000000000..c171f17c4e
--- /dev/null
+++ b/web/funnelweb/tests/sc13e.fwi.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc13f.fwi.gz b/web/funnelweb/tests/sc13f.fwi.gz
new file mode 100644
index 0000000000..6b1739c00e
--- /dev/null
+++ b/web/funnelweb/tests/sc13f.fwi.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc14.fw.gz b/web/funnelweb/tests/sc14.fw.gz
new file mode 100644
index 0000000000..743f5116cd
--- /dev/null
+++ b/web/funnelweb/tests/sc14.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc15.fw.gz b/web/funnelweb/tests/sc15.fw.gz
new file mode 100644
index 0000000000..1014a10d25
--- /dev/null
+++ b/web/funnelweb/tests/sc15.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc15a.fwi.gz b/web/funnelweb/tests/sc15a.fwi.gz
new file mode 100644
index 0000000000..612d8b3063
--- /dev/null
+++ b/web/funnelweb/tests/sc15a.fwi.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc16.fw.gz b/web/funnelweb/tests/sc16.fw.gz
new file mode 100644
index 0000000000..8ddfaa1fff
--- /dev/null
+++ b/web/funnelweb/tests/sc16.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc17.fw.gz b/web/funnelweb/tests/sc17.fw.gz
new file mode 100644
index 0000000000..4d5b85005d
--- /dev/null
+++ b/web/funnelweb/tests/sc17.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc18.fw.gz b/web/funnelweb/tests/sc18.fw.gz
new file mode 100644
index 0000000000..aba5f30f98
--- /dev/null
+++ b/web/funnelweb/tests/sc18.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc19.fw.gz b/web/funnelweb/tests/sc19.fw.gz
new file mode 100644
index 0000000000..3b44a1ea0b
--- /dev/null
+++ b/web/funnelweb/tests/sc19.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc20.fw.gz b/web/funnelweb/tests/sc20.fw.gz
new file mode 100644
index 0000000000..8553c5e39b
--- /dev/null
+++ b/web/funnelweb/tests/sc20.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc21.fw.gz b/web/funnelweb/tests/sc21.fw.gz
new file mode 100644
index 0000000000..a64e7f8c41
--- /dev/null
+++ b/web/funnelweb/tests/sc21.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc22.fw.gz b/web/funnelweb/tests/sc22.fw.gz
new file mode 100644
index 0000000000..50955d1651
--- /dev/null
+++ b/web/funnelweb/tests/sc22.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc23.fw.gz b/web/funnelweb/tests/sc23.fw.gz
new file mode 100644
index 0000000000..6b0a31d53c
--- /dev/null
+++ b/web/funnelweb/tests/sc23.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc24.fw.gz b/web/funnelweb/tests/sc24.fw.gz
new file mode 100644
index 0000000000..888d0ed40f
--- /dev/null
+++ b/web/funnelweb/tests/sc24.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc25.fw.gz b/web/funnelweb/tests/sc25.fw.gz
new file mode 100644
index 0000000000..7f9851ee47
--- /dev/null
+++ b/web/funnelweb/tests/sc25.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc26.fw.gz b/web/funnelweb/tests/sc26.fw.gz
new file mode 100644
index 0000000000..c3a39c3d3d
--- /dev/null
+++ b/web/funnelweb/tests/sc26.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc27.fw.gz b/web/funnelweb/tests/sc27.fw.gz
new file mode 100644
index 0000000000..97305abf15
--- /dev/null
+++ b/web/funnelweb/tests/sc27.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc28.fw.gz b/web/funnelweb/tests/sc28.fw.gz
new file mode 100644
index 0000000000..1c1182f2d6
--- /dev/null
+++ b/web/funnelweb/tests/sc28.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/sc29.fw.gz b/web/funnelweb/tests/sc29.fw.gz
new file mode 100644
index 0000000000..dfe1f1029d
--- /dev/null
+++ b/web/funnelweb/tests/sc29.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/tg01.fw.gz b/web/funnelweb/tests/tg01.fw.gz
new file mode 100644
index 0000000000..07dec18dfc
--- /dev/null
+++ b/web/funnelweb/tests/tg01.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/tg02.fw.gz b/web/funnelweb/tests/tg02.fw.gz
new file mode 100644
index 0000000000..96160f1cc2
--- /dev/null
+++ b/web/funnelweb/tests/tg02.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/tg03.fw.gz b/web/funnelweb/tests/tg03.fw.gz
new file mode 100644
index 0000000000..6fdad624b8
--- /dev/null
+++ b/web/funnelweb/tests/tg03.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/tg04.fw.gz b/web/funnelweb/tests/tg04.fw.gz
new file mode 100644
index 0000000000..5160d99541
--- /dev/null
+++ b/web/funnelweb/tests/tg04.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/tg05.fw.gz b/web/funnelweb/tests/tg05.fw.gz
new file mode 100644
index 0000000000..f79650c24b
--- /dev/null
+++ b/web/funnelweb/tests/tg05.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/tg06.fw.gz b/web/funnelweb/tests/tg06.fw.gz
new file mode 100644
index 0000000000..26c37ffa08
--- /dev/null
+++ b/web/funnelweb/tests/tg06.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/tg07.fw.gz b/web/funnelweb/tests/tg07.fw.gz
new file mode 100644
index 0000000000..ee2b949229
--- /dev/null
+++ b/web/funnelweb/tests/tg07.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/tg08.fw.gz b/web/funnelweb/tests/tg08.fw.gz
new file mode 100644
index 0000000000..457356d95d
--- /dev/null
+++ b/web/funnelweb/tests/tg08.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/tg08a.fwi.gz b/web/funnelweb/tests/tg08a.fwi.gz
new file mode 100644
index 0000000000..fbffaa1976
--- /dev/null
+++ b/web/funnelweb/tests/tg08a.fwi.gz
Binary files differ
diff --git a/web/funnelweb/tests/tg09.fw.gz b/web/funnelweb/tests/tg09.fw.gz
new file mode 100644
index 0000000000..82c0063263
--- /dev/null
+++ b/web/funnelweb/tests/tg09.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/wv01.fw.gz b/web/funnelweb/tests/wv01.fw.gz
new file mode 100644
index 0000000000..3c034e111e
--- /dev/null
+++ b/web/funnelweb/tests/wv01.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/wv02.fw.gz b/web/funnelweb/tests/wv02.fw.gz
new file mode 100644
index 0000000000..9cc509fa7e
--- /dev/null
+++ b/web/funnelweb/tests/wv02.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/wv03.fw.gz b/web/funnelweb/tests/wv03.fw.gz
new file mode 100644
index 0000000000..101acf4c64
--- /dev/null
+++ b/web/funnelweb/tests/wv03.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/wv04.fw.gz b/web/funnelweb/tests/wv04.fw.gz
new file mode 100644
index 0000000000..3e5d728af3
--- /dev/null
+++ b/web/funnelweb/tests/wv04.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/wv05.fw.gz b/web/funnelweb/tests/wv05.fw.gz
new file mode 100644
index 0000000000..184a3cb8ae
--- /dev/null
+++ b/web/funnelweb/tests/wv05.fw.gz
Binary files differ
diff --git a/web/funnelweb/tests/wv06.fw.gz b/web/funnelweb/tests/wv06.fw.gz
new file mode 100644
index 0000000000..4225180587
--- /dev/null
+++ b/web/funnelweb/tests/wv06.fw.gz
Binary files differ
diff --git a/web/funnelweb/userman/u_ch0.tex.gz b/web/funnelweb/userman/u_ch0.tex.gz
new file mode 100644
index 0000000000..ea52afda5b
--- /dev/null
+++ b/web/funnelweb/userman/u_ch0.tex.gz
Binary files differ
diff --git a/web/funnelweb/userman/u_ch1.tex.gz b/web/funnelweb/userman/u_ch1.tex.gz
new file mode 100644
index 0000000000..23434521f2
--- /dev/null
+++ b/web/funnelweb/userman/u_ch1.tex.gz
Binary files differ
diff --git a/web/funnelweb/userman/u_ch2.tex.gz b/web/funnelweb/userman/u_ch2.tex.gz
new file mode 100644
index 0000000000..f20b2c71a7
--- /dev/null
+++ b/web/funnelweb/userman/u_ch2.tex.gz
Binary files differ
diff --git a/web/funnelweb/userman/u_ch3.tex.gz b/web/funnelweb/userman/u_ch3.tex.gz
new file mode 100644
index 0000000000..5c97f68942
--- /dev/null
+++ b/web/funnelweb/userman/u_ch3.tex.gz
Binary files differ
diff --git a/web/funnelweb/userman/u_ch4.tex.gz b/web/funnelweb/userman/u_ch4.tex.gz
new file mode 100644
index 0000000000..a3a2d417b2
--- /dev/null
+++ b/web/funnelweb/userman/u_ch4.tex.gz
Binary files differ
diff --git a/web/funnelweb/userman/u_ch5.tex.gz b/web/funnelweb/userman/u_ch5.tex.gz
new file mode 100644
index 0000000000..4619384e11
--- /dev/null
+++ b/web/funnelweb/userman/u_ch5.tex.gz
Binary files differ
diff --git a/web/funnelweb/userman/u_cha.tex.gz b/web/funnelweb/userman/u_cha.tex.gz
new file mode 100644
index 0000000000..25c2d8bd93
--- /dev/null
+++ b/web/funnelweb/userman/u_cha.tex.gz
Binary files differ
diff --git a/web/funnelweb/userman/u_manual.aux.gz b/web/funnelweb/userman/u_manual.aux.gz
new file mode 100644
index 0000000000..f360fbf6af
--- /dev/null
+++ b/web/funnelweb/userman/u_manual.aux.gz
Binary files differ
diff --git a/web/funnelweb/userman/u_manual.idx.gz b/web/funnelweb/userman/u_manual.idx.gz
new file mode 100644
index 0000000000..0d6f71ba31
--- /dev/null
+++ b/web/funnelweb/userman/u_manual.idx.gz
Binary files differ
diff --git a/web/funnelweb/userman/u_manual.log.gz b/web/funnelweb/userman/u_manual.log.gz
new file mode 100644
index 0000000000..b703ac1877
--- /dev/null
+++ b/web/funnelweb/userman/u_manual.log.gz
Binary files differ
diff --git a/web/funnelweb/userman/u_manual.sin.gz b/web/funnelweb/userman/u_manual.sin.gz
new file mode 100644
index 0000000000..d5851fd9f0
--- /dev/null
+++ b/web/funnelweb/userman/u_manual.sin.gz
Binary files differ
diff --git a/web/funnelweb/userman/u_manual.tex.gz b/web/funnelweb/userman/u_manual.tex.gz
new file mode 100644
index 0000000000..7f97950dea
--- /dev/null
+++ b/web/funnelweb/userman/u_manual.tex.gz
Binary files differ
diff --git a/web/funnelweb/userman/u_manual.toc.gz b/web/funnelweb/userman/u_manual.toc.gz
new file mode 100644
index 0000000000..5f7bf88b1a
--- /dev/null
+++ b/web/funnelweb/userman/u_manual.toc.gz
Binary files differ