!***********************************************************************
!*
!*          Program to 'forget' journal for session so far
!*
!*       Copyright R.D. Eager   University of Kent   MCMLXXIX
!*
!***********************************************************************
!
!
!***********************************************************************
!*
!*          Constants
!*
!***********************************************************************
!
CONSTSTRING (1) SNL = "
"
!
!
!***********************************************************************
!*
!*          Record formats
!*
!***********************************************************************
!
RECORDFORMAT  HF(INTEGER  DATAEND,DATASTART,FILESIZE,FILETYPE,C 
                 SUM,DATETIME,FORMAT,RECORDS)
RECORDFORMAT  ITF(INTEGER  INBASE,INLENGTH,INPOINTER,OUTBASE,C 
                  OUTLENGTH,OUTPOINTER,OUTBUSY,OMWAITING,INTTWAITING,C 
                  JNBASE,JNCUR,JNMAX,LASTFREE,SPARE5,SPARE6,SPARE7)
!
!
!***********************************************************************
!*
!*          Subsystem references
!*
!***********************************************************************
!
SYSTEMROUTINESPEC  CONSOLE(INTEGER  EP,INTEGERNAME  START,LEN)
SYSTEMSTRINGFNSPEC  FAILUREMESSAGE(INTEGER  MESS)
EXTERNALROUTINESPEC  SET RETURN CODE(INTEGER  I)
!
!
!***********************************************************************
!*
!*          Service routines
!*
!***********************************************************************
!
ROUTINE  FAIL(INTEGER  N)
SELECTOUTPUT(0)
PRINTSTRING(SNL."FORGET fails - ".FAILUREMESSAGE(N))
SET RETURN CODE(N)
STOP 
END ;   ! of FAIL
!
!
!***********************************************************************
!*
!*          F O R G E T
!*
!***********************************************************************
!
EXTERNALROUTINE  FORGET(STRING (255) PARMS)
INTEGER  AITBUFFER,AIOSTAT,CONAD
RECORDNAME  R(HF)
RECORDNAME  IT(ITF)
!
SET RETURN CODE(0)
IF  PARMS # "" THEN  FAIL(263);   ! Wrong number of parameters
!
CONSOLE(13,AITBUFFER,AIOSTAT);   ! Get vital addresses
RETURN  IF  AITBUFFER = 0;   ! Not interactive
IT == RECORD(AITBUFFER)
CONAD = IT_JNBASE;   ! Address of journal file
RETURN  IF  CONAD = 0;   ! No journal
IF  CONAD < 0 THEN  START 
   CONAD = -CONAD;   ! Turn journal back on
   IT_JNBASE = CONAD
FINISH 
!
R == RECORD(CONAD);  ! Map journal file header
R_DATASTART = 32;   ! Reset header for safety
R_DATAEND = 32
IT_JNCUR = CONAD + 32
BYTEINTEGER(IT_JNMAX-1) = 0;   ! Kill wraparaound
END ;   ! of FORGET
ENDOFFILE