On Thu, 16 Feb 1995 14:58:01 EST Ben Chi said:
>The only problem with this method is that LISTSERV may not have the
>disk accessed. In that case, I suppose you could TELL LISTSERV CMS
>ACCESS nnn x . Then ERASE, as you describe above, and finally nuke
>the database pointers which aren't any good any more:
>TELL LISTSERV CMS ERASE listname DBNAMES x
>TELL LISTSERV CMS ERASE listname DBINDEX x
>The next time someone does an LDBASE against the list these files will
>automatically be rebuilt.
For those of you with CMS PIPES, I use the following exec to purge logs. The
SVCPSET and RSCPSET execs are homegrowns which save and restore CP SET
settings, so that I don't trash the environment. I encourage the disk to be
accessed by doing a DB REFRESH early in the exec. While this could
theoretically fail, it's been pretty reliable so far.
Dennis
-----------------------------------------------------------------------------
/* PURGELOG EXEC, BOONE, 11/08/94
Purge logs from Listserv disks using various trickery */
/* Modifications:
11/08/94 Boone Initial coding
End Modifications */
address command
parse arg listname logstowhack junk
if (length(junk) ^= 0) | (length(listname) = 0) then do
say 'usage: PURGELOG listname logstowhack'
exit 1
end
if logstowhack = 0 then
logstowhack = 1
listname = translate(listname)
me = userid()
'EXEC SVCPSET'
'CP SET MSG IUCV'
'CP MSG LISTSERV DB REFRESH' listname
'PIPE STARMSG |',
'TOLABEL 00000001LISTSERV* Database' listname||'|',
'CONS'
say 'The available log files are:'
'CP MSG LISTSERV CMS PIPE CMS L' listname 'LOG* * (DATE |',
'SPEC /MSG' me ' / NEXT 1-* NEXT | CP'
'PIPE STARMSG |',
'TOLABEL 00000001LISTSERV* Return code|',
'DROP FIRST 1 |',
'LOCATE /00000001LISTSERV/ |',
'SPEC 17-* NEXT |',
'SORT |',
'STEM files. |',
'CONS'
if files.0 = 0 then do
say 'No log files currently available for list' listname
signal exitgracefully
end
if files.0 < logstowhack then do
say 'There are only' files.0 'logs on the disk'
signal exitgracefully
end
say 'Ok to purge the following files?'
do i=1 to logstowhack
say ' ' files.i
end
say 'Enter Y or N:'
parse upper pull ynresp
if length(ynresp) = 0 then
signal exitgracefully
ynresp = substr(ynresp, 1, 1)
if ynresp = 'Y' then do i=1 to logstowhack
parse var files.i fn ft fm junk
'CP MSG LISTSERV CMS SENDFILE' fn ft fm me
'PIPE STARMSG |',
'TOLABEL 00000001LISTSERV* Return code|',
'SPEC 17-* NEXT |',
'CONS'
'CP MSG LISTSERV CMS ERASE' fn ft fm
'PIPE STARMSG |',
'TOLABEL 00000001LISTSERV* Return code|',
'SPEC 17-* NEXT |',
'CONS'
end
'CP MSG LISTSERV DB REFRESH' listname
exitgracefully:
'EXEC RSCPSET'
-----------------------------------------------------------------------------
|