FTN,L 
C     NAME:   AUTOR 
C     SOURCE: 92067-18005 
C     RELOC:  92067-16005 
C     PGMR:   G.A.A.
C             E.J.W.,750505 
C             D.L.S.,760622 
C             E.J.W.,771219 
C 
C 
      PROGRAM AUTOR(2,1),92067-16005 REV.1805 771219
      DIMENSION ITM(3),ITMX(5)
      EQUIVALENCE (ITM(1),REG),(ITM(2),IB)
C 
C                                  SCAN THE LU'S TO FIND THE LU FOR 
C                                  THE PFAIL DRIVER 
      DO 5 I= 1,64
C                                  DO A STATUS CALL 
C 
           CALL EXEC(100015B,I,IEQT5,IEQT4) 
C 
C                                  IGNOR UNDEFINED,AND UNASSIGNED LU'S. 
           GO TO 5
C                                  IS DRIVER TYPE EQUAL TO 43?
C 
 600       IF (IAND(IEQT5,37400B)-21400B)5,15,5 
C 
C                                  YES, IS THE SELECT CODE=4? 
C 
  15            IF (IAND(IEQT4,77B)-4)5,17,5
C 
   5  CONTINUE
C                                  POWER FAIL LU NOT FOUND
      WRITE (1,700) 
 700  FORMAT("POWER FAIL LU NOT FOUND.  TIME OF POWER FAIL UNKNOWN")
C 
C                                  SET TO USE LU ZERO 
      LU=0
      GO TO 20
C                                  LU FOUND SET TO GET FAIL TIME
  17  LU=I
C                                  CALL THE PFAIL DVR TO GET FAIL TIME
   20 CALL EXEC(1,LU,ITM,3) 
C                                  CONVERT THE DOUBLE INTEGER TO: 
C                                  HR,MIN,SEC.TENS OF MS
      CALL TMVAL(ITM,ITMX)
C                                  GET THE YEAR OFFSET FROM DAYS
      IB=ITM(3)/365 
C                                  ADD THE BASE YEAR TO GET ACTUAL YEAR 
      IY=IB+1970
C                                  SUBTRACT THE YEARS TO GET DAYS AND 
C                                  CORRECT FOR DAY ZERO.
      ID=ITM(3)-IB*365+1
C                                  FLOAT THE TENS OF MS VALUE 
      REG=ITMX(1) 
C                                  COMPUTE SECONDS INTO ONE FLOATING WORD 
      REG=REG/100.+FLOAT(ITMX(2)) 
C                                  *****************************
C                                  THE FOLLOWING DO LOOP MAY BE 
C                                  MODIFIED IF DESIRED. 
C                                  IT SERVES TWO FUNCTIONS: 
C                                  1) BY SENDING A MESSAGE TO EACH TTY
C                                     THE DRIVER WILL RESET THE TTY 
C                                     INTERFACE TO REENABLE ANY 
C                                     TERMINALS (MUST ISSUE A STC). 
C                                  2) ANY USERS AT THE TERMINALS ARE
C                                     INFORMED THAT THE LAST LINE MAY 
C                                     NOT HAVE BEEN TRANSMITTED 
C                                     CORRECTLY.
C                                  *****************************
C 
C                                  FORMAT TO PRINT THE TIME 
C 
 40   FORMAT("POWER FAILED AT "I2":"I2":"F6.3" ON DAY "I3" OF "I4)
C 
C                                  SCAN FOR ALL THE TTY TYPE DEVICES
      DO 30 I=1,64
C                                  DO STATUS CALL 
           CALL EXEC(100015B,I,IEQT5,ISTA2,ISTA3) 
C                                  IGNOR UNDEFINED,AND UNASSIGNED LU'S
           GO TO 30 
C                                  CHECK IF TYPE 0 DEVICE (I.E. A TTY)
    1      IF(IAND(IEQT5,37400B))25,2,25
C                                  CHECK IF TYPE 5 DEVICE 
 25        IEQT5=IEQT5-2400B
           IF(IAND(IEQT5,37400B))30,27,30 
C                                  IF TYPE 5 DEVICE, CHECK TO SEE IF
C                                  SUBCHANNEL 0(I.E. A CONSOLE) 
 27        IF(IAND(ISTA3,37B))30,2,30 
C                                  IF FIND A DEVICE, WRITE TIME ON IT.
    2           WRITE(I,40)ITMX(4),ITMX(3),REG,ID,IY
   30 CONTINUE
C                                  *****************************
C                                  USER POWER FAIL RECOVERY CODE
C                                  SHOULD BE ADDED HERE.
C                                  REMEMBER IF POWER FAILS
C                                  WHILE IN THIS CODE IT
C                                  MAY RUN FOR A FEW
C                                  SECONDS AFTER POWER IS 
C                                  RESTORED AND THEN BE ABANDONED 
C                                  AND RESTARTED FROM THE 
C                                  TOP. 
C                                  *****************************
C 
C                                  SECOND CALL ON PFAIL ROUTINE RESETS
C                                  TO SAVE TIME ON NEXT FAILURE.
      CALL EXEC(1,LU,ITM,3) 
      STOP
      END 
      END$
                                                                                                    