!***********************************************************************
!*
!* 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