1 Medley for the Novice, Release 2.0 1 Medley for the Novice, Release 2.0 13. WHAT ARE MENUS? 1 13. WHAT ARE MENUS? 1 "13"13. WHAT ARE MENUS? 6 While Medley provides a number of menus of its own (see Chapter 3), this section addresses the menus you wish to create. You will learn how to create a menu, display a menu, and define functions that make your menu useful. Menus are instances of records (see Chapter 24). There are 27 fields that determine the composition of every menu. Because Medley provides default values for most of these descriptive fields, you need to familiarize yourself with only a few that we describe in this section. Two of these fields, the TITLE of your menu, and the ITEMS you wish it to contain, can be typed into the executive window as shown below: `C???>` 0;>w}>w?}>}w> };>}>}>w?}7???0000000000000000π~cgϟ?~036`cl `͌0|!3`cl `͌1@ba|c  |m0x`݆`c `m0"`6݆`cl `=1Ec6݆ `cl1`=18 cɆ ~>߱~M00000`000?>q?c~0c 6 6cy c`0c6 0cy c`0c?6>cm |0c? cm c`0c 6cg c`0c  ٰ6cg c`0c?>c c~000003~01v<ll`l >x01v ll` 01vll`01&`ٌ|||0 0`0`0007>g<ϙ 00̓11l`fl10́1l`pl0m1l>?<~@g oo}{o{o}|<7o?oo}`7?=~n ?D$$$$ O'H @$ FH@@ H$ %O@ H' $H@ H$ $H@C"H$ $P @$ D0O@ @O?<H @DBH@@ HDO@ HDH@ OH@C H @BO@<?<>HDBA HD@ HD< OH HHBA<> Figure 13-2. Simple MenuDisplayed with ADDMENU Getting Menus(MENUS NIL Menus NIL ("13") 2 SUBNAME MAKING% IT% USEFUL SUBTEXT making% it% useful) to Do Stuff 1 One way to make a menu do things is to specify more about the menu items. Instead of items simply being the strings or atoms that will appear in the menu, items can be lists, each list with three elements (see Figure 13-3). The first element of each list is what will appear in the menu; the second expression is what is evaluated, and the results of the evaluation returned, when the item is selected; and the third expression is the expression that should be printed in the Prompt window when a mouse button is held down while the mouse is pointing to that menu item. This third item should be thought of as help text for the user. If the third element of the list is NIL, the system responds with Will select this item when you release the button. S3UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUU` UUUU`|` 0; UU}}UU`}<} UU|]ۿ}wUU`}}; UU}}UU`}]ۿ} UU|<}7UU` UUUU` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU``<v8lc q UU`fcv8lf`yUU`` pc0=l``y UUc@ n76yߍggǟ<<UU`` c3o16c6l͌lllllcf`f1 UU` c3o16c6l͌llllncp`p1UU`` ccmxc6o lgc<`<1 UU` cxc>mc~y>q UU`fl` f 1̓1cc`ccyUU``fl` f 1́cc`ccy UU`ll`?f ?mcc|xccmUU``ϛl`1| x1mcc`>~c>cUU``` UU``UU``0 UU`UU`` UU`~?Ag~7߀lUU``6ـc6 `61l` UU`c㇆ `6l`UU``c>` ፍ0 UU`ǀc ` 񍍶0UU``6c6 ` 10 UU`6ـc6f ` 10UU``a?7 w0 UU``UU`` ` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`~ϙUU`` ``l UU` `x`lUU``|0al UU``0aoUU```x`l UU```lUU``~` UU` UU``  UU`UU`` UU`UU``7ϛ | 7~| UU`fl` f 1̓1ͱUU``fl` f 1́ͱ UU`ll`?f ?mͰUU``ϛl`1| x1m UU` <`1f 1=UU`` <`1f 1=1 UU` `1f 11|UU``` UU``UU``0 UU`UU`` UU`~?87>q7~|0UU``6ٰ08l6cyc1̓1ͱ UU`00=ffcyc1́ͱUU``>0=fgcmc?mͰ  UU`ǰ07lbFcmc1m UU``607lccgc1=  UU`6ٰ07lacgc1=1 UU``?2g>ca11|  UU`UU`` UU`0UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`yϟ3UU`` ̓ٶ6` UU` ٶ7UU``yٶ UU`=6UU`` 60` UU`̓66`UU``3 UU` UU``  UU`UU`` UU`UU``7ϛ c~1q!3| UU`fl` c` l1yq61fUU``fl` c` l1yp61f UU`ll` |l1m 1|lUU``ϛl` c` l1mH 1fl UU` <` c` l1gx 1f<UU`` <` c` l1g0 1f< UU` ` c~ߟCc0 s|UU``` UU``UU``0 UU`UU`` UUf8߿0UU`f 1 UUf 1UU`f1  UUf 61 UU`f 1  UUf ٳ1 UU`gٱ߿  UU`UU`` UU`0UU`` UU`UU``~?~ϙ8ϟ UU`6ـc`l0<`UU``c0`l<` UU`c>|l6x`UU``ǀc`o60` UU`6c`l030`UU``6ـc`l030` UU`a?~1φ0`UU`` UU`UU`` UU`UU`` UUcߍaUU`f66l͌0 UUf633l͌0UU`f33oa UUf1#aUU`f61la UUf60laUU`co߀a UU` 0UU`` 0 UU`aUU`` UU```UU``O"(8p` UU`")@ "DUU``"& UU`O"Pǀ*8q UU`cH" P$@*  UU`H"$@2 UU``H"$F"D  UU`OÂ8p UU`` UU```UU`` UU`UU`` UU`~~q߸~c0UU``ccq<`c3 UU` cc{<`cUU`c@ 6cc{6|c  UU` 6ccn6݆`c UU``@ >ccn3݆`c  UU` cccn3݆ `c0 UU`` c~~d߱πɆ ~>?  UU`UU`` UU`0UU`` UU``UU``G<8@p UU`B"D@E0UU``B"DCEP   UU`B"DACp UU`cB"D1@I@J UU`"DPGOLUU``"DPBAH UU`<8PB|qUU``@ UU``UU`` UU`UU`` UU`UU`` UU` UU`c@ UU`UU``@ UU` UU``> UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UUU` UUU`>?<~@g  Uoo}{UU`o{ Uo}|<7UU`o U?oUU`o} U`7?=~n UU` UUU` UUU`? UDUU`$ U$UU`$ U$UU` UUU`  UUU` UUU`O' UH @$ FUU`H@@ H$ % UO@ H' $UU`H@ H$ $ UH@C"H$ $PUU` @$ D0 UO@ UU`@ UUU` UUU`O?< UH @DBUU`H@@ HD UO@ HDUU`H@ O UH@C HUU` @B UO@<UU` UUU` UUU`?<> UHDBAUU` HD@ U HD<UU` O UH HUU`HBA U<>UU` UUU` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU`` UU`UU` UUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` Figure 13-3. Creating a Menu to do Things, then displaying it with the function ADDMENU Now when an item is selected from MY.MENU2, something will happen. When a mouse button is held down, the expression typed as the third element in the item's specification will be printed in the Prompt window. (See Figure 13-4.) `(p>?<~@g oo}{o{o}|<7voww?oætavo}w`7?=~nwwwûy?D$_$$Xǎ7q?q݃qvnnݻv{ݿnv7Wnݻv{ݿnv7ǎq?qvnxO'_H @$ FH@@ H$ %_O@ H' $H@ H$ $_H@C"H$ $P @$ D0_O@ @__p{_߿w߷_?߷߰{_߷7߿w___?<>_HDBA HD@_ HD< O_H HHBA_<>________________ Figure 13-4. Mouse Button Held Down While Mouse Cursor SeIects NEXT.QUESTION When the mouse button is released (i.e., the item is selected) the expression that was typed as the second element of the item's specification will be run. (See Figure 13-5.) `lUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUP?UUUUUUUUUUUUUUP?Ux;;?/UUUUUUUUUUUUUP;o{}U{^~UUUUUUUUUUUUUP;_ ~~0?:Ux;~[UUUUUUUUUUUUUP;~o[U{o{}UUUUUUUUUUUUUP; ;?UUUUUUUUUUUUUUP?U`UUUUUUUUUUUUUP UaOUUUUUUUUUUUUUP"AUd AUUUUUUUUUUUUUP$ AUd AUUUUUUUUUUUUUP$IAUb1AUUUUUUUUUUUUUP!AU`UUUUUUUUUUUUUP U`UUUUUUUUUUUUUP Ud |!UUUUUUUUUUUUUP&" "UeP $ DUUUUUUUUUUUUUP$  x$ $Ud  $ $UUUUUUUUUUUUUP$RPȒ $ Ud2b " UUUUUUUUUUUUUP$|!U`UUUUUUUUUUUUUP U`UUUUUUUUUUUUUP UdUUUUUUUUUUUUUP&"UeP UUUUUUUUUUUUUP$  Ud  UUUUUUUUUUUUUP$RP Ud2"UUUUUUUUUUUUUP$U`UUUUUUUUUUUUUP U`UUUUUUUUUUUUUP UcUUUUUUUUUUUUUP$"@Ud UUUUUUUUUUUUUP# U`" UUUUUUUUUUUUUP  @Ud"@UUUUUUUUUUUUUP#U`UUUUUUUUUUUUUP UUUUUUUUUUUUUUPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPUWUW /8`?}UW~xww :{}7w{}UWU8}U}UW7߻}}߼;}UWUWUWUW "|>D'ȟ8"@UW "@D$D!2@ "@D$D!2@UW>x|D*"@DDA*UW"@DdD!&"@DdD!& @UW"|D'Ȅ8q" @UW UWUWUWUWUWUWUWUWUWUWUWUWUWUWUWUWUWUWUWUWUWUWUWUWUWUWUW Figure 13-5. NEXT-QUESTION Selected WHENHELDFN and WHENSELECTEDFN Fields of a Menu 1 Another way to get a menu to do things is to define functions, and make them the values of the menu's WHENHELDFN and WHENSELECTEDFN fields. As the value of the WHENHELDFN field of a menu, the function you defined will be executed when you press and hold a mouse button inside the menu. As the value of the WHENSELECTEDFN field of a menu, the function you defined will be executed when you choose a menu item. This example has the same functionality as the previous example, where each menu item was entered as a list of three items. As an example, type in these two functions so that they can be executed when the menu is created and displayed: (DEFINEQ (MY.MENU3.WHENHELD(WHENHELD (Function) NIL NIL ("13") 4) (ITEM.SELECTED MENU.FROM BUTTON.PRESSED) (SELECTQ ITEM.SELECTED (QUIT (PROMPTPRINT "CHOOSE THIS TO STOP") (NEXT-QUESTION (PROMPTPRINT "CHOOSE THIS TO BE ASKED THE NEXT QUESTION")) (NEXT-TOPIC (PROMPTPRINT "CHOOSE THIS TO MOVE ON TO THE NEXT SUBJECT")) (SEE-TOPICS (PROMPTPRINT "CHOOSE THIS TO SEE THE TOPICS NOT YET LEARNED")) (ERROR (PROMPTPRINT "NO MATCH FOUND")))) (DEFINEQ (MY.MENU3.WHENSELECTED(WHENSELECTED (Function) NIL NIL ("13") 4) (ITEM.SELECTED MENU.FROM BUTTON.PRESSED) (SELECTQ ITEM.SELECTED (QUIT (PRINT "STOPPED") (NEXT-QUESTION (PRINT "HERE IS THE NEXT QUESTION")) (NEXT-TOPIC (PRINT "HERE IS THE NEXT SUBJECT")) (SEE-TOPICS (PRINT "THE FOLLOWING HAVE NOT BEEN LEARNED . . .")) (ERROR (PROMPTPRINT "NO MATCH FOUND")))) Now, to create the menu, type: (SETQ MY.MENU3 (CREATE MENU TITLE "PLEASE CHOOSE ONE OF THE ITEMS" ITEMS '(QUIT NEXT-QUESTION NEXT-TOPIC SEE-TOPICS) WHENHELDFN (FUNCTION MY.MENU3.WHENHELD) WHENSELECTEDFN (FUNCTION MY.MENU3.WHENSELECTED))) To see your menu work, type (ADDMENU MY.MENU3) Now, due to executing the WHENHELDFN function, holding down any mouse button while pointing to a menu item will display an explanation of the item in the prompt window. The screen will once again look like Figure 13-4 when the mouse button is held when the mouse cursor is pointing to the item NEXT-TOPIC. Now due to executing the WHENSELECTEDFN function, releasing the mouse button to select an item will cause the proper actions for that item to be taken. The screen will once again look like Figure 13-5 when the item NEXT-TOPIC is selected. The crucial thing to note is that the functions you defined for WHENHELDFN and WHENSELECTEDFN are automatically given the following arguments: 1. The item that was slected, ITEM.SELECTED 2. The menu it was selected from, MENU.FROM 3. The mous button that was pressed BUTTON PRESSED These functions, MY.MENU3.WHENHELD and MY.MENU3.WHENSELECTED, were quoted using FUNCTION instead of QUOTE both for program readability and so that the compiler can produce faster code when the program is compiled. It is good style to quote functions in Lisp by using the function FUNCTION instead of QUOTE. Looking at a Menu's Fields 1 INSPECT(INSPECT (Function) NIL NIL ("13") 5) is a function that displays a list of the fields of a menu, and their values. Figure 13-6 shows the various fields of MY.MENU3 when the function (INSPECT MY.MENU3) was called. Notice the values that were assigned by the examples, and all the defaults. ffg?>~; lٰc;@ nc{pg`x{p`c0`0 `0c0 {`@0c0m{`?>L0l9`  "xqG>Ã2DH $E 2DPd *DP⧉ *DPb I&D $O&D0A$A"xp@Á 8@0x<D7n?o?znj08;m|ݝve@@ϵmnݷ㽃~o|n`݃~onݝvoxϽǏ0>DȀ lB!" lB! DP>DÈ lH lH DÈ8ǏDB"DPB"@PB"\PB">DB""DB""8ǂ8>DD@"\ >D"D"8"DÇ | 2D! @@  2D! @@ *D x@ *D @@ &D! @@ &D! @@"8Ç>|@"DÇ88@ 2D!$D B&  2D!$D B& *D8ÇDd!D$HDd@ɓ@Tx#J"\ TDB%J>D LAD&L"D LA Da$H"8 DA 8!Ç @"|q "@!DH "@!DH  x!QD @!R% @!SH @!R$H |q#>>Dp"8'ȟ8"'xpy l" $D!2!"D!H l" $D!2A"D!HDA*"x!> T" dD!&A"@!H T" dD!&!"@!H>Dp8 'Ȅ8q"!@p "D# 2D$@ 2D@ *D  *D  &DD@ &DD@"8C"DpH 2DM" 2DM"  *DJ *DJ &DJ" &DJ""8p㈑ "Dqǀ8À 2D@D$@ " 2D@L$" *D@T!ǀ *D@@T@$@ &D @d$@ &D@D$@ "8qǀ8À> "| 2 2 * *B &" & ">Dqώ>| d$  d$  T' < "T$  >L$  "L$  "Dq>>"D'Dx à 2D!"d!HD!! $E 2D!"d!HD!!2$ *D"T!D!$PEI *D "T!x!$!PI &Da"L!H@!A>!O &Da"L!H@!! 0AA"8!D!@ ! @ >@ | 8q8O|€@ @Q"DLDH"@ @Q"DLDH"@ xP"DaJDQ@ @""DJDHP@@ @"DIDHR @ @"DIDHR |>|8q8O"Dq㏟ 2DH 2DH0@ *DP@ *DP@ &DH@ &DH@"8q>Dq>xD#"|>| d D l$@"@@ d D l @"@@ xx T DP TR @"@"@ L D0 T2 @ "@@ L D0 T2$B "@@>Dq>xD "|ώ|"DǏ8 2D$H"  2D$H"  *DO!  *DH!  &DDH"A  &D$H""8'8"Dq>8q 2D D  2D D "  *D<0 C *D  B &D D  &D D!"8p>8q>DD#"| dH l$@"@ dH l @"@ x TH TR @"@ LH T2 @ "@ LH T2$B "@>DD "|"DÏD  2D!"d  2D!"d  *D"T  *DA"T  &D!"L  &D!"L "8ÂD>>D'>DDq'Ϟ D"@$"D>  2DH(  2DH(  *DLj(  *D"D  &D|  &DHD "8pOD>"DD  2D @"d  2D @"d  *D @"T  *D @"T  &D @"L  &D @"L "8 ϐD >88'Ȁ $!d $!d <!⧊ "! "! "! <8!$>"DD  2DI "H  2DI "P  *DO p  *DH H  &DH"H  &DH"D "8D>xϑ D" D" D "D >D" "D" "x> Figure 13-6. MY.MENU3 Fields(LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "13-" "") STARTINGPAGE# 1) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY HELVETICA OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "13-" "")) (270 15 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (TEXT NIL NIL (54 54 504 690) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "13-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY HELVETICA OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "13-" "")) (54 15 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "13-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY HELVETICA OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "13-" "")) (270 15 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE RECTOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))))),HH.TT-llT,ll,ll8HH2HZZ,ll,HH,HH,HH -T-T,HH,25F PAGEHEADING VERSOHEADF PAGEHEADING RECTOHEADE PAGEHEADINGFOOTINGVE PAGEHEADINGFOOTINGR, CLASSIC CLASSIC TITAN CLASSIC HELVETICAMODERN HELVETICACLASSIC  HELVETICA MODERN  TIMESROMAN  HRULE.GETFNMODERN  "  HRULE.GETFNCLASSIC #   HRULE.GETFNCLASSIC   HRULE.GETFNCLASSIC  IM.CHAP.GETFN HELVETICA HRULE.GETFNMODERN  P BMOBJ.GETFN3CLASSIC  /n  DIM.INDEX.GETFN  HRULE.GETFNCLASSIC  "IM.INDEX.GETFN%IM.INDEX.GETFN1G[ 8  C   E  `  \ P BMOBJ.GETFN3CLASSIC  '  TIM.INDEX.GETFN   HRULE.GETFNCLASSIC 1wL BMOBJ.GETFN3CLASSIC  P "  BMOBJ.GETFN3 TIMESROMAN   ?   BMOBJ.GETFN3CLASSIC       /  HRULE.GETFNCLASSIC f   p&IM.INDEX.GETFN*+OLO* *IM.INDEX.GETFN*51E*   " -#      N 2 " %     HRULE.GETFNCLASSIC %IM.INDEX.GETFNyY`$ BMOBJ.GETFN3CLASSIC  N1z