1 Medley for the Novice, Release 2.0 1 Medley for the Novice, Release 2.0 18. MASTERSCOPE 1 18. MASTERSCOPE 1 "18"18. MASTERSCOPE 6 Masterscope(MASTERSCOPE NIL Masterscope NIL ("18") 1) is a tool that allows you to quickly examine the structure of complex programs. As your programs enlarge, you may forget what variables are global, what functions call other functions, and so forth. Masterscope keeps track of this for you. To use Masterscope, first load MASTERSCOPE.DFASL(MASTERSCOPE.DFASL NIL NIL NIL ("18") 1) and EXPORTS.ALL. Suppose that JVTO is the name of a file that contains many of the functions involved in a complex system and that LINTRANS is the file containing the remaining functions. The first step is to ask Masterscope to analyze these files. These files must be loaded. All Masterscope queries and commands begin with a period followed by a space, as in . ANALYZE FNS ON MSCOPEDEMO The ANALYZE process takes a while, so the system prints a period on the screen for each function it has analyzed. (See Figure 18-1) `šZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќ€џџџу§Зи џppwџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќПџџџнћГп{§іџoЗЛџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќПнЧ§ћЕп{§іџoїЛџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќыЛw§їЖпxіџpїНџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќПїƒѓїЖп{ќџp}џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќПїПяїЗ_{§іџЗ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќПыЛwпїЗŸ{§іџoЗ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќ€нЧСћЗпx іpwћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќџџџџџћџџџџџџџџћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќџџџџџ§џџџџџџџџїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќ у`У~ќмg€|уŽxјљѓїчю9№ 8ѓ`УР lРЦѓŽЭ›6; 8!98ѓ`f Р nЦѓос›6{ D'D€lл6`<ј›g€Цлоy›ц7Я{ Ax@lл6`Р cРЦлv=ѓ6 л 8D |Я>`0Р рРЦЯv ƒ6 л @D@РЦЯc``Р ьРЦЯvЭƒ6 л }8€РЦЧc~~ќ я€|Ч&јјљƒїчь™№   @  @ 8!} D'€ A@ 8 @ @ } €  Figure 18-1. Executive Window After Analyzing Files If you are not quite sure what functions were just analyzed, type the file's COMS variable (see the File Variables section in Chapter 7) into the Executive Window. The names of the functions stored on the file will be a part of the value of this variable. A variety of commands are now possible, all referring to individual functions within the analyzed files. Substantial variation in exact wording is permitted. Some commands are: . SHOW PATHS FROM ANY TO ANY . EDIT WHERE ANY CALLS functionname . EDIT WHERE ANY USES variablename . WHO CALLS WHOM . WHO CALLS functionname . BY WHOM IS functionname CALLED . WHO USES variablename AS FIELD Note that the function is being called to invoke each command. Refer to the IRM for commands not listed here. Figure 18-2 shows the Executive Window after the commands . WHO CALLS GobbleDump and . WHO DOES JVL inScan CALL. `ЅWџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРјџџў?л}€€РяїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРћџџџ§пЛ=їПпoіћ{ПџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРћ§мxџпЛ]їПпoіџ{ПџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРјЛЗп{mїпoї{пџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРћџx7џ?{mїПРяїїпџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРћџ{їўџ{uїПпoїћпџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРћўЛЗ}џ{yїПпoіћпџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРј мxќЛ}ї€п`wПџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРџџџџџџПџџџџџџџџПџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРџџџџџџпџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРРРРРС @РРРРРРРРРР FЦ|р† јЯп€РР FЦЦ1Ц ŒŒcРУ‚чаьЦЦ1Ц €ѓьc1О<РФBqˆьўЦf ™Œ1ГfРРDЌЦЦf љŒ3~РУˆИЦЦ3ц Œc 3`РФ ИЦЦ66 ™Œc3fРЧат Ц|ц7япь№чУ><РР,0РР0РР0РРРР€РСр€р €РС€ €€РТŽ4сЃ‹,4Х‡ 8qр@РТLё`Œž2L&H‘ ˆ€@РТ D‰ђ ˆ"Dсф `€@РТ "D‰ ˆ"D$ €@РТ‘"L‰`ˆ"L$‘ ˆ@РСŽ4№с ˆŸ"4ф>p`€РС €РР€РРРРР`РР FЦ|учч€јo€`€р† РР FЦЦ66 РЬlР1Ц РУ‚уьЦЦ66ЬёУьЯo˜>>1Ц РФBqHьўЦ67Ч€Э˜fo™Гlп3ff РРD„ЌЦЦ66РљљцlпГlи3ff РУˆBИЦЦ66РЭƒflи3lи3f3ц РФD ИЦЦ66 РЭ›flйГlи3f66 РЧауˆ Ц|учя€ЬёѓяlпГ>ц7яРРРРР3РРРРРР€РС€xр>€јрРС€‚D „@ € РТŽ,8qт‡DqaУˆxЧˆ„DАрK,xbУ‹XА" €РТ2D‚ˆˆD ’$H" "DЩL‚2 ё“$L€dШ" €РТ"@x‚†xy‡Ш sтD‰№ˆ" HDˆ" €РТ‘"@ˆ‚@‰D „(‰" H"Dˆ!@€РТ‘"Dˆ’ˆ‰@‰$H"$"H„(Щ"$H"dШ!@€РС"8xcр‡@yУ‚сС‡Ар"љˆXА РС€@€РР€`€@€РРРРРРРРРУ‚уРФBqHРРDФРУˆBРФDРЧауˆРРРРРРРРРРРРРРР Figure 18-2. Sample Masterscope Output SHOW DATA Command and GRAPHER 1 When the library package GRAPHER is loaded (to load this package, type (FILESLOAD GRAPHER)), Masterscope's SHOWPATHS(SHOWPATHS (Command) NIL NIL ("18") 2) command is modified. The command will be changed to generate a tree structure showi ng how the program's functions interact instead of a tabular printout into the Executive window. For example, typing: . SHOW PATHS FROM ProcessEND produced the display shown in Figure 18-3. `ЖЅџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ€џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ€џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ€Сћр/И?счЯƒџџџџџРoАџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ€оћ§яЗп}очЯНџџџџџпчЗПџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ€оѕ§яЗџ}ПkЏНІш{КбтснпџџџџџџџџџџџџџџџџџџџџџџџџЪіюЛv^vVv§ээћКЮмонпџџџџџџџџџџџџџџџџџџџџџџџџОоїUЧўііі§ээ§VоооъПџџџџџџџџџџџџџџџџџџџџџџџџОоїUћ~ўііі§ээ§VоооъПџџџџџџџџџџџџџџџџџџџџџџџџОоїЛЛvўvіі§эЭўюомоїџџџџџџџџџџџџџџџџџџџџџџџџпЛЧŽўŽії>.~юотсїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ    ~СР€ У1СРР ƒ1уРР €>}уиип>~ !€c1Жиилcc !c1ЖЬп˜cc !ƒ1Жݘcc !ƒ`1œХ˜cc Чc1œЧ˜cc {>ˆУ>~ ` ` ` р  ‚œ<CР"€№@@сР~€‡ Р€ ‚’"(B 2€@A @€‘H€`Р€ ‚’"(‚%‡28ир@вѓ‡@ @8И@‘с@Иˆ ‚Šž"(‚&H™*Љ@т2DHР |DФ@!@Фˆ ‚J‘"DƒФ‘*<Љ№@GШ@b @|„†ƒ"@„P ‚Ъ‘"|‚‘&DЉ@D@‚&@@„Рˆ#р„P ‚J‘"D‚™&DЉ@2DHС @DФ @Ф  ƒфHž. ‰Ц"@ё$@ A љ"@$@ $A""$‰$H‰"@&@ УС‰У‡@Х€     ‘< " У4b!,8pсУˆ"  A"L’!2D‰$O" С>D  Dёƒ" A D@ D@ˆ" $A"L‘A D‰$H"0 УС4` 8pсУ‘< €    р€p€  ˆ€ xсЃ‹4‰тУ‹ " ё`Œ„L`ƒ Œ“ > ‰ђ ˆ„D‚ˆ‘  ‰ ˆ„"Dˆ‚ˆ‘ "$‰`ˆ„"Lˆ’ˆ“ №с ˆ„4pbˆ   Р8   8  "€ #‡xАсС"qсУ‰ $H‘ Щ!"ˆ€$J #Œ ѓр"`ф  ˆ "‚$ dH‘ !"ˆ’$I Ѓ‡ €сС8paуˆ€                                џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќ Figure 18-5. Browser Description Example(LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "18-" "") 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 "18-" "")) (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 "18-" "")) (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 "18-" "")) (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 "18-" "")) (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 "18-" "")) (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))))),,llр,HHр ,HHр ,HHр,HHр,HHр-рT-рT,HHр,2рр5рЬрFјј PAGEHEADING VERSOHEADFјј PAGEHEADING RECTOHEADEјј PAGEHEADINGFOOTINGVEјј PAGEHEADINGFOOTINGR, VH(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8) (POSTSCRIPT (GACHA 8))) CLASSIC TITAN CLASSIC HELVETICAMODERN HELVETICACLASSIC  HELVETICA MODERN  TIMESROMAN VH(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8) (POSTSCRIPT (GACHA 8)))  HRULE.GETFNMODERN  "  HRULE.GETFNCLASSIC #   HRULE.GETFNCLASSIC   HRULE.GETFNCLASSIC   IM.CHAP.GETFN HELVETICA  HRULE.GETFNMODERN   *IM.INDEX.GETFNё(IM.INDEX.GETFN  aоyT BMOBJ.GETFN3VH(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8) (POSTSCRIPT (GACHA 8))) 4MЏБ         L:f BMOBJ.GETFN3VH(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8) (POSTSCRIPT (GACHA 8))) '  HRULE.GETFNCLASSIC ' &IM.INDEX.GETFNЫ+$$ BMOBJ.GETFN3VH(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8) (POSTSCRIPT (GACHA 8)))   Фi$$ BMOBJ.GETFN3VH(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8) (POSTSCRIPT (GACHA 8))) L BMOBJ.GETFN3VH(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8) (POSTSCRIPT (GACHA 8))) &ˆ$$ BMOBJ.GETFN3VH(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8) (POSTSCRIPT (GACHA 8))) И BMOBJ.GETFN3VH(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8) (POSTSCRIPT (GACHA 8)))  (ОЗzК