(FILECREATED "23-Jul-86 15:50:25" ("compiled on " {QV}1.2K>LIBRARY>NOTEFILESTATS.;26) "12-Nov-85 14:59:23" recompiled changes: nothing in "INTERLISP-D 11-May-86 ..." dated "11-May-86 15:19:08") (FILECREATED "23-Jul-86 15:50:04" {QV}1.2K>LIBRARY>NOTEFILESTATS.;26 29488 changes to: ( MACROS NFSTAT.HistPlot) (VARS NOTEFILESTATSCOMS) previous date: "22-Jun-86 23:14:21" {QV}1.2K>LIBRARY>NOTEFILESTATS.;24) NFSTAT.AnalyzeRemoteNoteFileA0012 D1 (NAME ERRORSET F 0 FullFileName F 1 LocalFileName) PQ i(4 COPYFILE) NIL () NFSTAT.AnalyzeRemoteNoteFileA0013 D1 (NAME ERRORSET F 0 LocalFileName) Pid h(5 NCP.OpenNoteFile) NIL () NFSTAT.AnalyzeRemoteNoteFileA0014 D1 (NAME ERRORSET F 0 QuietFlg F 1 NoteFileData) P ci(3 NFSTAT.GatherNoteFileData) NIL () NFSTAT.AnalyzeRemoteNoteFileA0015 D1 (NAME ERRORSET) i(2 NCP.CloseNoteFile) NIL () NFSTAT.AnalyzeRemoteNoteFileA0016 D1 (NAME ERRORSET F 0 OutputFile) Pg i(6 OPENFILE) (3 OUTPUT) () NFSTAT.AnalyzeRemoteNoteFile D1 (P 4 ResultOfOper P 3 NoteFileData P 2 NoteFileAttributes P 1 LocalFileName P 0 FullFileName I 4 QuietFlg I 3 Don'tDeleteLocalCopyFlg I 2 OutputFile I 1 LocalHostAndDirectory I 0 NoteFileName) : Ÿhio ` @ ‘ `dH¿Hg ½dM¿Hg ¾dN¿Hg _¿dO¿Hg _¿dO¿Hg _¿dOÌ ¿ZgHg gggA YD³hioHoIo ¿oi ³oHoI ¿oi \d’d¨oI ¿oi ¨oI ¿oi ¨oI ¿oi ¨oB ¿D¯hioBo ¿JKBi B C¤I ¿Dd§io (467Q NCP.PrintMsg 453Q DELFILE 445Q CLOSEF 441Q HPRINT 430Q NCP.PrintMsg 406Q ERROR 375Q NFSTAT.AnalyzeRemoteNoteFileA0016 364Q ERROR 353Q NFSTAT.AnalyzeRemoteNoteFileA0015 342Q ERROR 331Q NFSTAT.AnalyzeRemoteNoteFileA0014 320Q ERROR 302Q NFSTAT.AnalyzeRemoteNoteFileA0013 271Q ERROR 266Q CONCAT 247Q NFSTAT.AnalyzeRemoteNoteFileA0012 236Q NCP.PrintMsg 206Q PACKFILENAME 170Q FILENAMEFIELD 144Q GETFILEINFO 124Q GETFILEINFO 104Q GETFILEINFO 67Q GETFILEINFO 52Q GETFILEINFO 27Q FULLNAME 22Q FLASHW 14Q NCP.PrintMsg 2 NCP.CurrentNoteFile) (201Q BODY 176Q NOTEFILE 173Q EXTENSION 165Q NAME 161Q NAME 141Q SIZE 121Q READDATE 101Q WRITEDATE 64Q CREATIONDATE 47Q AUTHOR 35Q NOTEFILEATTRIBUTESTYPE# 17Q PROMPTWINDOW) ( 464Q "Done." 424Q " ..." 417Q "Writing out results to " 402Q "Trouble opening " 371Q (NFSTAT.AnalyzeRemoteNoteFileA0016) 360Q "Trouble closing " 347Q (NFSTAT.AnalyzeRemoteNoteFileA0015) 336Q "Trouble gathering data for " 325Q (NFSTAT.AnalyzeRemoteNoteFileA0014) 314Q "Trouble opening " 276Q (NFSTAT.AnalyzeRemoteNoteFileA0013) 262Q " to " 255Q "Trouble copying from " 243Q (NFSTAT.AnalyzeRemoteNoteFileA0012) 232Q " ..." 225Q " to " 220Q "Copying " 11Q "Must close current open notefile first!") NFSTAT.GatherNoteFileData D1 (P 1 NoteFileDataRecord P 0 FileName I 0 QuietFlg) ðÑ ```gjd ºdJ¿`gjd »dK¿`hdj ¼dL¿`djÌ¿½dM¿¾dN¿` _¿dO¿` _¿dO¿``hdj _¿dO¿`gjd _¿dO¿`gjd _¿dO ¿`gjd _¿dO¿_¿dO¿djÌ¿Yd@ IÉ@ @¨hio I(354Q NCP.PrintMsg 341Q NFSTAT.ProcessFileBoxHierarchies 327Q NFSTAT.ProcessCards 272Q ARRAY 246Q ARRAY 222Q ARRAY 176Q ARRAY 150Q HASHARRAY 131Q HASHARRAY 70Q ARRAY 51Q ARRAY 30Q ARRAY 2 NCP.CurrentNoteFile) (333Q NOTEFILEDATA 265Q FIXP 262Q NFSTAT.HistSize 241Q FIXP 236Q NFSTAT.HistSize 215Q FIXP 212Q NFSTAT.HistSize 170Q NFSTAT.HistSize 164Q FILEBOXDATATYPE# 145Q NFSTAT.HashArraySize 126Q NFSTAT.HashArraySize 101Q CARDSTATSTYPE# 62Q NFSTAT.HistSize 44Q FIXP 41Q NFSTAT.HistSize 23Q FIXP 20Q NFSTAT.HistSize 14Q ALLCARDSDATATYPE# 10Q NOTEFILEDATATYPE#) ( 351Q "Done.") NFSTAT.ProcessCardsA0001 D1 (P 26Q Link P 25Q Link P 22Q Link P 17Q Link P 10Q NumGlobalLinks P 7 NumFromLinks P 6 NumToLinks P 5 NumParents P 4 SubstanceSize P 3 FromLinks P 2 ToLinks P 1 CardType I 0 Card F 27Q NoteFileDataRecord F 30Q CardNum F 31Q $$1 F 32Q RealCardTotal F 33Q TotalFileBoxes F 34Q QuietFlg F 35Q CardTotal F 36Q $$2) ÀW0kØc0W8³/dld Hjðµ H´H ²hioW0oW: ¿@ @ h@ “ IW.É _É_¿W4kÔc4OOËkÔÌW2ÉW2É@ \ OÉOÉL KjOµ|O]J ^K _Jj_¿_µ‚±‡O_W2ÉMNOO OÉMNOO Igð².W<ÉJjO µ`O"JjO&µlO( ¿W6kÔc6¿J±œ_ dgð¥dgð’¿i�¿h–OkØ_¿O_±ÿ_gð–OkØ_¿O±ÿ^_$ gð–O"kØ_"¿O _ °ˆ_* gð–O(kØ_(¿O&_&±ÿ|dO, W.É ¿W.W.ËkÔ̵Øh(646Q NFSTAT.IncrementHashItem 634Q NCP.LinkLabel 576Q NCP.LinkLabel 545Q NCP.LinkLabel 446Q NCP.LinkLabel 424Q NFSTAT.AddFileBoxDataToHist 351Q NFSTAT.AddCardDataToHist 330Q NFSTAT.AddCardDataToHist 263Q LENGTH 256Q LENGTH 234Q NFSTAT.AddCardSizeDataToHist 212Q NFSTAT.AddCardSizeDataToHist 206Q NFSTAT.ComputeSubstanceSize 124Q NFSTAT.FetchCardTypeData 106Q NCP.GetLinks 101Q NCP.GetLinks 75Q NCP.CardType 70Q NCP.PrintMsg 43Q \FZEROP 22Q REMAINDER 2 BLOCK) (661Q NOTEFILEDATA 654Q NOTEFILEDATA 641Q NOTEFILEDATA 601Q SubBox 550Q FiledCard 520Q GLOBAL 460Q FiledCard 452Q SubBox 365Q FILEBOXDATA 355Q FileBox 335Q CARDTYPEDATA 314Q ALLCARDSDATA 226Q CARDTYPEDATA 217Q CARDTYPEDATA 200Q ALLCARDSDATA 171Q ALLCARDSDATA 156Q CARDSTATS 151Q CARDSTATS 131Q CARDTYPEDATA 117Q NOTEFILEDATA) ( 62Q " out of " 54Q "Processing card number ") NFSTAT.ProcessCardsA0010 D1 (P 21Q EndBox P 20Q MidBox P 17Q i P 15Q HalfBox P 14Q BoxWidth P 13Q Hist P 12Q ModeVal P 11Q StartBox P 10Q LastNonEmptyEndBox P 7 NumSeen P 6 TotalDivBy2 P 2 StatsFromHist I 1 Key I 0 Item) ò@É@É @É`@ÉËHdIÌ¿dnGÃnO€Ñοdhοdhοdn¿€jÑοdhÎ ¿o@É@Éhd£d‘hJËoëjmÿjd7 Mµ‡_¿Lµ*JJdÈýÈÑJËíìοJHI I_kÙoë_¿`kÙj"¿OOó’± OO(µj»OOmÿÔÔ_"¿OOÔ_ ¿Kjó²;O JdÈýÈÑíýóšJO íοO JdÈýÈÑíóšJO íοJJdÈýÈÑKíO íììοKOóžK_¿JO íÎ ¿oJdÈýÈ Ñíó²YKjó²TONô²JOíOíìn@jÑìΰ4NOKÔ_ýó²%JOíOíNíìOkÙíìKíìì΃O"_¿OOÔ_¿OkÔ_¿±þîM½L¼±þ™(324Q BLOCK 21Q NFSTAT.FillInCardStats 2 BLOCK) (660Q STATSFROMHIST 614Q STATSFROMHIST 561Q STATSFROMHIST 542Q STATSFROMHIST 500Q STATSFROMHIST 474Q STATSFROMHIST 461Q STATSFROMHIST 442Q STATSFROMHIST 425Q STATSFROMHIST 405Q STATSFROMHIST 313Q NFSTAT.HistSize 247Q STATSFROMHIST 234Q STATSFROMHIST 230Q STATSFROMHIST 167Q STATSFROMHIST 147Q CARDTYPEDATA 141Q CARDTYPEDATA 47Q CARDSTATS 42Q CARDTYPEDATA 35Q STATSFROMHISTTYPE# 32Q CARDSTATS 25Q CARDTYPEDATA 14Q CARDTYPEDATA 6 CARDTYPEDATA) ( 555Q 0.0 304Q 2.0 175Q 2.0 135Q (144Q 1750Q)) NFSTAT.ProcessCards D1 (P 70Q EndBox P 67Q MidBox P 66Q i P 64Q EndBox P 63Q MidBox P 62Q i P 60Q HalfBox P 57Q BoxWidth P 56Q Hist P 55Q ModeVal P 54Q StartBox P 53Q LastNonEmptyEndBox P 52Q NumSeen P 51Q TotalDivBy2 P 46Q StatsFromHist P 45Q EndBox P 44Q MidBox P 43Q i P 41Q HalfBox P 40Q BoxWidth P 37Q Hist P 36Q ModeVal P 35Q StartBox P 34Q LastNonEmptyEndBox P 33Q NumSeen P 32Q TotalDivBy2 P 27Q StatsFromHist P 26Q HalfBox P 25Q BoxWidth P 24Q Hist P 23Q ModeVal P 22Q StartBox P 21Q LastNonEmptyEndBox P 20Q NumSeen P 17Q TotalDivBy2 P 14Q StatsFromHist P 13Q $$2 P 12Q $$1 P 3 TotalFileBoxes P 2 RealCardTotal P 1 CardTotal P 0 CardNum I 1 QuietFlg I 0 NoteFileDataRecord) B9jg kÙjdd A³hiokoI ¿@É @É_¿g A©hio ¿OÉJÌOÉOÉ OÉ`dJÌ¿dnGÃnO€Ñοdhοdhοdn¿€jÑοdhÎ ¿ oOÉOÉhd£d‘hOËoëjmÿjd7OµŒ_(¿Oµ‚±™OOdÈýÈÑOËíìοO @Ég O`dKÌ¿dnGÃnO€Ñοdhοdhοdn¿€jÑοdhÎ ¿khOÉd£d‘hO.Ëoëjmÿjd7!O2µ‚±N±X_*kÙoë_,¿`kÙj"%¿OFODó’±O(OF(µj¼O$O*mÿÔÔ_J¿O$O,Ô_H¿Ljó²?OHOdÈýÈÑíýó›OOHíοOHOdÈýÈÑíó›OOHíοOOdÈýÈÑLíOHíììοLO&óŸL_&¿OOHíÎ ¿oOdÈýÈ Ñíó²^Ljó²YO Oô²OO"íO$íìn@jÑìΰ7OO LÔ_ ýó²'OO$íO íOíìO*kÙíìLíìì΃OJ_"¿O$O*Ô_$¿OFkÔ_F¿±þáO_¿O_¿±þ_>¿O0µ‚±�O.O.dÈýÈÑO.ËíìοO.O`dKÌ¿dnGÃnO€Ñοdhοdhοdn¿€jÑοdhÎ ¿&khOÉd£d‘hOLËoëjmÿjd70OPµ‚±[±a_@kÙoë_B¿`kÙj"4¿OdObó’±%O>Od(^`ð—N˵j½O:O@mÿÔÔ_h¿O:OBÔ_f¿Mjó²?OfO.dÈýÈÑíýó›O.OfíοOfO.dÈýÈÑíó›O.OfíοO.O.dÈýÈÑMíOfíììοMO<óŸM_<¿O.OfíÎ ¿oO.dÈýÈ Ñíó²^Mjó²YO6O4ô²O.O8íO:íìn@jÑìΰ7O4O6MÔ_6ýó²'O.O:íO6íO4íìO@kÙíìMíìì΃Oh_8¿O:O@Ô_:¿OdkÔ_d¿±þÔO2_2¿O0_0¿±üÃ_\¿ONµ,OLOLdÈýÈÑOLËíìοOL_O_^kÙoë_`¿`kÙj"8¿OlOjó’±1O\Ol(_`ð˜O˵j_¿OXO^mÿÔÔ_p¿OXO`Ô_n¿Ojó²?OnOLdÈýÈÑíýó›OLOníοOnOLdÈýÈÑíó›OLOníοOLOLdÈýÈÑOíOníììοOOZó²O_Z¿OLOníÎ ¿oOLdÈýÈ Ñíó²aOjó²[OTORô²OLOVíOXíìn@jÑìΰ9OROTOÔ_Týó²(OLOXíOTíORíìO^kÙíìOíìì΃Op_V¿OXO^Ô_X¿OlkÔ_l¿±þÈOP_P¿ON_N¿±ý(2370Q BLOCK 1560Q BLOCK 621Q BLOCK 423Q MAPHASH 146Q NFSTAT.FillInCardStats 107Q NCP.PrintMsg 74Q NCP.MapCards 43Q NCP.PrintMsg 11Q STREAMPROP 3 NCP.CurrentNoteFileStream) (2770Q STATSFROMHIST 2721Q STATSFROMHIST 2663Q STATSFROMHIST 2643Q STATSFROMHIST 2574Q STATSFROMHIST 2567Q STATSFROMHIST 2553Q STATSFROMHIST 2533Q STATSFROMHIST 2515Q STATSFROMHIST 2474Q STATSFROMHIST 2424Q FILEBOXHISTENTRY 2415Q FILEBOXHISTENTRYTYPE# 2357Q NFSTAT.HistSize 2314Q STATSFROMHIST 2300Q STATSFROMHIST 2273Q STATSFROMHIST 2145Q STATSFROMHIST 2077Q STATSFROMHIST 2042Q STATSFROMHIST 2022Q STATSFROMHIST 1757Q STATSFROMHIST 1752Q STATSFROMHIST 1736Q STATSFROMHIST 1716Q STATSFROMHIST 1700Q STATSFROMHIST 1657Q STATSFROMHIST 1612Q FILEBOXHISTENTRY 1604Q FILEBOXHISTENTRYTYPE# 1547Q NFSTAT.HistSize 1474Q STATSFROMHIST 1456Q FILEBOXDATA 1372Q STATSFROMHISTTYPE# 1367Q FILEBOXDATA 1344Q STATSFROMHIST 1330Q STATSFROMHIST 1323Q STATSFROMHIST 1171Q STATSFROMHIST 1123Q STATSFROMHIST 1066Q STATSFROMHIST 1046Q STATSFROMHIST 1003Q STATSFROMHIST 776Q STATSFROMHIST 762Q STATSFROMHIST 742Q STATSFROMHIST 724Q STATSFROMHIST 703Q STATSFROMHIST 610Q NFSTAT.HistSize 535Q STATSFROMHIST 517Q FILEBOXDATA 433Q STATSFROMHISTTYPE# 430Q FILEBOXDATA 420Q NFSTAT.ProcessCardsA0010 413Q NOTEFILEDATA 371Q STATSFROMHIST 355Q STATSFROMHIST 350Q STATSFROMHIST 300Q STATSFROMHIST 257Q ALLCARDSDATA 250Q ALLCARDSDATA 163Q STATSFROMHISTTYPE# 160Q CARDSTATS 153Q ALLCARDSDATA 141Q ALLCARDSDATA 132Q ALLCARDSDATA 122Q CARDSTATS 115Q ALLCARDSDATA 71Q NFSTAT.ProcessCardsA0001 61Q NOTEFILEDATA 50Q NOTEFILEDATA 6 NCNEXTIDNUM) ( 2656Q 0.0 2350Q 2.0 2035Q 0.0 1540Q 2.0 1502Q 2.0 1061Q 0.0 601Q 2.0 543Q 2.0 306Q 2.0 243Q (144Q 1750Q) 104Q "Computing statistics from card and filebox histograms ..." 36Q " out of " 31Q "Processing card number ") NFSTAT.ProcessFileBoxHierarchies D1 (P 21Q EndBox P 20Q MidBox P 17Q i P 15Q HalfBox P 14Q BoxWidth P 13Q Hist P 12Q ModeVal P 11Q StartBox P 10Q LastNonEmptyEndBox P 7 NumSeen P 6 TotalDivBy2 P 2 StatsFromHist I 1 QuietFlg I 0 FileBoxDataRecord) ¡A©hio ¿@`@Éj HdIÌ¿dnGÃnO€Ñοdhοdhοdn¿€jÑοdhÎ ¿kh@Éd£d‘hJËoëjmÿjd7 Mµ‹_¿Lµ‚±£JJdÈýÈÑJËíìοJA©hio ¿@`@É j HdIÌ¿dnGÃnO€Ñοdhοdhοdn¿€jÑοdhÎ ¿kh@É d£d‘hJËoëjmÿjd7 Mµ‚±;±D_kÙoë_¿`kÙj"¿OOó’± OO(µj»OOmÿÔÔ_"¿OOÔ_ ¿Kjó²;O JdÈýÈÑíýóšJO íοO JdÈýÈÑíóšJO íοJJdÈýÈÑKíO íììοKOóžK_¿JO íÎ ¿oJdÈýÈ Ñíó²YKjó²TONô²JOíOíìn@jÑìΰ4NOKÔ_ýó²%JOíOíNíìOkÙíìKíìì΃O"_¿OOÔ_¿OkÔ_¿±þîM½L¼±þ_¿Lµ‚±£JJdÈýÈÑJËíìοJ A©hio ¿@`@Éj HdIÌ¿dnGÃnO€Ñοdhοdhοdn¿€jÑοdhÎ ¿kh@Éd£d‘hJËoëjmÿjd7 Mµ‚±;±@_kÙoë_¿`kÙj"¿OOó’± OO(µj»OOmÿÔÔ_"¿OOÔ_ ¿Kjó²;O JdÈýÈÑíýóšJO íοO JdÈýÈÑíóšJO íοJJdÈýÈÑKíO íììοKOóžK_¿JO íÎ ¿oJdÈýÈ Ñíó²YKjó²TONô²JOíOíìn@jÑìΰ4NOKÔ_ýó²%JOíOíNíìOkÙíìKíìì΃O"_¿OOÔ_¿OkÔ_¿±þîM½L¼±üâ_¿Lµ*JJdÈýÈÑJËíìοJHII_kÙoë_¿`kÙj"¿OOó’± OO(µj»OOmÿÔÔ_"¿OOÔ_ ¿Kjó²;O JdÈýÈÑíýóšJO íοO JdÈýÈÑíóšJO íοJJdÈýÈÑKíO íììοKOóžK_¿JO íÎ ¿oJdÈýÈ Ñíó²YKjó²TONô²JOíOíìn@jÑìΰ4NOKÔ_ýó²%JOíOíNíìOkÙíìKíìì΃O"_¿OOÔ_¿OkÔ_¿±þîM½L¼±ý^(2203Q BLOCK 1436Q BLOCK 1247Q NFSTAT.TraverseFileBoxHierarchy 1235Q NCP.GetOrphansFileBox 1221Q NCP.PrintMsg 475Q BLOCK 306Q NFSTAT.TraverseFileBoxHierarchy 274Q NCP.GetToBeFiledFileBox 260Q NCP.PrintMsg 40Q NFSTAT.TraverseFileBoxHierarchy 26Q NCP.GetContentsFileBox 12Q NCP.PrintMsg) (2537Q STATSFROMHIST 2473Q STATSFROMHIST 2440Q STATSFROMHIST 2421Q STATSFROMHIST 2357Q STATSFROMHIST 2353Q STATSFROMHIST 2340Q STATSFROMHIST 2321Q STATSFROMHIST 2304Q STATSFROMHIST 2264Q STATSFROMHIST 2172Q NFSTAT.HistSize 2126Q STATSFROMHIST 2113Q STATSFROMHIST 2107Q STATSFROMHIST 1772Q STATSFROMHIST 1726Q STATSFROMHIST 1673Q STATSFROMHIST 1654Q STATSFROMHIST 1612Q STATSFROMHIST 1606Q STATSFROMHIST 1573Q STATSFROMHIST 1554Q STATSFROMHIST 1537Q STATSFROMHIST 1517Q STATSFROMHIST 1425Q NFSTAT.HistSize 1353Q STATSFROMHIST 1336Q FILEBOXDATA 1241Q FILEBOXDATA 1231Q STATSFROMHISTTYPE# 1226Q FILEBOXDATA 1171Q STATSFROMHIST 1156Q STATSFROMHIST 1152Q STATSFROMHIST 1031Q STATSFROMHIST 765Q STATSFROMHIST 732Q STATSFROMHIST 713Q STATSFROMHIST 651Q STATSFROMHIST 645Q STATSFROMHIST 632Q STATSFROMHIST 613Q STATSFROMHIST 576Q STATSFROMHIST 556Q STATSFROMHIST 464Q NFSTAT.HistSize 412Q STATSFROMHIST 375Q FILEBOXDATA 300Q FILEBOXDATA 270Q STATSFROMHISTTYPE# 265Q FILEBOXDATA 230Q STATSFROMHIST 215Q STATSFROMHIST 211Q STATSFROMHIST 144Q STATSFROMHIST 127Q FILEBOXDATA 32Q FILEBOXDATA 22Q STATSFROMHISTTYPE# 17Q FILEBOXDATA) ( 2434Q 0.0 2163Q 2.0 1667Q 0.0 1416Q 2.0 1361Q 2.0 1216Q "Traversing filebox hierarchy under Orphans FileBox ..." 726Q 0.0 455Q 2.0 420Q 2.0 255Q "Traversing filebox hierarchy under ToBeFiled FileBox ..." 152Q 2.0 7 "Traversing filebox hierarchy under Contents FileBox ...") NFSTAT.AddCardDataToHist D1 (P 2 Index P 1 Val P 0 Index I 4 NumGlobalLinks I 3 NumFromLinks I 2 NumToLinks I 1 NumParents I 0 Hist) Ê`Aó¥`kÙ€A@H(Iµ @Hg *YIËkØÌ`Bó¥`kÙ€B@H(Iµ @Hg *YIËkØÌ`Có¥`kÙ€C@H(Iµ @Hg *YIËkØÌ`Dó¥`kÙ€D@J(Iµ @Jg *YIËkØ[ÌK(266Q NFSTAT.MakeFreshHistRecord 204Q NFSTAT.MakeFreshHistRecord 122Q NFSTAT.MakeFreshHistRecord 40Q NFSTAT.MakeFreshHistRecord) (277Q CARDHISTENTRY 273Q CARDHISTENTRY 263Q CARDHISTENTRY 236Q NFSTAT.HistSize 230Q NFSTAT.HistSize 215Q CARDHISTENTRY 211Q CARDHISTENTRY 201Q CARDHISTENTRY 154Q NFSTAT.HistSize 146Q NFSTAT.HistSize 133Q CARDHISTENTRY 127Q CARDHISTENTRY 117Q CARDHISTENTRY 72Q NFSTAT.HistSize 64Q NFSTAT.HistSize 51Q CARDHISTENTRY 45Q CARDHISTENTRY 35Q CARDHISTENTRY 10Q NFSTAT.HistSize 2 NFSTAT.HistSize) () NFSTAT.AddFileBoxDataToHist D1 (P 2 Index P 1 Val P 0 Index I 2 SubBoxLinks I 1 FiledCardLinks I 0 FileBoxHist) f`Aó¥`kÙ€A@H(Iµ @Hg *YIËkØÌ`Bó¥`kÙ€B@J(Iµ @Jg *YIËkØ[ÌK(122Q NFSTAT.MakeFreshHistRecord 40Q NFSTAT.MakeFreshHistRecord) (133Q FILEBOXHISTENTRY 127Q FILEBOXHISTENTRY 117Q FILEBOXHISTENTRY 72Q NFSTAT.HistSize 64Q NFSTAT.HistSize 51Q FILEBOXHISTENTRY 45Q FILEBOXHISTENTRY 35Q FILEBOXHISTENTRY 10Q NFSTAT.HistSize 2 NFSTAT.HistSize) () NFSTAT.AddCardSizeDataToHist D1 (L (2 Size 1 Hist2 0 Hist1)) 9oBó¦ob¿n'Bó�Bld×X@H@H(kØ*Bn'Õnè×XAHAH(kØ*NIL NIL ( 12Q 326657Q 3 326657Q) NFSTAT.MakeFreshHistRecord D1 (I 0 HistRecordType) 8@dgð²¿`djÌ¿djÌ¿djÌ¿djÌ¿gð´`djÌ¿djÌ¿NIL (52Q FILEBOXHISTENTRYTYPE# 44Q FILEBOXHISTENTRY 13Q CARDHISTENTRYTYPE# 4 CARDHISTENTRY) () NFSTAT.TraverseFileBoxHierarchy D1 (P 3 Child P 0 Children I 2 CurrentDepth I 1 Hist I 0 RootCard) 9@ –@ Xµ ABAB(kØ*kjIµJ»JKABkØ ÔºIY°ë(60Q NFSTAT.TraverseFileBoxHierarchy 16Q NCP.FileBoxChildren 11Q NCP.FileBoxP 5 BLOCK) NIL () NFSTAT.ComputeSubstanceSizeA0001 D1 (NAME ERRORSET P 1 IdentifierAndVersionNum P 0 EndPtr F 2 Stream F 3 Card F 4 NC.ItemIdentifier F 5 RESETY) ]Ro hi ¿R RdS  ¿R Y´1kIó¤R €i´$ITð´SR ð´R ´RH ´RHS c i(126Q NC.CheckForValidSubstance 116Q NC.RobustReadRegion 106Q NC.RobustReadAtom 77Q NC.RobustReadID 60Q NC.RobustReadDate 44Q NC.RobustReadItemIdentifier 37Q SETFILEPTR 32Q NC.GetPtrsFromIndex 21Q GETEOFPTR 14Q OBTAIN.MONITORLOCK 7 NC.FetchMonitor) NIL ( 4 "NFSTAT.ComputeSubstanceSize") NFSTAT.ComputeSubstanceSize D1 (P 3 RESETZ P 2 RESETY P 1 LISPXHIST P 0 Stream I 0 Card F 4 LISPXHIST F 5 RESETVARSLST) (T!Uog ‘h‚g[ K“J(43Q ERROR! 36Q RESETRESTORE 24Q NFSTAT.ComputeSubstanceSizeA0001 2 NCP.CurrentNoteFileStream) (32Q ERROR 21Q INTERNAL) ( 16Q (NFSTAT.ComputeSubstanceSizeA0001)) NFSTAT.IncrementHashItem D1 (L (1 HashArray 0 Item)) @dA3µjkØA (16Q PUTHASH) NIL () NFSTAT.FetchCardTypeData D1 (I 1 CardTypesHashArray I 0 CardType) `@Aµ[@``gjd HdI¿`gjd HdI¿`hdj HdI¿`djÌ¿HdI¿A (135Q PUTHASH 74Q ARRAY 51Q ARRAY 24Q ARRAY) (111Q CARDSTATSTYPE# 66Q NFSTAT.HistSize 44Q FIXP 41Q NFSTAT.HistSize 17Q FIXP 14Q NFSTAT.HistSize 10Q CARDTYPEDATATYPE#) () NFSTAT.FillInCardStats D1 (P 22Q EndBox P 21Q MidBox P 20Q i P 16Q HalfBox P 15Q BoxWidth P 14Q Hist P 13Q ModeVal P 12Q StartBox P 11Q LastNonEmptyEndBox P 10Q NumSeen P 7 TotalDivBy2 P 2 StatsFromHist I 1 CardStats I 0 Hist) bA`AËHdIÌ¿dnGÃnO€Ñοdhοdhοdn¿€jÑοdhÎ ¿!kh@d£d‘hJËoëjmÿjd7Nµ‹_¿Mµ‚±‹JJdÈýÈÑJËíìοJA`AËHdIÌ¿dnGÃnO€Ñοdhοdhοdn¿€jÑοdhÎ ¿!kh@d£d‘hJËoëjmÿjd7Nµ‚±K±T_kÙoë_¿`kÙj"¿O Oó’±OO (\`ð—L˵j»OOmÿÔÔ_$¿OOÔ_"¿Kjó²;O"JdÈýÈÑíýóšJO"íοO"JdÈýÈÑíóšJO"íοJJdÈýÈÑKíO"íììοKOóžK_¿JO"íÎ ¿oJdÈýÈ Ñíó²\Kjó²WOOô²JOíOíìn@jÑìΰ6OOKÔ_ýó²&JOíOíOíìOkÙíìKíìì΃O$_¿OOÔ_¿O kÔ_ ¿±þÞN¾M½±þ%_¿Mµ‚±‹JJdÈýÈÑJËíìοJA`AËHdIÌ¿dnGÃnO€Ñοdhοdhοdn¿€jÑοdhÎ ¿!kh@d£d‘hJËoëjmÿjd7Nµ‚±K±T_kÙoë_¿`kÙj"¿O Oó’±OO (\`ð—L˵j»OOmÿÔÔ_$¿OOÔ_"¿Kjó²;O"JdÈýÈÑíýóšJO"íοO"JdÈýÈÑíóšJO"íοJJdÈýÈÑKíO"íììοKOóžK_¿JO"íÎ ¿oJdÈýÈ Ñíó²\Kjó²WOOô²JOíOíìn@jÑìΰ6OOKÔ_ýó²&JOíOíOíìOkÙíìKíìì΃O$_¿OOÔ_¿O kÔ_ ¿±þÞN¾M½±üÚ_¿Mµ‚±‹JJdÈýÈÑJËíìοJA`AËHdIÌ¿dnGÃnO€Ñοdhοdhοdn¿€jÑοdhÎ ¿!kh@d£d‘hJËoëjmÿjd7Nµ‚±K±P_kÙoë_¿`kÙj"¿O Oó’±OO (\`ð—L˵j»OOmÿÔÔ_$¿OOÔ_"¿Kjó²;O"JdÈýÈÑíýóšJO"íοO"JdÈýÈÑíóšJO"íοJJdÈýÈÑKíO"íììοKOóžK_¿JO"íÎ ¿oJdÈýÈ Ñíó²\Kjó²WOOô²JOíOíìn@jÑìΰ6OOKÔ_ýó²&JOíOíOíìOkÙíìKíìì΃O$_¿OOÔ_¿O kÔ_ ¿±þÞN¾M½±üÚ_¿Mµ*JJdÈýÈÑJËíìοJHII_kÙoë_¿`kÙj"¿O Oó’±OO (\`ð—L˵j»OOmÿÔÔ_$¿OOÔ_"¿Kjó²;O"JdÈýÈÑíýóšJO"íοO"JdÈýÈÑíóšJO"íοJJdÈýÈÑKíO"íììοKOóžK_¿JO"íÎ ¿oJdÈýÈ Ñíó²\Kjó²WOOô²JOíOíìn@jÑìΰ6OOKÔ_ýó²&JOíOíOíìOkÙíìKíìì΃O$_¿OOÔ_¿O kÔ_ ¿±þÞN¾M½±ý>(3064Q BLOCK 2277Q BLOCK 1346Q BLOCK 415Q BLOCK) (3437Q STATSFROMHIST 3372Q STATSFROMHIST 3336Q STATSFROMHIST 3317Q STATSFROMHIST 3255Q STATSFROMHIST 3251Q STATSFROMHIST 3236Q STATSFROMHIST 3217Q STATSFROMHIST 3202Q STATSFROMHIST 3162Q STATSFROMHIST 3116Q CARDHISTENTRY 3110Q CARDHISTENTRYTYPE# 3053Q NFSTAT.HistSize 3007Q STATSFROMHIST 2774Q STATSFROMHIST 2770Q STATSFROMHIST 2652Q STATSFROMHIST 2605Q STATSFROMHIST 2551Q STATSFROMHIST 2532Q STATSFROMHIST 2470Q STATSFROMHIST 2464Q STATSFROMHIST 2451Q STATSFROMHIST 2432Q STATSFROMHIST 2415Q STATSFROMHIST 2375Q STATSFROMHIST 2331Q CARDHISTENTRY 2323Q CARDHISTENTRYTYPE# 2266Q NFSTAT.HistSize 2214Q STATSFROMHIST 2113Q CARDSTATS 2106Q STATSFROMHISTTYPE# 2103Q CARDSTATS 2062Q STATSFROMHIST 2047Q STATSFROMHIST 2043Q STATSFROMHIST 1721Q STATSFROMHIST 1654Q STATSFROMHIST 1620Q STATSFROMHIST 1601Q STATSFROMHIST 1537Q STATSFROMHIST 1533Q STATSFROMHIST 1520Q STATSFROMHIST 1501Q STATSFROMHIST 1464Q STATSFROMHIST 1444Q STATSFROMHIST 1400Q CARDHISTENTRY 1372Q CARDHISTENTRYTYPE# 1335Q NFSTAT.HistSize 1263Q STATSFROMHIST 1162Q CARDSTATS 1155Q STATSFROMHISTTYPE# 1152Q CARDSTATS 1131Q STATSFROMHIST 1116Q STATSFROMHIST 1112Q STATSFROMHIST 770Q STATSFROMHIST 723Q STATSFROMHIST 667Q STATSFROMHIST 650Q STATSFROMHIST 606Q STATSFROMHIST 602Q STATSFROMHIST 567Q STATSFROMHIST 550Q STATSFROMHIST 533Q STATSFROMHIST 513Q STATSFROMHIST 447Q CARDHISTENTRY 441Q CARDHISTENTRYTYPE# 404Q NFSTAT.HistSize 332Q STATSFROMHIST 231Q CARDSTATS 224Q STATSFROMHISTTYPE# 221Q CARDSTATS 200Q STATSFROMHIST 165Q STATSFROMHIST 161Q STATSFROMHIST 114Q STATSFROMHIST 13Q CARDSTATS 6 STATSFROMHISTTYPE# 3 CARDSTATS) ( 3332Q 0.0 3044Q 2.0 2545Q 0.0 2257Q 2.0 2222Q 2.0 1614Q 0.0 1326Q 2.0 1271Q 2.0 663Q 0.0 375Q 2.0 340Q 2.0 122Q 2.0) NFSTAT.AnalyzeSetsOfNoteFiles D1 (P 4 Prefix P 3 FileNames P 2 ArgNum P 0 NumArgs) $eHk"JdIó‘haJkØa¼[L ¿JlÔZ°é(32Q NFSTAT.AnalyzeListOfNoteFiles) NIL () NFSTAT.AnalyzeListOfNoteFiles D1 (P 0 NoteFile I 1 OutputNamePrefix I 0 NoteFiles) @°dHgHA µìh(23Q NFSTAT.AnalyzeRemoteNoteFile 20Q NFSTAT.MakeOutputFileName) (13Q {dsk1}) () NFSTAT.MakeOutputFileName D1 (I 1 Owner I 0 NoteFileName) ,ggghggghgAo@g (51Q PACKFILENAME 45Q CONCAT 42Q FILENAMEFIELD) (37Q NAME 26Q NAME 22Q VERSION 17Q data 14Q EXTENSION 10Q DIRECTORY 5 {dsk2} 2 HOST) ( 33Q "-") NFSTAT.InspectDataFile D1 (P 0 File I 0 FileName) @g Hd›i H ¿ (30Q INSPECT 24Q CLOSEF 20Q HREAD 6 OPENFILE) (3 INPUT) () (PRETTYCOMPRINT NOTEFILESTATSCOMS) (RPAQQ NOTEFILESTATSCOMS ((* * This code computes statistics for a notefile.) (GLOBALVARS NFSTAT.HistSize NFSTAT.HashArraySize) (VARS (NFSTAT.HistSize 100) (NFSTAT.HashArraySize 100)) (RECORDS NOTEFILEATTRIBUTES NOTEFILEDATA ALLCARDSDATA CARDTYPEDATA FILEBOXDATA CARDHISTENTRY FILEBOXHISTENTRY CARDSTATS STATSFROMHIST) (* * Top level functions.) (FNS NFSTAT.AnalyzeRemoteNoteFile NFSTAT.GatherNoteFileData) (* * Helper functions.) (FNS NFSTAT.ProcessCards NFSTAT.ProcessFileBoxHierarchies) (FNS NFSTAT.AddCardDataToHist NFSTAT.AddFileBoxDataToHist NFSTAT.AddCardSizeDataToHist NFSTAT.MakeFreshHistRecord NFSTAT.TraverseFileBoxHierarchy NFSTAT.ComputeSubstanceSize NFSTAT.IncrementHashItem NFSTAT.FetchCardTypeData NFSTAT.FillInCardStats) (MACROS NFSTAT.AddFieldEntryToHist NFSTAT.AnalyzeHist) (* * Miscellaneous accelerators.) (FNS NFSTAT.AnalyzeSetsOfNoteFiles NFSTAT.AnalyzeListOfNoteFiles NFSTAT.MakeOutputFileName NFSTAT.InspectDataFile) (* * Functions for plotting.) (MACROS NFSTAT.HistPlot) (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) (NLAML) (LAMA NFSTAT.AnalyzeSetsOfNoteFiles)))) ) (RPAQQ NFSTAT.HistSize 100) (RPAQQ NFSTAT.HashArraySize 100) (DATATYPE NOTEFILEATTRIBUTES (FULLNAME AUTHOR CREATIONDATE WRITEDATE READDATE (SIZE INTEGER))) (DATATYPE NOTEFILEDATA (ALLCARDSDATA CARDTYPESHASHARRAY FILEBOXDATA LINKTYPESHASHARRAY (NUMLINKS INTEGER))) (DATATYPE ALLCARDSDATA (ALLCARDSSIZEHIST1 ALLCARDSSIZEHIST2 ALLCARDSHIST ALLCARDSSTATS)) (DATATYPE CARDTYPEDATA (CARDTYPESIZEHIST1 CARDTYPESIZEHIST2 CARDTYPEHIST CARDTYPESTATS)) (DATATYPE FILEBOXDATA (FILEBOXHIST FILEDCARDSTATS SUBBOXSTATS TOCDEPTHHIST TOCDEPTHSTATS TBFDEPTHHIST TBFDEPTHSTATS ORPHDEPTHHIST ORPHDEPTHSTATS)) (DATATYPE CARDHISTENTRY ((HISTENTRYPARENTS INTEGER) (HISTENTRYTOLINKS INTEGER) (HISTENTRYFROMLINKS INTEGER) (HISTENTRYGLOBALLINKS INTEGER))) (DATATYPE FILEBOXHISTENTRY ((HISTENTRYFILEDCARDLINKS INTEGER) (HISTENTRYSUBBOXLINKS INTEGER))) (DATATYPE CARDSTATS ((TOTAL INTEGER) PARENTSSTATS TOLINKSSTATS FROMLINKSSTATS GLOBALLINKSSTATS SIZESTATS)) (DATATYPE STATSFROMHIST ((TOTAL INTEGER) (MIN FLOATING) (MAX FLOATING) (MEAN FLOATING) (MEDIAN FLOATING) (MODE FLOATING))) (/DECLAREDATATYPE (QUOTE NOTEFILEATTRIBUTES) (QUOTE (POINTER POINTER POINTER POINTER POINTER FIXP)) ( QUOTE ((NOTEFILEATTRIBUTES 0 POINTER) (NOTEFILEATTRIBUTES 2 POINTER) (NOTEFILEATTRIBUTES 4 POINTER) ( NOTEFILEATTRIBUTES 6 POINTER) (NOTEFILEATTRIBUTES 8 POINTER) (NOTEFILEATTRIBUTES 10 FIXP))) (QUOTE 12) ) (/DECLAREDATATYPE (QUOTE NOTEFILEDATA) (QUOTE (POINTER POINTER POINTER POINTER FIXP)) (QUOTE (( NOTEFILEDATA 0 POINTER) (NOTEFILEDATA 2 POINTER) (NOTEFILEDATA 4 POINTER) (NOTEFILEDATA 6 POINTER) ( NOTEFILEDATA 8 FIXP))) (QUOTE 10)) (/DECLAREDATATYPE (QUOTE ALLCARDSDATA) (QUOTE (POINTER POINTER POINTER POINTER)) (QUOTE ((ALLCARDSDATA 0 POINTER) (ALLCARDSDATA 2 POINTER) (ALLCARDSDATA 4 POINTER) (ALLCARDSDATA 6 POINTER))) (QUOTE 8)) (/DECLAREDATATYPE (QUOTE CARDTYPEDATA) (QUOTE (POINTER POINTER POINTER POINTER)) (QUOTE ((CARDTYPEDATA 0 POINTER) (CARDTYPEDATA 2 POINTER) (CARDTYPEDATA 4 POINTER) (CARDTYPEDATA 6 POINTER))) (QUOTE 8)) (/DECLAREDATATYPE (QUOTE FILEBOXDATA) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER)) (QUOTE ((FILEBOXDATA 0 POINTER) (FILEBOXDATA 2 POINTER) (FILEBOXDATA 4 POINTER) ( FILEBOXDATA 6 POINTER) (FILEBOXDATA 8 POINTER) (FILEBOXDATA 10 POINTER) (FILEBOXDATA 12 POINTER) ( FILEBOXDATA 14 POINTER) (FILEBOXDATA 16 POINTER))) (QUOTE 18)) (/DECLAREDATATYPE (QUOTE CARDHISTENTRY) (QUOTE (FIXP FIXP FIXP FIXP)) (QUOTE ((CARDHISTENTRY 0 FIXP) ( CARDHISTENTRY 2 FIXP) (CARDHISTENTRY 4 FIXP) (CARDHISTENTRY 6 FIXP))) (QUOTE 8)) (/DECLAREDATATYPE (QUOTE FILEBOXHISTENTRY) (QUOTE (FIXP FIXP)) (QUOTE ((FILEBOXHISTENTRY 0 FIXP) ( FILEBOXHISTENTRY 2 FIXP))) (QUOTE 4)) (/DECLAREDATATYPE (QUOTE CARDSTATS) (QUOTE (FIXP POINTER POINTER POINTER POINTER POINTER)) (QUOTE (( CARDSTATS 0 FIXP) (CARDSTATS 2 POINTER) (CARDSTATS 4 POINTER) (CARDSTATS 6 POINTER) (CARDSTATS 8 POINTER) (CARDSTATS 10 POINTER))) (QUOTE 12)) (/DECLAREDATATYPE (QUOTE STATSFROMHIST) (QUOTE (FIXP FLOATP FLOATP FLOATP FLOATP FLOATP)) (QUOTE (( STATSFROMHIST 0 FIXP) (STATSFROMHIST 2 FLOATP) (STATSFROMHIST 4 FLOATP) (STATSFROMHIST 6 FLOATP) ( STATSFROMHIST 8 FLOATP) (STATSFROMHIST 10 FLOATP))) (QUOTE 12)) (DEFMACRO NFSTAT.AddFieldEntryToHist (HistType Hist FieldName Num) (* * First make sure that Hist has a non-nil Num entry. Then increment FieldName field of the record in that entry. This is a macro so as to avoid call to RECORDACCESS.) (BQUOTE (LET* ((Index (if (GEQ , Num NFSTAT.HistSize) then (SUB1 NFSTAT.HistSize) else , Num)) (Val (ELT , Hist Index))) (if (NULL Val) then (SETQ Val (SETA , Hist Index (NFSTAT.MakeFreshHistRecord (QUOTE , HistType))))) (replace (, HistType , FieldName) of Val with (ADD1 (fetch (, HistType , FieldName) of Val)))))) (DEFMACRO NFSTAT.AnalyzeHist (Hists BoxWidths Total RecordType Field) (* * Compute statistics on the data in Hist into a STATSFROMHIST record. If Field is non-nil, then hist entries are records of type RecordType and we're interested in Field of that record. Otherwise, hist entries are numbers. This is a macro to avoid doing RECORDACCESS.) (* * Hists can be a list of histograms which should be the same length as IntervalWidths. The latter gives the width of a histogram entry or box, one for each histogram.) (BQUOTE (LET ((StatsFromHist (create STATSFROMHIST TOTAL _ , Total MIN _ 99999.0 MAX _ 0.0 MEAN _ 0.0 MEDIAN _ -1.0 MODE _ 0))) (with STATSFROMHIST StatsFromHist (for Hist in (MKLIST , Hists) as BoxWidth in (MKLIST , BoxWidths) bind TotalDivBy2 _ (FQUOTIENT TOTAL 2) NumSeen _ 0 LastNonEmptyEndBox _ -1 StartBox _ 0 ModeVal _ 0 HalfBox do (SETQ HalfBox (FQUOTIENT (SUB1 BoxWidth) 2 )) (for i from 0 to (SUB1 NFSTAT.HistSize) eachtime (BLOCK) bind MidBox EndBox do (LET* ((Entry (ELT Hist i)) (Val , (if (OR (NULL RecordType) (NULL Field)) then (BQUOTE (OR Entry 0)) else (BQUOTE (OR ( AND (type? , RecordType Entry) (fetch (, RecordType , Field) of Entry)) 0))))) (SETQ EndBox (PLUS StartBox BoxWidth -1)) (SETQ MidBox (PLUS StartBox HalfBox)) (* Update MAX and MIN.) (if (GREATERP Val 0) then (if (LESSP MidBox MIN) then (SETQ MIN MidBox)) (if (GREATERP MidBox MAX) then (SETQ MAX MidBox))) (* Keep running total in MEAN.) (add MEAN (TIMES Val MidBox)) (* Update MODE.) (if (GREATERP Val ModeVal) then (SETQ ModeVal Val) (SETQ MODE MidBox)) (* Compute MEDIAN if not already done.) (if (AND (LESSP MEDIAN 0.0) (GREATERP Val 0)) then (if (EQUAL NumSeen TotalDivBy2) then (SETQ MEDIAN ( FQUOTIENT (PLUS LastNonEmptyEndBox StartBox) 2)) elseif (LESSP TotalDivBy2 (add NumSeen Val)) then ( SETQ MEDIAN (FPLUS StartBox (FQUOTIENT (TIMES (DIFFERENCE NumSeen TotalDivBy2) (SUB1 BoxWidth)) Val))) else (SETQ LastNonEmptyEndBox EndBox))) (* Set up StartBox for next iteration.) (add StartBox BoxWidth)))) (* Divide total in MEAN by num cards.) (SETQ MEAN (FQUOTIENT MEAN TOTAL)) StatsFromHist)) )) (DEFMACRO NFSTAT.HistPlot (Hist Label &OPTIONAL RecordName &OPTIONAL FieldName) (* * Create a histogram plot using HISTPLOT from the PLOTEXAMPLES package of that field of Hist given by FieldName. If FieldName is nil, then Hist is assumed to contain integers rather than datatype entries.) (if RecordName then (BQUOTE (HISTPLOT (for i from 0 to (SUB1 NFSTAT.HistSize) collect (LET ((HistEntry ( ELT , Hist i))) (CONS i (OR (AND (type? , RecordName HistEntry) (fetch (, RecordName , FieldName) of HistEntry)) 0)))) (OR , Label (CONCAT (QUOTE , FieldName) " of " (QUOTE , RecordName))))) else (BQUOTE (HISTPLOT (for i from 0 to (SUB1 NFSTAT.HistSize) collect (LET ((HistEntry (ELT , Hist i))) (CONS i ( OR (NUMBERP HistEntry) 0)))) , Label)))) (PUTPROPS NOTEFILESTATS COPYRIGHT ("Xerox Corporation" 1986)) NIL