10 !list usage summary for UAS 15 ! This program can be used as a starting point for a more 16 !sophisticated billing system 20 map1 usrnam,s,8 30 map1 etime,s,6 40 map1 ctime,s,6 50 map1 hhmmss,s,6 60 70 map1 hdr,s,80,"User name Elapsed CPU Cost" 80 map1 fmt,s,80,"\234567\ \234567\ \234567\ $$####.##" 90 100 print "Printing ... Please wait" 110 open #99,"dsk0:usage.tim[1,2]",input 120 input #99,ecost,ccost 130 close #99 140 open #1,"dsk0:usage[1,2]",input 150 open #2,"usage.prt",output 160 input #1,dat$: dat$=dat$[1,2]+"/"+dat$[3,4]+"/"+dat$[5,6] 170 print #2,"System time usage summary for "dat$ 180 print #2 190 print #2,hdr 195 200 read'next: 210 input #1,usrnam,etime,ctime 220 if eof(1)=0 then call process: goto read'next 230 print #2,using fmt,"","","",grandtot/100 240 close #1 250 close #2 260 xcall spool,"usage.prt" 270 end 280 290 !process this user 300 process: 310 et$ = etime[1,2]+":"+etime[3,4]+":"+etime[5,6] 320 ct$ = ctime[1,2]+":"+ctime[3,4]+":"+ctime[5,6] 330 call cost 340 if total=0 then print #2,usrnam: return 350 print #2 using fmt,usrnam,et$,ct$,total/100 360 grandtot = grandtot + total 370 return 380 390 !Compute the cost of the time used 400 !values used: 410 ! ecost - elapsed time cost in cents/second 420 ! ccost - CPU time cost in cents/second 430 ! total - final result in cents 440 cost: 450 hhmmss = etime: call getsec 460 total = seconds * ecost 470 hhmmss = ctime: call getsec 480 total = total + seconds * ccost 490 return 500 510 !get value of time - convert HHMMSS to SECONDS 520 getsec: 530 seconds = hhmmss[1,2]*3600 + hhmmss[3,4]*60 + hhmmss[5,6] 540 return