EXTERNALROUTINE  VIEWLOG(STRING (255)ACT)
      DYNAMICROUTINESPEC  C 
CLEAR(STRING (255)S)
      SYSTEMROUTINESPEC  C 
CONNECT(STRING (31)F, INTEGER  MOD, HOL, PRO, RECORDNAME  R, C 
      INTEGERNAME  FLAG)
      DYNAMICROUTINESPEC  C 
COPY2(STRING (255)S)
      EXTERNALINTEGERFNSPEC  C 
DDELAY(INTEGER  N)
      DYNAMICROUTINESPEC  C 
DEFINE(STRING (255)S)
      SYSTEMROUTINESPEC  C 
OUTFILE(STRING (31)F, INTEGER  LEN, MAX, PRM, INTEGERNAME  ADR, FLAG)
      EXTERNALROUTINESPEC  C 
PERMIT(STRING (255)S)
      EXTERNALROUTINESPEC  C 
PROMPT(STRING (255)S)
      EXTERNALROUTINESPEC  C 
VIEW(STRING (255)S)
!
!
!
STRING (255)Z, F
INTEGER  N, FLAG, A, J
!
!
!
RECORDFORMAT  RF(INTEGER  ADR, TYPE, START, END)
RECORD  R(RF)
RECORDFORMAT  LF(INTEGER  SEMA, I, MAX, STRING (63)ARRAY  R(0:126))
RECORDNAME  L(LF)
!
!
!
ROUTINE  RSTRING(STRINGNAME  S)
INTEGER  I
      S = ""
      UNTIL  I = NL CYCLE 
         READSYMBOL(I)
         S = S . TOSTRING(I)
      REPEAT 
      LENGTH(S) = LENGTH(S) - 1
END 
!
!
!
      F = "VIEWLOG"
      -> TEST
PROMPT:
      PROMPT("Action: ")
      RSTRING(ACT)
TEST:
      -> CREATE IF  ACT -> ("CRE") . Z
      -> PRINT IF  ACT -> ("PR") . Z
      -> ALL IF  ACT -> ("ALL") . Z
      -> PROMPT
!
CREATE:
      OUTFILE(F, 8192, 0, 0, A, FLAG)
!      PERMIT(F.",,WR")
      L == RECORD(A+32)
!
      L_SEMA = -1
      L_I = 0
      L_MAX = 126
      RETURN 
PRINT:
      CONNECT(F, 11, 0, 0, R, FLAG)
      A = R_ADR + 32
      L == RECORD(A)
      J = 0
      N = L_I
      L_I = 0
      DEFINE("61,T#VIEWLOG,500")
      SELECTOUTPUT(61)
      WHILE  J < N CYCLE 
         PRINTSTRING(L_R(J))
         NEWLINE
         J = J + 1
      REPEAT 
      L_SEMA = -1
!
      SELECTOUTPUT(0)
      CLOSESTREAM(61)
      CLEAR("61")
      COPY2("T#VIEWLOG,ALLVIEWLOGS-MOD")
      RETURN 
ALL:
      VIEW("ALLVIEWLOGS")
END 
ENDOFFILE