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