* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                             *
* TIMELOGZ.CMD                                                                *
* This command file will, upon the user's request, print all the login and    *
* logout times for all the users.  This is for the the user's convenience. If *
* the user would rather not have2 this list, he/she can simply skip it. This  *
* command file is called by TIMELOG.SUB and should turn control over to       *
* TIMELOG.CMD for a report menu.                                              *
*                                                                             *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                 *                                           *
*  Written By Michael Burch       *  Copyright (C) G&G Engineering 1982       *
*  For Gifford Computer Systems   *  Reproduction or modification of this     *
*  Date: November 17, 1982        *  program, in whole or in part, only with  *
*  Last Revision: 04/12/83        *  written permission from G&G Engineering  *
*                                 *                                           *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
SET TALK OFF
ERASE
STORE 1 TO scr:line
SET INTENSITY OFF
@ scr:line,1 SAY 'You now have the option of printing a report of the raw TIMELOG data'
STORE scr:line+1 TO scr:line
@ scr:line,1 SAY 'to a file. This file may then be printed or edited at your convenience.'
STORE scr:line+1 TO scr:line
@ scr:line,1 SAY 'This step is not mandatory. You may skip this step by inputting "N" or'
STORE scr:line+1 TO scr:line
@ scr:line,1 SAY 'you may continue by inputting "Y" '
STORE scr:line+2 TO scr:line
STORE ' ' TO go
DO WHILE go <> 'Y' .AND. go <> 'N'
   @ scr:line,1 SAY 'Input Y or N here ' GET go PICTURE '!'
   READ
ENDDO
STORE scr:line+3 TO scr:line
IF go = 'N'
   DO timelog
ENDIF
USE timelogx
STORE 'SunMonTueWedThuFriSat' TO weekday
STORE total:sec TO max
STORE total:sec TO min
STORE time:hr+':'+time:min+':'+time:sec TO max:time
STORE time:hr+':'+time:min+':'+time:sec TO min:time
STORE 0 TO kount
STORE 0 TO total:time
STORE '        ' TO output
DO WHILE output = '        '
   @ scr:line,1 SAY 'Input the name of the file to which this report will be written ' GET output PICTURE '!!!!!!!!'
   READ
   STORE scr:line+1 TO scr:line
   IF output <> '        ' .OR. @('.',output)=0
      STORE TRIM(output)+'.TXT' TO filechek
      IF FILE(filechek)
         STORE ' ' TO killit
         DO WHILE killit <> 'Y' .AND. killit <> 'N'
            @ scr:line,1 SAY output+' already exists. Overwrite it? (Y/N) ' GET killit PICTURE '!'
            READ
         ENDDO
         STORE scr:line+2 TO scr:line
         IF killit = 'Y'
            DELETE FILE &filechek
         ELSE
            STORE scr:line-3 TO scr:line
            STORE '        ' TO output
         ENDIF
      ENDIF
   ELSE
      STORE scr:line-1 TO scr:line
      STORE '        ' TO output
   ENDIF
ENDDO
SET ALTERNATE TO &OUTPUT
@ scr:line,1 SAY 'Raw TIMELOG data is now being written to '+filechek
SET INTENSITY ON
SET CONSOLE OFF
SET ALTERNATE ON
?
? 'Account   Device/Name         Log In                 Log Out           Elapsed'
? '========= ============ =====================  =====================       Time'
?
STORE 3 TO line
DO WHILE .NOT. EOF
   IF line > 56
      DO WHILE line < 66
         ?
         STORE line+1 TO line
      ENDDO
      ? 'Account   Device/Name         Log In                 Log Out           Elapsed'
      ? '========= ============ =====================  =====================       Time'
      ?
      STORE 3 TO line
   ENDIF
   ? name+' '+con+'/'+tty+' '+hour:i+':'+min:i+':'+sec:i+' '+$(weekday,VAL(week:i)*3+1,3)
   ?? month:i+'/'+day:i+'/'+$(year:i,3,2)+'  '+hour:o+':'+min:o+':'+sec:o
   ?? $(weekday,VAL(week:o)*3+1,3)+' '+month:o+'/'+day:o+'/'+$(year:o,3,2)
   ?? time:hr+':'+time:min+':'+time:sec
   STORE line+1 TO line
   STORE kount+1 TO kount
   STORE total:time+total:sec TO total:time
   IF total:sec < min
      STORE total:sec TO min
      STORE time:hr+':'+time:min+':'+time:sec TO min:time
   ENDIF
   IF total:sec > max
      STORE total:sec TO max
      STORE time:hr+':'+time:min+':'+time:sec TO max:time
   ENDIF
   SKIP
ENDDO
STORE STR(total:time/3600,4)+':' TO tot:time
STORE tot:time+STR((total:time-INT(total:time/3600)*3600)/60,2)+':' TO tot:time
IF $(tot:time,6,1) = ' '
   STORE $(tot:time,1,5)+'0'+$(tot:time,7,2) TO tot:time
ENDIF
STORE tot:time+STR(total:time-INT(total:time/60)*60,2) TO tot:time
IF $(tot:time,9,1) = ' '
   STORE $(tot:time,1,8)+'0'+$(tot:time,10,2) TO tot:time
ENDIF
STORE total:time/kount TO total:time
STORE STR(total:time/3600,4)+':' TO avg:time
STORE avg:time+STR((total:time-INT(total:time/3600)*3600)/60,2)+':' TO avg:time
IF $(avg:time,6,1) = ' '
   STORE $(avg:time,1,5)+'0'+$(avg:time,7,2) TO avg:time
ENDIF
STORE avg:time+STR(total:time-INT(total:time/60)*60,2) TO avg:time
IF $(avg:time,9,1) = ' '
   STORE $(avg:time,1,8)+'0'+$(avg:time,10,2) TO avg:time
ENDIF
?
? 'Number of "log in"s =      '+STR(kount,5)+'            '+'Shortest elapsed time = '+ min:time
? 'Total elapsed time  = '+tot:time+'             '+'Longest elapsed time = '+max:time
? '                                             Average elapsed time = '+avg:time
STORE line+4 TO line
DO WHILE line < 66
   ?
   STORE line+1 TO line
ENDDO 
SET ALTERNATE OFF
SET CONSOLE ON
DO timelog
