DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 TABLE OF CONTENTS 1- 2 INTRODUCTION 2- 93 DATA SECTION 3- 370 MAIN ROUTINE 4- 605 ERROR HANDLING 5- 652 SCAN FOR SEQUENCE 6- 691 GET DATE FROM FIRST BUFFER 7- 721 GET UIC FROM ASCII STRING 8- 744 USAGE STATS GATHERER 9- 761 NXTINT 10- 802 GET NEXT RECORD FROM FILE 11- 829 CLEAR THE LINE PRINTER BUFFER 12- 841 PRINT HEADER MESSAGE 13- 851 FILL IN USERNAME IN LPBUFFER AND BUFFER FOR USAGE.DAT 14- 882 LOAD LINE PRINTER BUFFER 15- 957 LOAD SUMMARY BUFFER DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 1 1 .TITLE DISK USAGE SUMMARY 2 .SBTTL INTRODUCTION 3 ; 4 ; THIS TASK PREPARES A REPORT OF DISK USAGE ON PER GROUP 5 ; AND A PER USER BASIS. IT IS USED IN CONJUNCTION WITH 6 ; THE TASK LIMITS AND THE TASK ...HEL TO SET, CHECK, 7 ; AND REPORT ON DISK STORAGE USAGE. 8 ; 9 ; OUTPUT OF THIS TASK IS A REPORT AND A SUMMARY FILE. 10 ; THE SUMMARY FILE IS USED AS INPUT TO THE OTHER TWO 11 ; TASKS AS IT CONTAINS THE CURRENTLY SET MAXIMUMS FOR 12 ; EACH GROUP AND USER. THE REPORT IS FOR THE USE OF THE 13 ; SYSTEM MANAGER IN DETERMINING GREEDY SORTS. 14 ; 15 ;************ REPORT FORMAT ****************** 16 ; 17 ; SPECIAL NOTE GROUP USER USED ALLOC FILES LIMIT 18 ; 19 ; SPECIAL NOTE WILL EITHER BE BLANK, OR 20 ; WILL INDICATE A UIC OVER ITS LIMIT **GREEDY**, OR 21 ; WILL INDICATE A UIC WITHOUT AN IMPOSED LIMIT **NOLIMIT** 22 ; GROUP CONTAINS THE GROUP ID 23 ; USER CONTAINS THE USER ID 24 ; USED GIVES THE NUMBER OF DISK BLOCKS IN USE FOR THIS UIC 25 ; ALLOC GIVES THE NUMBER OF DISK BLOCKS ALLOCATED TO THIS UIC 26 ; FILES GIVES THE NUMBER OF FILES ALLOCATED IN THIS UIC 27 ; LIMIT IS THE CURRENTLY IMPOSED LIMIT ON THIS UIC 28 ; 29 ;********************************************** 30 ; 31 ; MODS MADE BY B. N. MARTENSEN ON 22MAR77 TO INCLUDE USER NAME 32 ; ON THE LISTING REPORT. MOD INVOLVES READING IN ALL ENTRIES FROM 33 ; USER PROFILE FILE AND SEARCHING THIS LIST FOR UIC-USER NAME 34 ; CORRELATIONS. MODS ARE COMMENTED WITH BNMMOD 35 ; 36 ; THE PROGRAM HAS BEEN CONDITIONALIZED TO GENERATE THE UPF TYPE 37 ; CODE ONLY ON A SYSTEM WITH DISK USAGE ACCOUNTING. THIS IS DONE 38 ; SO IT WILL RUN ON RSX11D, RSX11M V2 WITH NO AUSER NAME FILE 39 ; AS WELL AS RSX11M V3 AND IAS WITH USER NAME FILES 40 ; 41 ; HISTORY 42 ; 43 ; D.R. ROSS ;INITIAL FILE CREATION 44 ; 45 ;BNMMOD B.N. MARTENSEN 22MAR77 ;ADD USER NAME DETERMINING CODE 46 ; 47 ;MBK001 M. BLAKE-KNOX 21JUN77 ;CONDITIONALIZE USER NAME CODE 48 ; 49 ;MBK002 M. BLAKE-KNOX 27JUN77 ;SUM USED BLOCKS OVER WHOLE DISK 50 ; 51 ; ASSEMBLY PARAMETER CONTROL 52 ; 53 ;ACCOUNT=1 ;GENERATE USER NAME ACCOUNTING INFO 54 ;IAS=1 ;GENERATE IAS VERSION 55 ;RSX11D=1 ;GENERATE RSX11D VERSION 56 000001 RSX11M= 1 ;GENERATE RSX11M VERSION 57 ;QIOW=1 ;USE THE QIOW DIRECTIVE DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 1-1 INTRODUCTION 58 ; 59 ; 60 .IIF DF,IAS QIOW= 1 61 .IIF DF,RSX11D QIOW= 1 62 ; 63 ; MACROS 64 ; 65 ; GIVEN A POINTER TO THE MESSAGE AND THE LENGTH SEND THE MESSAGE TO 66 ; THE TERMINAL 67 ; 68 .MACRO EREPRT MESS,LENG 69 ERPRT1 70 MOV #MESS,$.$EDB+Q.IOPL 71 MOV #LENG,$.$EDB+Q.IOPL+2 72 DIR$ #$.$EDB 73 .IIF NDF,QIOW WTSE$S #1 74 .MACRO ERPRT1 75 .ENDM ERPRT1 76 .ENDM EREPRT 77 ; 78 .MACRO ERPRT1 79 .MCALL DIR$ 80 .PSECT $$ERP 81 .IF DF,QIOW 82 .MCALL QIOW$ 83 $.$EDB: 84 QIOW$ IO.WVB,5,1,0,0,0,<0,0,40> 85 .IFF 86 .MCALL QIO$,WTSE$S 87 $.$EDB: 88 QIO$ IO.WVB,5,1,0,0,0,<0,0,40> 89 .ENDC 90 .PSECT CODE 91 .ENDM ERPRT1 DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 2 DATA SECTION 93 .SBTTL DATA SECTION 94 .MCALL FDBDF$,FDAT$A,FDOP$A,FSRSZ$,OPEN$R,GET$,OPEN$W,EXIT$S 95 .MCALL PUT$,DELET$,CLOSE$,PRINT$ 96 000000 .PSECT DATA 97 ; GENERAL VALUES 98 000000 000000 GROUP: .WORD 0 ;GROUP ID 99 000002 000000 USER: .WORD 0 ;USER ID 100 000004 000000 000000 USED: .WORD 0,0 ;# OF BLOCKS USED 101 000010 000000 000000 ALLOC: .WORD 0,0 ;# OF BLOCKS ALLOCATED 102 000014 000000 FILES: .WORD 0 ;# OF FILES ALLOCATED 103 ; 104 ; 105 ; 106 ;MBK002 DUMMY NODE FOR WHOLE DISK TOTALS 107 ;MBK002 108 000016 177777 TOTALS: .WORD -1 ;MBK002 109 000020 000000 .WORD 0 ;MBK002 GROUP ID ='*' 110 000022 000000 000000 TUSED: .WORD 0,0 ;MBK002 TOTAL USED BLOCKS 111 000026 000000 000000 TALLOC: .WORD 0,0 ;MBK002 TOTAL ALLOCATED BLOCKS 112 000032 000000 TFILES: .WORD 0 ;MBK002 TOTAL NUMBER OF FILES 113 000000 N= 0 ;ASSEMBLY TIME COUNTER 114 000034 000377 GTABLE: .REPT 377 ;1 ENTRY PER UIC POSSIBLE 115 N= N+1 116 .WORD -1 ;PTR TO 1ST UID OF THIS GROUP 117 .WORD N ;GROUP ID - FOR CONVENIENCE 118 .WORD 0,0 ;MBK002 USED 119 .WORD 0,0 ;MBK002 ALLOCATED 120 .WORD 0 ;FILES 121 .ENDR 122 007016' GEND= . ;END OF TABLE 123 ; 124 000620 USERS= 400. ;TOTAL # OF UICS WHICH CAN BE PROCESSED 125 007016 000620 UNODES: .REPT USERS ;FOR LINKED LIST OF UIDS OFF GID ENTRY 126 .BLKW 5. 127 .ENDR 128 016656' UEND= . 129 016656 007016' UFREE: .WORD UNODES ;PTR TO NEXT FREE NODE 130 ; 131 ; OFFSETS INTO NODES 132 000016 NODSZ= 16 ;MBK002 133 000002 N.ID= 2 134 000000 N.PTR= 0 135 000004 N.US= 4 136 000010 N.AL= 10 ;MBK002 137 000014 N.FL= 14 ;MBK002 138 ; 139 .IF DF,ACCOUNT ;MBK001 140 NAMES: .REPT USERS ;BNMMOD 400 ENTRIES FOR USERNAMES 141 .BLKB 14. ;BNMMOD AND USER IC'S. USERNAME 12 CHAR 142 .ENDR ;BNMMOD 143 NAMESL: .WORD 0 ;BNMMOD NO. OF ENTRIES IN NAMES 144 GRP= 13. ;BNMMOD OFFSET FOR GROUP NO. 145 USR= 12. ;BNMMOD OFFSET FOR USER NO. 146 LNMS= 14. ;BNMMOD LENGTH OF NAMES BLOCK 147 BLNKNM: .ASCII / / ;BNMMOD 12 BLANKS FOR NO NAME 148 .ENDC ;MBK001 149 ; MATCH STRINGS DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 2-1 DATA SECTION 150 016660 133 000 SQBR: .ASCII /[/<0> 151 016662 117 106 040 OF: .ASCII /OF /<0> 016665 000 152 016666 135 000 DT: .ASCII /]/<0> 153 .EVEN 154 ; 155 016670 BUFF: .BLKB 132. 156 017074 000204 BUFSZ: .WORD 132. 157 000056 DEFUIC= 46. ;BNMMOD POSITION IN PROFILE RECORD OF 158 ;DEFAULTUIC 159 ; 160 ; FILE SECTION 161 ; 162 ; FOR THE INPUT FILE [1,1]USAGE.TB 163 ; 164 000002 SYSLUN= 2 165 017076 TBFDB: 166 017076 FDBDF$ 167 017236 FDOP$A SYSLUN 168 ; 169 017236 000004 017252' TBDSP: .WORD SYL,SY ;FILE NAME INFORMATION BLOCK 170 017242 000000 000000 .WORD 0,0 171 017246 000010 017256' .WORD TBL,TB 172 ; 173 017252 123 131 060 SY: .ASCII /SY0:/ 017255 072 174 000004 SYL= .-SY 175 017256 125 123 101 TB: .ASCII /USAGE.TB/ 017261 107 105 056 017264 124 102 176 000010 TBL= .-TB 177 .EVEN 178 .IF DF,ACCOUNT ;MBK001 179 ;BNMMOD 180 ;BNMMOD FDB FOR USER PROFILE FILE 181 ;BNMMOD 182 PRFFDB: 183 FDBDF$ ;BNMMOD FILE DESCRIPTOR BLOCK FOR UPF 184 FDAT$A R.FIX,FD.CR ;BNMMOD FIXED LENGTH RECORDS 185 FDOP$A 5 ;BNMMOD LUN OF 5 BNMMOD 186 PRFDSP: .WORD SYL,SY ;BNMMOD DEVICE 187 .WORD UFDL,UFD ;BNMMOD DATASET DESCRIPTOR USER ID 188 .WORD PRFL,PRF ;BNMMOD DATASET DESCRIPTOR FILE NAME 189 ;BNMMOD 190 PRF: .ASCII /PDSUPF.DAT/ ;BNMMOD FILE NAME 191 PRFL= .-PRF ;BNMMOD LENGTH OF FILE NAME 192 UFD: .ASCII /[1,100]/ ;BNMMOD THE USER ID 193 UFDL= .-UFD ;BNMMOD THE LENGTH OF THE USER ID 194 .EVEN ;BNMMOD 195 .ENDC ;MBK001 196 ; 197 ; FILE FORMAT AND BUFFER 198 ; 199 017266 INBUF: .BLKW 11. ;HOLDS INPUT AND OUTPUT RECORDS TO 200 ;SUMMARY 201 ; 202 017314 OUTBUF: .BLKW 11. ;FOR OUTPUT RECORD IF NO CORRESP INPUT DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 2-2 DATA SECTION 203 ; 204 000000 UID= 0 205 000001 GID= 1 206 000002 MAX= 2 207 000004 USF= 4 208 000006 ALF= 6 209 000010 FLF= 10 210 000012 NME= 12 211 000026 RECSIZ= 22. 212 ; 213 ; FOR THE SUMMARY FILE USAGE.DAT. THE OLD VERSION IS READ-ONLY WHILE 214 ; THE NEW ONE IS CREATED AND WRITTEN HERE. BOTH ARE FIXED LENGTH 215 ; 216 017342 OLDFDB: 217 017342 FDBDF$ 218 017502 FDAT$A R.FIX,FD.CR 219 017502 FDOP$A 3 220 ; 221 017502 000004 017252' OLDDSP: .WORD SYL,SY 222 017506 000000 000000 .WORD 0,0 223 017512 000011 017516' .WORD OLDL,OLD 224 ; 225 017516 125 123 101 OLD: .ASCII /USAGE.DAT/ 017521 107 105 056 017524 104 101 124 226 000011 OLDL= .-OLD 227 .EVEN 228 ; 229 017530 NEWFDB: 230 017530 FDBDF$ 231 017670 FDAT$A R.FIX,FD.CR!FD.BLK,RECSIZ 232 017670 FDOP$A 4 233 ; 234 017670 LPFDB: 235 017670 FDBDF$ 236 020030 FDAT$A R.VAR,FD.CR 237 020030 FDOP$A 6 238 ; 239 020030 000004 017252' LPDSP: .WORD SYL,SY 240 020034 000000 000000 .WORD 0,0 241 020040 000011 020044' .WORD RPTL,RPT 242 ; 243 020044 125 123 101 RPT: .ASCII /USAGE.RPT/ 020047 107 105 056 020052 122 120 124 244 000011 RPTL= .-RPT 245 .EVEN 246 ; 247 ; 248 020056 FSRSZ$ 4 249 ; 250 020056 .PSECT DATA 251 ; 252 ; ERROR MESSAGES 253 ; 254 020056 133 125 123 OPN: .ASCII /[USE - CAN'T OPEN USAGE.TB]/<15><12> 020061 105 040 055 DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 2-3 DATA SECTION 020064 040 103 101 020067 116 047 124 020072 040 117 120 020075 105 116 040 020100 125 123 101 020103 107 105 056 020106 124 102 135 020111 015 012 255 000035 OPNL= .-OPN 256 ; 257 020113 133 125 123 OP2: .ASCII /[USE - CAN'T OPEN OLD USAGE.DAT]/<15><12> 020116 105 040 055 020121 040 103 101 020124 116 047 124 020127 040 040 117 020132 120 105 116 020135 040 117 114 020140 104 040 125 020143 123 101 107 020146 105 056 104 020151 101 124 135 020154 015 012 258 000043 OP2L= .-OP2 259 ; 260 020156 133 125 123 OP3: .ASCII /[USE - CAN'T CREATE NEW USAGE.DAT]/<15><12> 020161 105 040 055 020164 040 103 101 020167 116 047 124 020172 040 103 122 020175 105 101 124 020200 105 040 116 020203 105 127 040 020206 125 123 101 020211 107 105 056 020214 104 101 124 020217 135 015 012 261 000044 OP3L= .-OP3 262 ; 263 020222 133 125 123 OP4: .ASCII /[USE - CAN'T OPEN FOR OUTPUT ON LUN 6]/<15><12> 020225 105 040 055 020230 040 103 101 020233 116 047 124 020236 040 117 120 020241 105 116 040 020244 106 117 122 020247 040 117 125 020252 124 120 125 020255 124 040 117 020260 116 040 114 020263 125 116 040 020266 066 135 015 020271 012 264 000050 OP4L= .-OP4 265 ; 266 .IF DF,ACCOUNT ;MBK001 BNMMOD 267 OP5: .ASCII /[USE - CAN'T OPEN USER PROFILE FILE]/<15><12> 268 OP5L= .-OP5 ;BNMMOD LENGTH OF ERROR MESSAGE BNMMOD DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 2-4 DATA SECTION 269 FERR: .ASCII /[USE - READ ERROR ON PROFILE FILE ]/<15><12> ;BNMMOD 270 FERRL= .-FERR ;BNMMOD ERROR ON READ OF PROFILE FILE 271 ;BNMMOD 272 .ENDC ;MBK001 273 ; 274 020272 133 125 123 UIC: .ASCII /[USE - PREPOSTEROUS UIC FOUND IN USAGE.DAT]/<15><12> 020275 105 040 055 020300 040 120 122 020303 105 120 117 020306 123 124 105 020311 122 117 125 020314 123 040 125 020317 111 103 040 020322 106 117 125 020325 116 104 040 020330 111 116 040 020333 125 123 101 020336 107 105 056 020341 104 101 124 020344 135 015 012 275 000055 UICL= .-UIC 276 020347 133 125 123 RERR: .ASCII /[USE - ENCOUNTERED READ ERROR ON USAGE.TB]/<15><12> 020352 105 040 055 020355 040 105 116 020360 103 117 125 020363 116 124 105 020366 122 105 104 020371 040 122 105 020374 101 104 040 020377 105 122 122 020402 117 122 040 020405 117 116 040 020410 125 123 101 020413 107 105 056 020416 124 102 135 020421 015 012 277 000054 RERRL= .-RERR 278 ; 279 020423 133 125 123 OVR: .ASCII /[USE - INTERNAL TABLE OVERFLOW]/<15><12> 020426 105 040 055 020431 040 111 116 020434 124 105 122 020437 116 101 114 020442 040 124 101 020445 102 114 105 020450 040 117 126 020453 105 122 106 020456 114 117 127 020461 135 015 012 280 000041 OVRL= .-OVR 281 ; 282 020464 133 125 123 QUIT: .ASCII /[USE - FINISHED]/<15><12> 020467 105 040 055 020472 040 106 111 020475 116 111 123 020500 110 105 104 020503 135 015 012 DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 2-5 DATA SECTION 283 000022 QUITL= .-QUIT 284 ; 285 .EVEN 286 ; 287 ; 288 ; REPORT SECTION 289 ; 290 020506 040 040 104 HEADER: .ASCII / DISK USAGE SUMMARY DATE: / 020511 111 123 113 020514 040 125 123 020517 101 107 105 020522 040 123 125 020525 115 115 101 020530 122 131 040 020533 040 040 040 020536 040 104 101 020541 124 105 072 020544 040 291 020545 DATE: .BLKB 15. ;TO HOLD ASCII DATE STRING 292 000056 HEADL= .-HEADER 293 ; 294 020564 HEAD2: ;SECOND LINE OF HEADER 295 020564 040 040 040 .ASCII / / 020567 040 040 040 020572 040 040 296 020574 116 117 124 .ASCII /NOTE/ ;THESE FORM COLUMN HEADINGS 020577 105 297 020600 040 040 040 .ASCII / / 020603 040 040 040 298 .IF DF,ACCOUNT ;MBK001 299 .ASCII /USER NAME / ;BNMMOD HEADING FOR USER NAME 300 .ENDC ;MBK001 301 020606 107 122 117 .ASCII /GROUP/ 020611 125 120 302 020613 040 040 .ASCII / / 303 020615 125 123 105 .ASCII /USER/ 020620 122 304 020621 040 040 040 .ASCII / / ;MBK002 020624 040 040 305 020626 125 123 105 .ASCII /USED/ 020631 104 306 020632 040 040 040 .ASCII / / ;MBK002 020635 040 040 307 020637 101 114 114 .ASCII /ALLOC/ 020642 117 103 308 020644 040 040 040 .ASCII / / ;MBK002 020647 040 040 040 020652 040 040 309 020654 106 111 114 .ASCII /FILES/ 020657 105 123 310 020661 040 040 040 .ASCII / / ;MBK002 020664 040 040 040 020667 040 040 311 020671 114 111 115 .ASCII /LIMIT/ 020674 111 124 312 000112 HEAD2L= .-HEAD2 313 ; DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 2-6 DATA SECTION 314 ; SPECIAL NOTES 315 ; 316 020676 052 052 107 GREEDY: .ASCII /**GREEDY** / 020701 122 105 105 020704 104 131 052 020707 052 040 317 020711 116 117 040 NOLIM: .ASCII /NO LIMIT/ 020714 114 111 115 020717 111 124 318 000010 NOLIML= .-NOLIM 319 020721 052 052 116 NEWONE: .ASCII /**NEW UIC**/ 020724 105 127 040 020727 125 111 103 020732 052 052 320 020734 052 052 122 REMOVE: .ASCII /**REMOVED**/ 020737 105 115 117 020742 126 105 104 020745 052 052 321 020747 040 040 040 BLANKS: .ASCII / / 020752 040 040 040 020755 040 040 040 020760 040 040 322 .EVEN 323 ; 324 ; 325 ; 326 020762 LPBUFF: .BLKB 5 ;LEADING 5 BLANKS 327 020767 NOTE1: .BLKB 11. ;SPECIAL NOTEFIELD 328 000013 LP.NOT= .-NOTE1 329 021002 .BLKB 4 ;SPACER BNMMOD CHANGED 5 TO 4 330 .IF DF,ACCOUNT ;MBK001 331 NM1: .BLKB 12. ;BNMMOD USER NAME GOES IN HERE 332 LP.NM= .-NM1 ;BNMMOD LENGTH OF USER NAME 333 .ENDC ;MBK001 334 021006 .BLKB 1 ;BNMMOD SPACER OF 1 BYTE 335 021007 GRP1: .BLKB 3 ;GROUP ID 336 000003 LP.GID= .-GRP1 337 021012 .BLKB 3 338 021015 USR1: .BLKB 3 ;USER ID 339 000003 LP.UID= .-USR1 340 021020 .BLKB 4 341 021024 USD1: .BLKB 9. ;MBK002 # OF BLOCKS USED 342 000011 LP.US= .-USD1 343 021035 .BLKB 2 344 021037 ALL1: .BLKB 9. ;MBK002 # OF BLOCKS ALLOCATED 345 000011 LP.AL= .-ALL1 346 021050 .BLKB 2 347 021052 FIL1: .BLKB 5 ;# OF FILES ALLOCATED 348 000005 LP.FL= .-FIL1 349 021057 .BLKB 2 350 021061 LIM1: .BLKB 12 ;ASSIGNED BLOCK LIMIT 351 000012 LP.LM= .-LIM1 352 000111 LPBSIZ= .-LPBUFF 353 .EVEN 354 ; 355 ; EXTRA LOCATIONS NEEDED FOR REPORT PART 356 ; DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 2-7 DATA SECTION 357 021074 000000 DFLAG: .WORD 0 ;FLAGS DISC IN UIC BETWEEN FILE AND INT 358 021076 000000 DONE: .WORD 0 ;FLAGS END OF FILE &/OR INTERNAL TABLE 359 021100 000000 TMP: .WORD 0 360 021102 000000 FUIC: .WORD 0 ;HOLDS UIC FROM FILE RECORD 361 021104 000000 IUIC: .WORD 0 ;HOLDS UIC FROM CURRENT NODE 362 021106 000000 GRPPTR: .WORD 0 ;PTS AT CURRENT GROUP NODE 363 021110 000000 NODPTR: .WORD 0 ;CURRENT NODE 364 021112 000000 NOTPTR: .WORD 0 ;PTR TO A SPECIAL MESSAGE 365 021114 177777 LASTGR: .WORD -1 ;FOR FORMAT CONTROL ON OUTPUT 366 021116 015 012 012 SKIP2: .BYTE 15,12,12 ;TO SPACE TWO LINES 367 000003 SKIP2L= .-SKIP2 368 .EVEN DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 3 MAIN ROUTINE 370 .SBTTL MAIN ROUTINE 371 ; 372 ; 373 ; OPEN THE PIP PREPARED FILE USAGE.TB, EXTRACT USAGE INFORMATION 374 ; AND ADD THAT INFORMATION TO THE GROUP-USER DATA STRUCTURE. THIS PUTS 375 ; THE INFORMATION IN A CONVENIENT FORM, AS WELL AS SORTING IT 376 ; INTO NUMERIC ORDER. ONCE THE TB FILE HAS BEEN PROCESSED THE OUTPUT 377 ; REPORT AND SUMMARY FILE ARE PRODUCED. 378 ; 379 ; 380 000000 .PSECT CODE 381 000000 USAGE: ;TASK ENTRY POINT 382 000000 OPEN$R #TBFDB,,#TBDSP,,,,OPNERR 383 000032 NEWL: 384 000032 GET$ #TBFDB,#BUFF,#BUFSZ,EOF ;PROCESS UNTIL END OF FILE 385 ; 386 000064 004767 001574 JSR PC,GETDAT ;NOOP AFTER 1ST PASS 387 000070 012700 016670' MOV #BUFF,R0 ;PTR TO START OF STRING 388 000074 012701 016660' MOV #SQBR,R1 ;SEARCH FOR SQUARE BRACKET 389 000100 016702 017122' MOV F.NRBD+TBFDB,R2 ;LENGTH OF STRING 390 000104 SQSCAN: 391 000104 004767 001510 JSR PC,SCAN ;LOCATE UIC STRING 392 000110 103750 BCS NEWL ;NOTHING IN THIS BUFFER, GET NEXT 393 000112 004767 001640 JSR PC,GETUIC ;LOAD GROUP AND USER 394 000116 103002 BCC 3$ ;GOOD RETURN 395 000120 000167 001372 JMP UICERR ;FATAL ERROR 396 ; 397 ; NOW GET STATISTICS FOR THIS DIRECTORY 398 ; 399 000124 3$: 400 000124 016702 017122' MOV F.NRBD+TBFDB,R2 ;FIX UP LENGTH AGAIN 401 000130 010003 MOV R0,R3 402 000132 162703 016670' SUB #BUFF,R3 ;# OF CHAR USED ALREADY 403 000136 160302 SUB R3,R2 ;# LEFT 404 000140 012701 016662' MOV #OF,R1 ;SET UP FOR SCAN TO FIND NEXT FIELD 405 000144 2$: 406 000144 004767 001450 JSR PC,SCAN ;SCAN 407 000150 103022 BCC 1$ ;FOUND IT IN THIS BUFFER 408 000152 GET$ #TBFDB,#BUFF,#BUFSZ,RDERR ;BETTER NOT REACH EOF HERE!! 409 000204 012700 016670' MOV #BUFF,R0 ;RESET PTR 410 000210 016702 017122' MOV F.NRBD+TBFDB,R2 ;RESET LENGTH 411 000214 000753 BR 2$ ;KEEP LOOKING 412 000216 1$: 413 000216 004767 001600 JSR PC,DSTATS 414 ; 415 ; HAVE THE STATS NOW FILL IN THE APPROPRIATE SLOTS OF GROUP TABLE 416 ; 417 000222 016703 000000' MOV GROUP,R3 ;NUMERIC GID 418 000226 005303 DEC R3 ;TABLE INDEXES FROM 0 419 000230 070327 000016 MUL #NODSZ,R3 ;CONVERT TO OFFSET INTO TABLE 420 000234 062703 000034' ADD #GTABLE,R3 ;PTR TO NODE IN TABLE 421 000240 066763 000004' 000006 ADD USED,N.US+2(R3) ;MBK002 UPDATE FIELDS 422 000246 005563 000004 ADC N.US(R3) ;MBK002 (DOUBLE PRECISION) 423 000252 066763 000010' 000012 ADD ALLOC,N.AL+2(R3) 424 000260 005563 000010 ADC N.AL(R3) ;MBK002 425 000264 066763 000014' 000014 ADD FILES,N.FL(R3) 426 ; DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 3-1 MAIN ROUTINE 427 ; GET A NEW NODE FROR THIS USER AND PLACE THE NODE 428 ; IN THE LINKED LIST OFF ITS GROUP ENTRY. PUT NODE IN ASCENDING 429 ; UID ORDER. 430 ; 431 000272 NODE: 432 000272 026727 016656' 016656' CMP UFREE,#UEND ;CHECK VALIDITY OF THE PTR 433 000300 103402 BLO 3$ ;OK 434 000302 000167 001246 JMP OVRFLO ;OUT OF NODES!!!!! 435 000306 3$: 436 000306 016704 016656' MOV UFREE,R4 ;FREE NODE 437 000312 062767 000016 016656' ADD #NODSZ,UFREE ;UPDATE FREE PTR 438 000320 016764 000002' 000002 MOV USER,N.ID(R4) ;FILL IN THE NODE - UID 439 000326 016764 000004' 000006 MOV USED,N.US+2(R4) ;MBK002 440 000334 016764 000010' 000012 MOV ALLOC,N.AL+2(R4) ;MBK002 441 000342 016764 000014' 000014 MOV FILES,N.FL(R4) 442 000350 066767 000004' 000024' ADD USED,TUSED+2 ;MBK002 UPDATE DISK TOTALS 443 000356 005567 000022' ADC TUSED ;MBK002 444 000362 066767 000010' 000030' ADD ALLOC,TALLOC+2 ;MBK002 445 000370 005567 000026' ADC TALLOC ;MBK002 446 000374 066767 000014' 000032' ADD FILES,TFILES ;MBK002 447 ; 448 ; NOW LINK IT IN 449 ; 450 000402 1$: 451 000402 022763 177777 000000 CMP #-1,N.PTR(R3) ;END OF LIST? 452 000410 001006 BNE 2$ ;NOPE 453 000412 010463 000000 MOV R4,N.PTR(R3) ;ADD NODE 454 000416 012764 177777 000000 MOV #-1,N.PTR(R4) ;NEW EOL 455 000424 000414 BR JMPBCK 456 ; 457 ; SEE IF THE NODE SQUEEZES IN HERE 458 ; 459 000426 2$: 460 000426 016302 000000 MOV N.PTR(R3),R2 ;LOOK AT NEXT NODE 461 000432 026462 000002 000002 CMP N.ID(R4),N.ID(R2) ;IN HERE? 462 000440 002402 BLT 4$ ;YES, PUT IT IN 463 000442 010203 MOV R2,R3 ;UPDATE R3 PTR 464 000444 000756 BR 1$ ;CHECK THIS NODE 465 000446 4$: 466 000446 010264 000000 MOV R2,N.PTR(R4) ;PUT IN IN BETWEEN R2 & R3 467 000452 010463 000000 MOV R4,N.PTR(R3) 468 000456 JMPBCK: 469 000456 016702 017122' MOV F.NRBD+TBFDB,R2 ;FIX UP REMAINIG LENGTH FOR NEXT SCAN 470 000462 010003 MOV R0,R3 471 000464 162703 016670' SUB #BUFF,R3 472 000470 160302 SUB R3,R2 473 000472 012701 016660' MOV #SQBR,R1 474 000476 000167 177402 JMP SQSCAN ;NEXT DIRECTORY 475 ; 476 ; 477 ; 478 ; READ ERROR WHILE LOOKING FOR A UIC MAY JUST BE END OF FILE. 479 ; VERIFY THIS AND CONTINUE IF THIS IS SO, ELSE THIS IS A REAL 480 ; ERROR WHICH MUST BE REOPRTED. 481 ; 482 000502 EOF: 483 000502 122767 177766 017150' CMPB #-10.,F.ERR+TBFDB ;IS IT EOF? DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 3-2 MAIN ROUTINE 484 000510 001402 BEQ 1$ ;KEEP GOING 485 000512 000167 000742 JMP RDERR 486 000516 1$: 487 000516 005726 TST (SP)+ ;WON'T BE RETURNING 488 000520 DELET$ #TBFDB 489 .IF DF,ACCOUNT ;MBK001 BNMMOD BNMMOD NOW GET THE 490 ;USER PROFILE DATA BNMMOD 491 OPEN$R #PRFFDB,,#PRFDSP,,,,OP5ERR ;BNMMOD OPEN FILE 492 MOV #132.,BUFSZ ;BNMMOD INITIALIZE SIZE OF BUFFER 493 GET$ #PRFFDB,#BUFF,#BUFSZ,PRFERR ;BNMMOD GET 1ST RECORD 494 MOV BUFF,R3 ;BNMMOD 1ST WORD IS RECORD # OF 1ST USER 495 DEC R3 ;BNMMOD ALREADY HAVE READ ONE RECORD 496 DEC R3 ;BNMMOD DONT READ 1ST PROFILE RECORD 497 2$: 498 GET$ #PRFFDB,#BUFF,#BUFSZ,PRFERR ;BNMMOD GET REST OF RECORDS 499 SOB R3,2$ ;BNMMOD UNTIL 1ST USER PROFILE RECORD 500 MOV #NAMES,R0 ;BNMMOD WHERE ASCII NAME IS TO GO 501 PROFS: 502 MOV R0,-(SP) ;BNMMOD SAVE R0 ELSE GET$ DESTROYS IT 503 GET$ #PRFFDB,#BUFF,#BUFSZ,EOFL ;BNMMOD GET USERS UNTIL EOF 504 MOV (SP)+,R0 ;BNMMOD RESTORE REG 0 505 MOV #BUFF,R3 ;BNMMOD ADDRESS OF RAD50 USERNAME 506 MOV #4,R4 ;BNMMOD HAVE 4 RAD50 WORDS TO DECODE 507 1$: 508 MOV (R3)+,R1 ;BNMMOD PUT EACH RAD50 WORD INTO 509 ;REGISTER 510 JSR PC,$C5TA ;BNMMOD AND CONVERT IT TO 3 ASCII CHARS. 511 SOB R4,1$ ;BNMMOD REPEAT FOR EACH WORD 512 MOV BUFF+DEFUIC,(R0)+ ;BNMMOD COPY OVER THE GROUP,USER IC 513 INC NAMESL ;BNMMOD COUNT NO. OF USER NAMES 514 BR PROFS ;BNMMOD GET NEXT USER PROFILE RECORD 515 EOFL: 516 CLOSE$ #PRFFDB ;BNMMOD CLOSE USER PROFILE FILE 517 .ENDC ;MBK001 518 ; 519 ; NOW PREPARE REPORT 520 ; 521 000530 OPEN$R #OLDFDB,,#OLDDSP,,,,OP2ERR 522 000562 OPEN$W #NEWFDB,,#OLDDSP,,,,OP3ERR 523 000614 OPEN$W #LPFDB,,#LPDSP,,,,OP4ERR 524 ; 525 ; PRINT HEADER ON THE REPORT 526 ; 527 000646 004767 001516 JSR PC,HEADR 528 ; 529 ; CYCLE THROUGH UICS PREPARING REPORT AND NEW SUMMARY FILE 530 ; 531 000652 012767 000016' 021106' MOV #TOTALS,GRPPTR ;TO FIND FIRST VALID UIC WE MUST 532 000660 012767 000016' 021110' MOV #TOTALS,NODPTR ;FAKE IT 533 000666 004767 001324 JSR PC,NXTFIL ;GET NEXT FILE ENTRY - LOAD FUIC 534 ; 535 ; 536 000672 COMP: 537 000672 004767 001452 JSR PC,CLRBUF ;BLANKS IN LPBUFF 538 000676 026767 021102' 021104' CMP FUIC,IUIC ;ARE THE UICS IDENTICAL 539 000704 001425 BEQ SAME 540 000706 101015 BHI NEWUIC ;FOUND A UIC NOT EXISTING LAST TIME DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 3-3 MAIN ROUTINE 541 ; 542 ; THERE IS A UIC WHICH APPEARED LAST TIME BUT NOT THIS. THIS MAY 543 ; MEAN THAT A UIC HAS BEEN DELETED, OR THAT THE PIP /TB FILE 544 ; DID NOT DO [*,*]. NOTE ABSCENSE ON REPORT BY **REMOVED**. 545 ; 546 000710 012767 020734' 021112' MOV #REMOVE,NOTPTR ;PUT MESSAGE ADDRESS IN PTR 547 000716 116767 021103' 000000' MOVB FUIC+1,GROUP ;STORE GROUP ID 548 000724 116767 021102' 000002' MOVB FUIC,USER 549 000732 012767 177777 021074' MOV #-1,DFLAG ;FLAG THE DIFFERENCE 550 000740 000422 BR FORMAT ;TO PREPARE OUTPUT 551 ; 552 000742 NEWUIC: 553 000742 012767 020721' 021112' MOV #NEWONE,NOTPTR ;TO REPORT NEW UIC 554 000750 012767 000001 021074' MOV #1,DFLAG ;FLAG DIFFERENCE 555 000756 000405 BR S1 556 ; 557 000760 SAME: 558 000760 012767 020747' 021112' MOV #BLANKS,NOTPTR ;FIELD WILL BE BLANK, NOTHING SPECIAL 559 000766 005067 021074' CLR DFLAG 560 000772 S1: 561 000772 116767 021105' 000000' MOVB IUIC+1,GROUP 562 001000 116767 021104' 000002' MOVB IUIC,USER 563 ; 564 ; NOW FORMAT THE OUTPUT LINE 565 ; 566 001006 FORMAT: 567 001006 026767 000000' 021114' CMP GROUP,LASTGR ;WANT TO PUT IN SPACING BETWEEN GROUPS 568 001014 001420 BEQ 1$ ;SAME GROUP, DON'T SPACE 569 001016 016767 000000' 021114' MOV GROUP,LASTGR ;GET IT UP TO DATE 570 001024 PUT$ #LPFDB,#SKIP2,#SKIP2L,OPNERR ;PUT TWO LINES 571 001056 1$: ;MBK001 572 .IF DF,ACCOUNT ;MBK001 573 JSR PC,USERNM ;BNMMOD FILL IN USER NAME IN LP AND DAT 574 ;BUFFER 575 .ENDC ;MBK001 576 001056 004767 001404 JSR PC,LDLPBF ;FILL IN THE LP BUFFER 577 001062 PUT$ #LPFDB,#LPBUFF,#LPBSIZ,OP2ERR 578 001114 004767 001630 JSR PC,LDSUMM ;FILL IN NEW OUTPUT RECORD 579 ; 580 ; PREPARE FOR NEXT OUTPUT 581 ; 582 001120 005767 021074' TST DFLAG ;WERE THE RECORD IN BOTH 583 001124 002403 BLT 2$ ;ONLY IN FILE 584 001126 003005 BGT 3$ ;ONLY IN THE INTERNAL TABLE 585 001130 004767 000726 JSR PC,NXTINT ;GET INTERNAL ONE 586 001134 2$: 587 001134 004767 001056 JSR PC,NXTFIL 588 001140 000402 BR CHKDON ;MAYBE THIS IS ALL!!! 589 001142 3$: 590 001142 004767 000714 JSR PC,NXTINT 591 001146 CHKDON: 592 001146 022767 000003 021076' CMP #3,DONE 593 001154 001402 BEQ CLOSUP ;ALL DONE 594 001156 000167 177510 JMP COMP ;DO THE NEXT ONE 595 ; 596 ; 597 001162 CLOSUP: DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 3-4 MAIN ROUTINE 598 001162 EREPRT QUIT,QUITL 599 001216 CLOSE$ #LPFDB 600 001226 CLOSE$ #OLDFDB 601 001236 CLOSE$ #NEWFDB 602 001246 EXIT: 603 001246 EXIT$S DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 4 ERROR HANDLING 605 .SBTTL ERROR HANDLING 606 ; 607 ; 608 001254 OPNERR: 609 001254 EREPRT OPN,OPNL 610 001310 000540 BR CLEAR 611 ; 612 001312 OP2ERR: 613 001312 EREPRT OP2,OP2L ;REPORT THIS. 614 001346 052767 000002 021076' BIS #2,DONE ;MARK IT AS EOF 615 001354 012767 177777 021102' MOV #177777,FUIC ;HIGHEST UIC POSSIBLE 616 001362 000207 RTS PC 617 ; 618 ; 619 001364 OP3ERR: 620 001364 EREPRT OP3,OP3L 621 001420 000474 BR CLEAR 622 ; 623 ; 624 001422 OP4ERR: 625 001422 EREPRT OP4,OP4L 626 001456 000455 BR CLEAR 627 .IF DF,ACCOUNT ;MBK001 628 ; 629 OP5ERR: 630 EREPRT OP5,OP5L ;BNMMOD REPORT ERROR ON OPEN 631 BR CLEAR ;BNMMOD BNMMOD 632 PRFERR: 633 EREPRT FERR,FERRL ;BNMMOD ERROR READING PROFILE FILE 634 BR CLEAR ;BNMMOD BNMMOD 635 .ENDC ;MBK001 636 001460 RDERR: 637 001460 EREPRT RERR,RERRL 638 001514 000436 BR CLEAR 639 ; 640 001516 UICERR: 641 001516 EREPRT UIC,UICL 642 001552 000420 BR CLEAR+2 643 ; 644 001554 OVRFLO: 645 001554 EREPRT OVR,OVRL 646 001610 000401 BR CLEAR+2 647 ; 648 001612 CLEAR: 649 001612 005726 TST (SP)+ 650 001614 000167 177426 JMP EXIT DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 5 SCAN FOR SEQUENCE 652 .SBTTL SCAN FOR SEQUENCE 653 ; 654 ; SUBROUTINE TO SCAN FOR A GIVEN CHARACTER SEQUENCE. 655 ; IT RETURNS PTR TO 1ST CHAR PAST SEQ IN R0 656 ; LENGTH OF MATCHED SEQ IN R2 657 ; C-BIT CLEAR IF WHOLE STRING MATCHED 658 ; C-BIT SET IF RAN OUT OF STRING (R2 STILL 659 ; CONTAINS AMOUNT MATCHED SO FAR. 660 ; 661 ; R0 PTR TO STRING BEING SCANNED 662 ; R1 PTR TO NULL TERMINATED SEQ BEING SOUGHT 663 ; R2 LENGTH OF INPUT STRING 664 ; 665 001620 .PSECT CODE 666 001620 SCAN: 667 001620 005004 CLR R4 668 001622 1$: 669 001622 122011 CMPB (R0)+,(R1) ;SAME? 670 001624 001410 BEQ 2$ ;SO FAR 671 001626 005704 TST R4 ;ANY MATCH UP TO HERE 672 001630 001401 BEQ 11$ ;NO, NO CLEAN UP NECESSARY 673 001632 160401 SUB R4,R1 ;RESET SEQ PTR TO BEGINNING 674 001634 11$: 675 001634 005004 CLR R4 676 001636 12$: 677 001636 077207 SOB R2,1$ ;UNTIL END OF STRING 678 001640 010402 MOV R4,R2 ;RETURN LENGTH MATCHED SO FAR 679 001642 000261 SEC ;RAN OUT OF INPUT STRING 680 001644 000207 RTS PC 681 001646 2$: 682 001646 005204 INC R4 ;ANOTHER CHAR MATCHED 683 001650 005201 INC R1 ;UPDATE SEQ PTR 684 001652 105711 TSTB (R1) ;END OF SEQ TO MATCH 685 001654 001401 BEQ 3$ ;THAT'S ALL 686 001656 000767 BR 12$ ;KEEP AT IT 687 001660 3$: 688 001660 000241 CLC ;SIGNAL SUCESSFUL MATCH 689 001662 000207 RTS PC DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 6 GET DATE FROM FIRST BUFFER 691 .SBTTL GET DATE FROM FIRST BUFFER 692 ; 693 ; THIS ROUTINE SCANS THE FIRST BUFFER FULL TO FIND 694 ; THE DATE FIELD. IT LOADS THE 9 CHAR FIELD INTO 695 ; THE HEADER BUFFER DATE FOR INCLUSION IN THE REPORT 696 ; 697 001664 GETDAT: 698 001664 105767 020545' TSTB DATE ;WILL BE NON ZERO AFTER DATE IS READ 699 001670 001031 BNE 1$ ;SKIP THE REST 700 001672 012700 016670' MOV #BUFF,R0 ;POINT TO BEGINNING IF ASCII STRING 701 001676 012701 016666' MOV #DT,R1 ;SEARCH STRING 702 001702 016702 017122' MOV F.NRBD+TBFDB,R2 ;LENGTH 703 001706 004767 177706 JSR PC,SCAN 704 001712 103411 BCS 2$ ;COULDN'T FIND IT 705 001714 012702 000017 MOV #15.,R2 706 001720 012701 020545' MOV #DATE,R1 ;BUFFER TO HOLD STRING 707 001724 062700 000002 ADD #2,R0 ;PT TO BEGINNING OF BUFFER 708 001730 3$: 709 001730 112021 MOVB (R0)+,(R1)+ 710 001732 077202 SOB R2,3$ 711 001734 000407 BR 1$ 712 001736 2$: 713 001736 012702 000017 MOV #15.,R2 ;FILL WITH BLANKS 714 001742 012701 020545' MOV #DATE,R1 715 001746 4$: 716 001746 112721 000040 MOVB #' ,(R1)+ 717 001752 077203 SOB R2,4$ 718 001754 1$: 719 001754 000207 RTS PC DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 7 GET UIC FROM ASCII STRING 721 .SBTTL GET UIC FROM ASCII STRING 722 ; 723 ; GIVEN A PTR TO THE ASCII STRING REPRESENTING A UIC, 724 ; CONVERT THE STRING TO A GROUP ID (PLACE IT IN GROUP) 725 ; AND A USER ID (PLACE IT IN USER). PTR PTS PAST STRING 726 ; ON EXIT. SET C-BIT IF EITHER GID OR UID GTR 377(OCTAL) 727 ; 728 001756 GETUIC: 729 001756 004767 000000G JSR PC,$COTB ;CONVERT 730 001762 010167 000000' MOV R1,GROUP ;STORE GID 731 001766 022701 000377 CMP #377,R1 ;VALID? 732 001772 103411 BLO 1$ 733 001774 004767 000000G JSR PC,$COTB 734 002000 022701 000377 CMP #377,R1 735 002004 103404 BLO 1$ ;INVALID UID 736 002006 010167 000002' MOV R1,USER 737 002012 000241 CLC 738 002014 000401 BR 2$ ;RETURN - SUCCESS 739 002016 1$: 740 002016 000261 SEC 741 002020 2$: 742 002020 000207 RTS PC DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 8 USAGE STATS GATHERER 744 .SBTTL USAGE STATS GATHERER 745 ; 746 ; PICK UP THE UIC USAGE STATISTICS. ASSUMES FORMAT AS GENERATED BY 747 ; PIP /TB. R0 PTS TO IS DIGIT ON ENTRY AND JUST PAST THE 748 ; LAST DIGIT OF THE FILES ON EXIT 749 ; 750 002022 DSTATS: 751 002022 004767 000000G JSR PC,$CDTB ;CONVERT DEC TO BINARY 752 002026 010167 000004' MOV R1,USED ;STORE IT 753 002032 005200 INC R0 ;STEP PAST THE '/' 754 002034 004767 000000G JSR PC,$CDTB 755 002040 010167 000010' MOV R1,ALLOC 756 002044 062700 000013 ADD #13,R0 757 002050 004767 000000G JSR PC,$CDTB 758 002054 010167 000014' MOV R1,FILES 759 002060 000207 RTS PC DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 9 NXTINT 761 .SBTTL NXTINT 762 ; 763 ; NXTINT GETS THE NEXT VALID UIC FROM THE INTERNAL DATA STRUCTURE. 764 ; TO FACILITATE CHANGE FROM ONE GROUP TO THE NEXT THE CURRENT 765 ; GROUP NODE PTR IS KEPT IN GRPPTR. 766 ; ON ENTRY R0 PTS AT CURRENT NODE 767 ; ON EXIT R0 PTS AT THE NEW NODE (IF ANY) 768 ; IUIC CONTAINS UID IN LOW BYTE AND GID IN HIGH BYTE 769 ; DONE=+1 TO SIGNIFY END OF INTERNAL TABLE 770 ; 771 002062 NXTINT: 772 002062 032767 000001 021076' BIT #1,DONE ;ALREADY AT THE END 773 002070 001051 BNE OUT ;JUST LEAVE 774 002072 016700 021110' MOV NODPTR,R0 775 002076 026027 000000 177777 CMP N.PTR(R0),#-1 ;END OF GROUP 776 002104 001410 BEQ 1$ 777 002106 016000 000000 MOV N.PTR(R0),R0 ;NEXT NODE 778 002112 116067 000002 021104' MOVB N.ID(R0),IUIC ;GROUP ID ALREADY SET 779 002120 010067 021110' MOV R0,NODPTR 780 002124 000433 BR OUT 781 ; 782 002126 1$: 783 002126 016700 021106' MOV GRPPTR,R0 ;RESET NODE PTR TO GROUP NODE 784 002132 3$: 785 002132 062700 000016 ADD #NODSZ,R0 ;LOOK AT NEXT ONE 786 002136 022700 007016' CMP #GEND,R0 ;END OF TABLE? 787 002142 003416 BLE 2$ ;YES 788 002144 026027 000000 177777 CMP N.PTR(R0),#-1 ;ANY ENTRIES IN THIS GROUP 789 002152 001767 BEQ 3$ ;KEEP LOOKING 790 002154 010067 021106' MOV R0,GRPPTR ;KEEP TRACK OF GROUP NODE 791 002160 116067 000002 021105' MOVB N.ID(R0),IUIC+1 792 002166 105067 021104' CLRB IUIC ;UID FOR GROUP ENTRY 793 002172 010067 021110' MOV R0,NODPTR 794 002176 000406 BR OUT 795 ; 796 002200 2$: 797 002200 012767 177777 021104' MOV #177777,IUIC ;HIGHEST UIC WE CAN PUT IN 798 002206 052767 000001 021076' BIS #1,DONE ;SIGNAL INTERNAL TABLE FINISHED 799 002214 OUT: 800 002214 000207 RTS PC DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 10 GET NEXT RECORD FROM FILE 802 .SBTTL GET NEXT RECORD FROM FILE 803 ; 804 ; 805 ; 806 002216 NXTFIL: 807 002216 032767 000002 021076' BIT #2,DONE ;ALREADY AT END OF FILE? 808 002224 001027 BNE OUTFIL ;YES,LEAVE 809 002226 GET$ #OLDFDB,#INBUF,#RECSIZ,FILEND 810 002260 032767 000002 021076' BIT #2,DONE ;MAY HAVE JUST REACHED EOF 811 002266 001006 BNE OUTFIL 812 002270 116767 017267' 021103' MOVB GID+INBUF,FUIC+1 813 002276 116767 017266' 021102' MOVB UID+INBUF,FUIC 814 002304 OUTFIL: 815 002304 000207 RTS PC 816 ; 817 ; 818 002306 FILEND: 819 002306 122767 177766 017414' CMPB #-10.,F.ERR+OLDFDB ;EOF? 820 002314 001406 BEQ 1$ 821 002316 DELET$ #NEWFDB ;UNRECOVERABLE ERROR- GET RID OF THE 822 ;NEW ONE 823 002326 000167 177126 JMP RDERR ;REPORT ERROR 824 002332 1$: 825 002332 052767 000002 021076' BIS #2,DONE ;SIGNAL EOF 826 002340 012767 177777 021102' MOV #177777,FUIC 827 002346 000207 RTS PC DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 11 CLEAR THE LINE PRINTER BUFFER 829 .SBTTL CLEAR THE LINE PRINTER BUFFER 830 ; 831 ; 832 ; 833 002350 CLRBUF: 834 002350 012704 020762' MOV #LPBUFF,R4 835 002354 012703 000044 MOV #LPBSIZ/2,R3 836 002360 1$: 837 002360 012724 020040 MOV #" ,(R4)+ 838 002364 077303 SOB R3,1$ 839 002366 000207 RTS PC DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 12 PRINT HEADER MESSAGE 841 .SBTTL PRINT HEADER MESSAGE 842 ; 843 ; 844 ; 845 002370 HEADR: 846 002370 PUT$ #LPFDB,#HEADER,#HEADL 847 002414 PUT$ #LPFDB,#SKIP2,#SKIP2L 848 002440 PUT$ #LPFDB,#HEAD2,#HEAD2L 849 002464 000207 RTS PC DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 13 FILL IN USERNAME IN LPBUFFER AND BUFFER FOR USAGE.DAT 851 .SBTTL FILL IN USERNAME IN LPBUFFER AND BUFFER FOR USAGE.DAT 852 .IF DF,ACCOUNT ;MBK001 853 ;BNMMOD 854 ;BNMMOD BNMMOD BNMMOD BNMMOD SEARCH 855 ;NAMES FOR GROUP+USER 856 USERNM: 857 MOV #NAMES,R1 ;BNMMOD START OF USER NAME LIST 858 MOV NAMESL,R2 ;BNMMOD NO. OF NAMES IN LIST 859 1$: 860 CMPB GROUP,GRP(R1) ;BNMMOD IS THE GROUP THE SAME 861 BNE 2$ ;BNMMOD NO SO CHECK NEXT ENTRY IN LIST 862 CMPB USER,USR(R1) ;BNMMOD IS THE USER ALSO THE SAME 863 BEQ 3$ ;BNMMOD YES SO PUT USER NAME IN LP 864 ;BUFFER 865 2$: 866 ADD #LNMS,R1 ;BNMMOD R1 POINTS TO NEXT ENTRY IN NAMES 867 SOB R2,1$ ;BNMMOD REPEAT FOR ALL ENTRIES IN LIST 868 MOV #BLNKNM,R1 ;BNMMOD ADDRESS OF BLANKED OUT NAME 869 3$: 870 MOV #NM1,R3 ;BNMMOD WHERE USER NAME TO BE PUT 871 MOV #NME+INBUF,R2 ;BNMMOD WHERE IN INBUFF NAME IS TO GO 872 MOV #NME+OUTBUF,R0 ;BNMMOD WHERE IN OUTBUF NAME IS TO GO 873 MOV #LP.NM,R4 ;BNMMOD LENGTH OF USER NAME 874 4$: 875 MOVB @R1,(R3)+ ;BNMMOD PUT IN NAME 1 CHAR AT A TIME 876 MOVB @R1,(R2)+ ;BNMMOD PUT CHAR IN INBUFF 877 MOVB (R1)+,(R0)+ ;BNMMOD PUT CHAR IN OUTBUF 878 SOB R4,4$ ;BNMMOD DO IT FOR EACH CHAR 879 RTS PC ;BNMMOD RETURN BNMMOD 880 .ENDC ;MBK001 DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 14 LOAD LINE PRINTER BUFFER 882 .SBTTL LOAD LINE PRINTER BUFFER 883 ; 884 ; 885 ; 886 002466 LDLPBF: 887 002466 012703 020767' MOV #NOTE1,R3 ;LP BUFFER POSITION FOR SPEC NOTE 888 002472 016705 021112' MOV NOTPTR,R5 ;PICK UP ADDRESS OF NOTE 889 002476 012704 000013 MOV #LP.NOT,R4 ;LENGTH 890 002502 1$: 891 002502 112523 MOVB (R5)+,(R3)+ 892 002504 077402 SOB R4,1$ 893 ; 894 002506 112767 000133 021006' MOVB #'[,GRP1-1 895 002514 012700 021007' MOV #GRP1,R0 ;INTO BUFFER 896 002520 005002 CLR R2 ;SUPRESS LEADING ZEROES 897 002522 016701 000000' MOV GROUP,R1 ;GROUP UID 898 002526 001403 BEQ 50$ ;MBK002 (ALL GROUUPS) 899 002530 004767 000000G JSR PC,$CBOMG ;CONVERT TO ASCII 900 002534 000402 BR 60$ ;MBK002 901 002536 50$: 902 002536 112720 000052 MOVB #'*,(R0)+ ;MBK002 GROUP NUMBER ='*' 903 002542 60$: ;MBK002 904 ; 905 002542 112767 000054 021013' MOVB #',,USR1-2 906 002550 012700 021015' MOV #USR1,R0 907 002554 016701 000002' MOV USER,R1 908 002560 001404 BEQ 10$ ;GROUP ENTRY 909 002562 005002 CLR R2 ;SUPRESS LEADING ZEROES 910 002564 004767 000000G JSR PC,$CBOMG 911 002570 000402 BR 11$ 912 002572 10$: 913 002572 112720 000052 MOVB #'*,(R0)+ 914 002576 11$: 915 002576 112710 000135 MOVB #'],(R0) 916 ; 917 002602 022767 177777 021074' CMP #-1,DFLAG ;NO ENTRY THIS TIME? 918 002610 001456 BEQ 2$ ;NO OUTPUT 919 002612 016701 021110' MOV NODPTR,R1 920 002616 062701 000004 ADD #N.US,R1 ;MBK002 BLOCKS USED THIS TIME 921 002622 012700 021024' MOV #USD1,R0 922 002626 005002 CLR R2 ;SUPRESS LEADING ZEROES 923 002630 004767 000000G JSR PC,$CDDMG ;MBK002 924 ; 925 002634 016701 021110' MOV NODPTR,R1 926 002640 062701 000010 ADD #N.AL,R1 ;MBK002 BLOCKS ALLOCATED 927 002644 012700 021037' MOV #ALL1,R0 928 002650 005002 CLR R2 ;SUPRESS LEADING ZEROES 929 002652 004767 000000G JSR PC,$CDDMG ;MBK002 930 ; 931 002656 016701 021110' MOV NODPTR,R1 932 002662 016101 000014 MOV N.FL(R1),R1 933 002666 012700 021052' MOV #FIL1,R0 934 002672 005002 CLR R2 ;SUPRESS LEADING ZEROES 935 002674 004767 000000G JSR PC,$CBDMG 936 ; 937 002700 012700 021061' MOV #LIM1,R0 938 002704 005767 021074' TST DFLAG ;WAS THERE AN ENTRY LAST TIME DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 14-1 LOAD LINE PRINTER BUFFER 939 002710 001401 BEQ 3$ ;YES THERE WAS 940 002712 000407 BR 5$ 941 002714 3$: 942 002714 016701 017270' MOV MAX+INBUF,R1 ;CURRENT LIMIT 943 002720 001404 BEQ 5$ 944 002722 004767 000000G JSR PC,$CBDMG 945 002726 005002 CLR R2 ;SUPRESS LEADING ZEROES 946 002730 000406 BR 2$ 947 002732 5$: 948 002732 012705 020711' MOV #NOLIM,R5 949 002736 012701 000010 MOV #NOLIML,R1 950 002742 4$: 951 002742 112520 MOVB (R5)+,(R0)+ 952 002744 077102 SOB R1,4$ 953 ; 954 002746 2$: 955 002746 000207 RTS PC DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 15 LOAD SUMMARY BUFFER 957 .SBTTL LOAD SUMMARY BUFFER 958 ; 959 ; 960 ; 961 002750 LDSUMM: 962 002750 022767 177777 021074' CMP #-1,DFLAG ;NO RECORD THIS TIME? 963 002756 001464 BEQ 2$ ;NO, THERE ISN'T 964 002760 016700 021110' MOV NODPTR,R0 ;PT AT CURRENT NODE FOR DATA 965 002764 005767 021074' TST DFLAG ;CAN WE USE INPUT RECORD? 966 002770 001024 BNE 1$ ;NO, THIS IS FIRST APPEARANCE OF REC 967 002772 016067 000004 017272' MOV N.US(R0),USF+INBUF 968 003000 016067 000010 017274' MOV N.AL(R0),ALF+INBUF 969 003006 016067 000014 017276' MOV N.FL(R0),FLF+INBUF 970 003014 PUT$ #NEWFDB,#INBUF,#RECSIZ 971 003040 000433 BR 2$ 972 ; 973 ; 974 003042 1$: 975 003042 116767 000000' 017315' MOVB GROUP,GID+OUTBUF 976 003050 116767 000002' 017314' MOVB USER,UID+OUTBUF 977 003056 005067 017316' CLR MAX+OUTBUF 978 003062 016067 000004 017320' MOV N.US(R0),USF+OUTBUF 979 003070 016067 000010 017322' MOV N.AL(R0),ALF+OUTBUF 980 003076 016067 000014 017324' MOV N.FL(R0),FLF+OUTBUF 981 003104 PUT$ #NEWFDB,#OUTBUF,#RECSIZ 982 003130 2$: 983 003130 000207 RTS PC 984 000000' .END USAGE DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 15-1 SYMBOL TABLE ALF = 000006 F.FACC= 000043 LIM1 021061R 002 OPNL = 000035 S.FNAM= 000006 ALLOC 000010R 002 F.FFBY= 000014 LPBSIZ= 000111 OP2 020113R 002 S.FNB = 000036 ALL1 021037R 002 F.FNAM= 000110 LPBUFF 020762R 002 OP2ERR 001312R 004 S.FNBW= 000017 BLANKS 020747R 002 F.FNB = 000102 LPDSP 020030R 002 OP2L = 000043 S.FNTY= 000004 BUFF 016670R 002 F.FTYP= 000116 LPFDB 017670R 002 OP3 020156R 002 S.FTYP= 000002 BUFSZ 017074R 002 F.FVER= 000120 LP.AL = 000011 OP3ERR 001364R 004 S.NFEN= 000020 CHKDON 001146R 004 F.HIBK= 000004 LP.FL = 000005 OP3L = 000044 S1 000772R 004 CLEAR 001612R 004 F.LUN = 000042 LP.GID= 000003 OP4 020222R 002 TALLOC 000026R 002 CLOSUP 001162R 004 F.MBCT= 000054 LP.LM = 000012 OP4ERR 001422R 004 TB 017256R 002 CLRBUF 002350R 004 F.MBC1= 000055 LP.NOT= 000013 OP4L = 000050 TBDSP 017236R 002 COMP 000672R 004 F.MBFG= 000056 LP.UID= 000003 OUT 002214R 004 TBFDB 017076R 002 DATE 020545R 002 F.NRBD= 000024 LP.US = 000011 OUTBUF 017314R 002 TBL = 000010 DEFUIC= 000056 F.NREC= 000030 MAX = 000002 OUTFIL 002304R 004 TFILES 000032R 002 DFLAG 021074R 002 F.OVBS= 000030 N = 000377 OVR 020423R 002 TMP 021100R 002 DONE 021076R 002 F.RACC= 000016 NEWFDB 017530R 002 OVRFLO 001554R 004 TOTALS 000016R 002 DSTATS 002022R 004 F.RATT= 000001 NEWL 000032R 004 OVRL = 000041 TUSED 000022R 002 DT 016666R 002 F.RCNM= 000034 NEWONE 020721R 002 PAR$$$= 000027 UEND = 016656R 002 EOF 000502R 004 F.RCTL= 000017 NEWUIC 000742R 004 QUIT 020464R 002 UFREE 016656R 002 EXIT 001246R 004 F.RSIZ= 000002 NME = 000012 QUITL = 000022 UIC 020272R 002 FD.BLK= ****** GX F.RTYP= 000000 NODE 000272R 004 Q.IOAE= 000012 UICERR 001516R 004 FD.CR = ****** GX F.SEQN= 000100 NODPTR 021110R 002 Q.IOEF= 000006 UICL = 000055 FILEND 002306R 004 F.SPDV= 000072 NODSZ = 000016 Q.IOFN= 000002 UID = 000000 FILES 000014R 002 F.SPUN= 000074 NOLIM 020711R 002 Q.IOLU= 000004 UNODES 007016R 002 FIL1 021052R 002 F.STBK= 000036 NOLIML= 000010 Q.IOPL= 000014 USAGE 000000R 004 FLF = 000010 F.UNIT= 000136 NOTE1 020767R 002 Q.IOPR= 000007 USD1 021024R 002 FORMAT 001006R 004 F.URBD= 000020 NOTPTR 021112R 002 Q.IOSB= 000010 USED 000004R 002 FO.RD = ****** GX F.VBN = 000064 NXTFIL 002216R 004 RDERR 001460R 004 USER 000002R 002 FO.WRT= ****** GX F.VBSZ= 000060 NXTINT 002062R 004 RECSIZ= 000026 USERS = 000620 FUIC 021102R 002 GEND = 007016R 002 N.AL = 000010 REMOVE 020734R 002 USF = 000004 F.ACTL= 000076 GETDAT 001664R 004 N.DID = 000024 RERR 020347R 002 USR1 021015R 002 F.ALOC= 000040 GETUIC 001756R 004 N.DVNM= 000032 RERRL = 000054 $CBDMG= ****** GX F.BBFS= 000062 GID = 000001 N.FID = 000000 RPT 020044R 002 $CBOMG= ****** GX F.BDB = 000070 GREEDY 020676R 002 N.FL = 000014 RPTL = 000011 $CDDMG= ****** GX F.BGBC= 000057 GROUP 000000R 002 N.FNAM= 000006 RSX11M= 000001 $CDTB = ****** GX F.BKDN= 000026 GRPPTR 021106R 002 N.FTYP= 000014 R.FIX = ****** GX $COTB = ****** GX F.BKDS= 000020 GRP1 021007R 002 N.FVER= 000016 R.VAR = ****** GX $$$ARG= 000003 F.BKEF= 000050 GTABLE 000034R 002 N.ID = 000002 SAME 000760R 004 $$$OST= 000014 F.BKP1= 000051 HEADER 020506R 002 N.NEXT= 000022 SCAN 001620R 004 $$$T1 = 000067 F.BKST= 000024 HEADL = 000056 N.PTR = 000000 SKIP2 021116R 002 $.$EDB 000000R 005 F.BKVB= 000064 HEADR 002370R 004 N.STAT= 000020 SKIP2L= 000003 .CLOSE= ****** G F.CHR = 000075 HEAD2 020564R 002 N.UNIT= 000034 SQBR 016660R 002 .DELET= ****** G F.CNTG= 000034 HEAD2L= 000112 N.US = 000004 SQSCAN 000104R 004 .FSRCB= ****** G F.DFNB= 000046 INBUF 017266R 002 OF 016662R 002 SY 017252R 002 .GET = ****** G F.DSPT= 000044 IO.WVB= ****** GX OLD 017516R 002 SYL = 000004 .OPEN = ****** G F.DVNM= 000134 IUIC 021104R 002 OLDDSP 017502R 002 SYSLUN= 000002 .PUT = ****** G F.EFBK= 000010 JMPBCK 000456R 004 OLDFDB 017342R 002 S.BFHD= 000020 ...PC1= 017670R 002 F.EFN = 000050 LASTGR 021114R 002 OLDL = 000011 S.FATT= 000016 ...PC2= 020030R 002 F.EOBB= 000032 LDLPBF 002466R 004 OPN 020056R 002 S.FDB = 000140 ...TPC= 000020 F.ERR = 000052 LDSUMM 002750R 004 OPNERR 001254R 004 . ABS. 000000 000 000000 001 DATA 021122 002 $$FSR1 004100 003 CODE 003132 004 $$ERP 000030 005 ERRORS DETECTED: 0 DISK USAGE SUMMARY MACRO M1110 18-APR-79 04:14 PAGE 15-2 SYMBOL TABLE VIRTUAL MEMORY USED: 5308 WORDS ( 21 PAGES) DYNAMIC MEMORY: 6148 WORDS ( 23 PAGES) ELAPSED TIME: 00:02:15 USAGE,USAGE/-SP=USAGE