From: jonathan@ucsvc.ucs.unimelb.edu.au
Newsgroups: news.software.anu-news
Subject: NEWSSKIM_ALT.1-OF-7
Date: 15 Oct 92 03:07:55 GMT
Organization: The University of Melbourne

$! ------------------ CUT HERE -----------------------
$ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))'
$!
$! This archive created by VMS_SHARE Version 8.1
$!   On  8-OCT-1992 14:42:02.63   By user JONATHAN    
$!
$! The VMS_SHARE software that created this archive
$!    was written by  Andy Harper, Kings College London UK
$!    -- September 1992
$!
$! Credit is due to these people for their original ideas:
$!    James Gray, Michael Bednarek 
$!
$!+ THIS PACKAGE DISTRIBUTED IN 7 PARTS, TO KEEP EACH PART
$!  BELOW 30 BLOCKS
$!
$! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER
$! AND EXECUTE AS A COMMAND PROCEDURE  (  @name  )
$!
$! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING:
$!       1. README.TXT;1
$!       2. NEWSSKIM_ALT.COM;1
$!       3. FORCEX.CLD;1
$!       4. FORCEX.EXE;1
$!       5. FORCEX.HLP;1
$!       6. FORCEX.MAR;1
$!       7. LIB_DAY.EXE;1
$!       8. LIB_DAY.PAS;1
$!       9. SETUSER.MAR;1
$!
$set="set"
$set symbol/scope=(nolocal,noglobal)
$f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID"))
$e="write sys$error  ""%UNPACK"", "
$w="write sys$output ""%UNPACK"", "
$ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!"
$ ve=f$getsyi("version")
$ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start
$ e "-E-OLDVER, Must run at least VMS 4.4"
$ v=f$verify(v)
$ exit 44
$unpack: subroutine ! P1=filename, P2=checksum, P3=attributes
$ if f$search(P1) .eqs. "" then $ goto file_absent
$ e "-W-EXISTS, File ''P1' exists. Skipped."
$ delete 'f'*
$ exit
$file_absent:
$ if f$parse(P1) .nes. "" then $ goto dirok
$ dn=f$parse(P1,,,"DIRECTORY")
$ w "-I-CREDIR, Creating directory ''dn'"
$ create/dir 'dn'
$ if $status then $ goto dirok
$ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped."
$ delete 'f'*
$ exit
$dirok:
$ w "-I-UNPACK, Unpacking file ''P1'"
$ n=P1
$ if P3 .nes. "" then $ n=f
$ if .not. f$verify() then $ define/user sys$output nl:
$ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='n'
PROCEDURE GetHex LOCAL x1,x2;x1:=INDEX(t,ERASE_CHARACTER(1))-1;x2:=INDEX(t,
ERASE_CHARACTER(1))-1;RETURN 16*x1+x2;ENDPROCEDURE;
PROCEDURE SkipPartsep LOOP EXITIF INDEX(ERASE_LINE,"-+-+-+-+-+-+-+-+")=1;
ENDLOOP;ENDPROCEDURE;
PROCEDURE ExpandChar CASE CURRENT_CHARACTER FROM ' ' TO 'z' ["`"]
:ERASE_CHARACTER(1);COPY_TEXT(ASCII(GetHex));[" "]:ERASE_CHARACTER(1);[
OUTRANGE,INRANGE]:MOVE_HORIZONTAL(1);ENDCASE;ENDPROCEDURE;
PROCEDURE ProcessLine s:=ERASE_CHARACTER(1);LOOP EXITIF CURRENT_OFFSET>=LENGTH(
CURRENT_LINE);ExpandChar;ENDLOOP;IF s="V" THEN APPEND_LINE;ENDIF;ENDPROCEDURE;
PROCEDURE AdvanceLine MOVE_HORIZONTAL(-CURRENT_OFFSET);MOVE_VERTICAL(1);
ENDPROCEDURE;PROCEDURE Decode POSITION(BEGINNING_OF(b));LOOP EXITIF MARK(NONE)=
END_OF(b);IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=1 THEN SkipPartSep;
ELSE ProcessLine;AdvanceLine;ENDIF;ENDLOOP;ENDPROCEDURE;SET(FACILITY_NAME,
"UNPACK");SET(SUCCESS,OFF);SET(INFORMATIONAL,OFF);t:="0123456789ABCDEF";f:=
GET_INFO(COMMAND_LINE,"file_name");b:=CREATE_BUFFER(f,f);Decode;WRITE_FILE(b,
GET_INFO(COMMAND_LINE,"output_file"));QUIT;
$ if p3 .eqs. "" then $ goto dl
$ open/write fdl &f
$ write fdl "RECORD"
$ write fdl P3
$ close fdl
$ w "-I-CONVRFM, Converting record format to ", P3
$ convert/fdl=&f &f-1 &P1
$dl: delete 'f'*
$ if P2 .eqs. "" then $ goto ckskip
$ checksum 'P1'
$ if checksum$checksum .nes. P2 then $ -
  e "-E-CHKSMFAIL, Checksum of ''P1' failed."
$ exit
$ckskip: e "-W-CHKSUMSKIP, checksum validation unavailable for ''P1'"
$ endsubroutine
$start:
$!
$ create 'f'
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20NEWS_ROOT:NEWSSKIM_ALT.COM
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20--------------------------
X
XThis`20VMS_SHARE`20package`20contains`20the`20latest`20version`20of
X
X`20`20NEWS_ROOT:NEWSSKIM_ALT.COM
X
XThis`20is`20an`20alternative`20News_Skim`20procedure`20provided`20with`20ANU-N
VEWS.
X
XThis`20package`20also`20contains`20some`20supporting`20files:
X
X`20`20LIB_DAY.PAS`20and`20LIB_DAY.EXE`09!`20Can`20be`20used`20"as`20is".
X
X`20`20SETUSER.MAR`09`09`09!`20MUST`20be`20modified`20and`20assembled`20locally
V.
X
X`20`20FORCEX.CLD,`20FORCEX.EXE,`20FORCEX.HLP`20and`20FORCEX.MAR`09!`20Can`20be
V`20used`20"as`20is".
X
XThe`20supporting`20files`20are`20useful`20in,`20but`20not`20essential`20to,
V`20the`20running`20of
XNEWSSKIM_ALT.COM.`20`20Only`20minor`20changes`20to`20the`20procedure`20may`20b
Ve`20required`20if
Xthe`20supporting`20programs`20are`20not`20used.`20`20The`20supporting`20files
V`20are`20(hopefully)
Xself-explanatory.
X
XComments,`20criticisms,`20bug-fixes,`20improvements,`20etc.`20are`20always`20w
Velcome.
X
X------------------------------------------------------------------------------
V--
XJonathan`20Ridler,`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20Telephone:`20`20+61`203`20344`207994
XInformation`20Technology`20Services,`20`20`20`20`20Fax:`20`20`20`20`20`20`20
V`20+61`203`20347`204803
XThe`20University`20of`20Melbourne,`20`20`20`20`20`20`20`20`20Internet:`20jonat
Vhan@ucsvc.its.unimelb.edu.au
XParkville,`20Vic.,`20AUSTRALIA,`203052.`20`20`20`20PSI:`20`20`20`20`20`2005052
V3343000305::jonathan
X------------------------------------------------------------------------------
V--
$ call unpack README.TXT;1 1213814139 ""
$!
$ create 'f'
X$!----------------------------------------------------------------------------
V--
X$!
X$!`20`20N`20E`20W`20S`20S`20K`20I`20M`20:`20`20`20Perform`20regular`20maintena
Vnce`20tasks`20for`20the`20Usenet`20News
X$!
X$!`20`20>>>>>>`20`20`20`20MUST`20RUN`20from`20`20`20`20N`20E`20W`20S`20M`20G
V`20R`20`20`20`20account`20`20`20`20<<<<<<
X$!
X$!----------------------------------------------------------------------------
V--
X$`20verify`20=`20'f$verify(0)'
X$!----------------------------------------------------------------------------
V--
X$!Author:
X$!`20`20`20Jonathan`20Ridler,
X$!`20`20`20Information`20Technology`20Services,
X$!`20`20`20The`20University`20of`20Melbourne,
X$!`20`20`20Parkville,`20Vic.,`20AUSTRALIA,`203052.
X$!
X$!`20`20`20Internet:`20jonathan@ucsvc.its.unimelb.edu.au
X$!`20`20`20PSI:`20`20`20`20`20`20050523343000305::jonathan
X$!............................................................................
V..
X$!
X$!`20`20Origin:`20`20Derived`20from`20a`20similar`20procedure`20by`20Geoff`20H
Vuston.
X$!
X$!`20`20**`20NOTE`20**`20`20This`20procedure`20contains`20SITE-SPECIFIC`20code
V`20which`20should`20be
X$!`09`09modified`20as`20necessary`20for`20each`20site`20using`20this`20procedu
Vre.
X$!`09`09Areas`20where`20SITE-SPECIFIC`20code`20occurs`20may`20be`20found`20by
V`20searching
X$!`09`09this`20procedure`20for`20occurences`20of`20the`20string`20"SITE-SPECIF
VIC".
X$!
X$!`09`09**`20`20This`20procedure`20uses`20VMS`20Version`205`20DCL`20constructs
V,`20and`20`20**
X$!`09`09**`20`20is`20appropriate`20for`20VMS`20NEWS`20Version`206.1B4`20(or
V`20later?)`20`20**
X$!
X$!`20`20The`20mail`20destination/username`20"usenet"`20may`20be`20either`20a
V`20mail`20alias`20set`20up
X$!`20`20using`20VMS`20MAIL`20(MAIL>`20set`20forward`20/user=usenet),`20or`20a
V`20logical`20name,`20or`20a
X$!`20`20legitimate`20username.`20`20Whichever`20is`20used,`20it`20is`20assumed
V`20to`20have`20been`20set`20up
X$!`20`20outside`20of`20this`20procedure.
X$!
X$!`20`20Required`20local`20file:
X$!`09This`20procedure`20requires`20a`20locally`20created`20file`20called
X$!`09`09NEWS_MANAGER:NODE_INFO.DAT
X$!`09which`20contains`20address`20information`20for`20MAIL`20and`20NNTP.
X$!`09See`20the`20"gosub"`20routine`20Get_Address`20for`20a`20description`20of
V`20this`20file.
X$!----------------------------------------------------------------------------
V--
X$!`20`20History:
X$!`0923-Mar-1989`09JER`09Original`20version.
X$!`0904-Jun-1990`09JER`09Major`20overhaul.
X$!`0927-Jul-1990`09JER`09Handle`20NNTP`20V6.0BR3.
X$!`0907-Aug-1990`09JER`09Changes`20to`20mailing`20addresses.
X$!`0913-Aug-1990`09JER`09Improve`20some`20error`20notification
X$!`0902-Oct-1990`09JER`09Minor`20changes.
X$!`0918-Jan-1991`09JER`09Add`20code`20to`20ensure`20skim`20at`20least`20once
V`20a`20day.
X$!`0904-Feb-1991`09JER`09Up`20priority.
X$!`0908-Feb-1991`09JER`09Enhance`20NNTP`20transmission`20code.
X$!`0915-Feb-1991`09JER`09Implement`20NEWS_STOP`20code`20to`20end`20gracefully.
V
X$!`09`09`09`09Also,`20add`20code`20to`20ensure`20convert`20once`20a`20week.
X$!`0901-Mar-1991`09JER`09Make`20NNTP`20asynchronous`20like`20MAIL.
X$!`0911-Mar-1991`09JER`09Get`20NNTP`20and`20MAIL`20addresses`20from`20a`20file
V.
X$!`0928-Mar-1991`09JER`09Ensure`20only`20one`20NNTP`20job`20per`20node.
X$!`0914-May-1991`09JER`09Added`20diskspace`20check.
X$!`0922-Jul-1991`09JER`09Changed`20SKIM`20/HISTORY`20to`2030`20days;`20etc.
X$!`0902-Aug-1991`09JER`09Added`20NEWS`20ADD`20of`20retry`20files`20`26`20Conve
Vrt`20BLATter!
X$!`0909-Aug-1991`09JER`09Changed`20use`20of`20purge`20to`20delete.
X$!`0910-Sep-1991`09JER`09Minor`20changes.
X$!`0906-Nov-1991`09JER`09Add`20/EXTENS`20to`20convert`20routine,`20`26`20post
V`20at`20start.
X$!`0915-Nov-1991`09JER`09Combine`20asynchronous`20post/NNTP`20procs`20into`20t
Vhe
X$!`09`09`09`09NEWSSKIM`20proc;`20add`20governing`20of`20batch`20adds.
X$!`0929-Nov-1991`09JER`09Fix`20a`20couple`20o'`20funnies!`20<8-`7D.`20`20Imple
Vment
X$!`09`09`09`09concurrent`20post/NNTP/add,`20etc..`20`20Misc.`20changes.
X$!`0915-Dec-1991`09JER`09Miscellaneous`20changes.
X$!`0916-Jan-1992`09JER`09Ensure`20stale`20log`20files`20are`20purged.
X$!`0903-Feb-1992`09JER`09Update`20skim`20/archive`20requirements.
X$!`0907-Feb-1992`09JER`09Allow`20forced`20convert.
X$!`0903-Aug-1992`09JER`09Minor`20changes.
X$!`0921-Sep-1992`09JER`09Handle`20convert`20or`20sort`20errors`20more`20sensib
Vly;
X$!`09`09`09`09Remove`20"beast"ly`20code!`20`20The`20death`20of`20the`20animal!
V
X$!`0908-Oct-1992`09JER`09Re-work`20POST/NNTP`20routines`20and`20shutdown`20han
Vdling
X$!****************************************************************************
V**
X$
X$`20set`20noon
X$`20set`20control`20=`20(Y,T)
X$
X$`20say`20:=`20write`20SYS$OUTPUT`09`09!`20`20Can`20use`20REQUEST`20if`20prefe
Vred.
X$
X$`20Version`20=`20"(V4.8d`2008-Oct-1992)"`09!`20`20Update`20this`20when`20chan
Vges`20are`20made.
X$
X$`20say`20"%NEWSSKIM`20''Version'`20started`20on`20''f$getsyi("NODENAME")'`20a
Vt`20''f$time()'"
X$`20set`20output_rate`20=`2000:00:20.0`09`09!`20`20Allow`20a`20close`20watch
V`20to`20be`20kept
X$
X$!`20Some`20SITE-SPECIFIC`20images`20-`20all`20are`20based`20on`20simple`20cal
Vls`20to`20system`20services.
X$
X$`20setuser`20:=`20$SYS_SYSTEM:SETUSER`09!`20`20Change`20username.
X$`20get_day_number`20:=`20$SYS_SYSTEM:LIB_DAY`09!`20`20Set`20symbol`20DAY_NUMB
VER`20using`20LIB$DAY.
X$
X$`20sysman`20:=`20$SYSMAN
X$`20define`20SYSMANINI`20NEWS_MANAGER:SYSMAN.INI`20`20!`20Simply`20"set`20envi
Vronment`20/cluster"
X$
X$!`20`20Hours`20at`20which`20to`20submit`20News_Skim`20(used`20only`20when`20.
Vnot.`20Every_Hour).
X$
X$`20Run_Times`20=`20"01,03,05,07,08,10,11,12,13,14,15,16,18,20,22"
X$
X$`20Every_Hour`20`20`20`20`20`20`20=`20`201`09`09`09!`20`20Run`20every`20hour
V`20?
X$`20Earliest_Convert`20=`2022`09`09`09!`20`20Earliest`20commencement`20to`20co
Vnvert`20db.
X$`20Latest_Convert`20`20`20=`20`207`09`09`09!`20`20Latest`20commencement`20to
V`20convert`20db.
X$`20Force_Convert`20`20`20`20=`20`200`09`09`09!`20`20Allow`20convert`20to`20be
V`20forced.
X$
X$`20Batch_Q`20=`20"SYS$CONTROL"`09`09!`20`20SITE-SPECIFIC`20batch`20queue.
X$`20Q_Chars`20=`20"/CHAR=(FASTVAX)"`09`09!`20`20SITE-SPECIFIC`20queue`20charac
Vteristics.
X$`20Holder`20`20=`20""`09`09`09`09!`20`20Either`20blank`20or`20"/HOLD"`20for
V`20resubmit.
X$
X$`20Resubmit`09=`201`09`09`09!`20`20Resubmit`20News_Skim`20?`20`20(Default`20=
V`20Yes)
X$`20Skim_News`09=`200`09`09`09!`20`20Skim`20the`20news`20database`20?
X$`20Extract_Mail`20`20=`200`09`09`09!`20`20Extract`20NEWSMGR`20mail`20messages
V`20?
X$`20Add_News`09=`200`09`09`09!`20`20Add`20accumulated`20news`20batches`20?
X$`20Post_News`09=`200`09`09`09!`20`20Post`20news`20to`20other`20sites`20?
X$`20NNTP_News`09=`200`09`09`09!`20`20NNTP`20news`20to`20other`20sites`20?
X$`20Convert_Db`09=`200`09`09`09!`20`20Convert`20News`20database`20?
X$`20Compress_Mail`09=`200`09`09`09!`20`20Compress`20NEWSMGR`20MAIL`20folder
V`20?
X$`20Special`09=`200`09`09`09!`20`20One-off`20set`20of`20commands`20?
X$`20Duplicate_Job`20=`200`09`09`09!`20`20Allow`20more`20than`20one`20News_Skim
V`20?
X$`20Report_Junk`09=`200`09`09`09!`20`20Check`20what's`20in`20JUNK`20newsgroup
V`20?
X$`20Guvner`20`20`20`20`20`20`20`20=`201`09`09`09!`20`20Cycle`20thru`20news`20i
Vn`20governed`20manner`20?
X$
X$`20Blat_Em`20`20`09`20`20`20`20`20=`20`201`09`09!`20`20Blat`20user`20processe
Vs`20running`20NEWS`20?
X$`20Mail_From_Usenet`20`20`20=`20`201`09`09!`20`20Send`20MAIL`20using`20userna
Vme`20"USENET"`20?
X$`20Notify_Failed_Mail`20=`20`201`09`09!`20`20Mail`20to`20USENET`20when`20MAIL
V`20fails`20?
X$`20Notify_Failed_NNTP`20=`20`201`09`09!`20`20Mail`20to`20USENET`20when`20NNTP
V`20fails`20?
X$`20Asynchronous_Post`20`20=`20`201`09`09!`20`20Post`20mail`20to`20sites`20asy
Vnchronously`20?
X$`20Asynchronous_NNTP`20`20=`20`201`09`09!`20`20NNTP`20news`20to`20sites`20asy
Vnchronously`20?
X$`20Postman`09`20`20`20`20`20=`20`200`09`09!`20`20Process`20is`20asynchronous
V`20post`20agent`20?
X$`20Postmaster`09`20`20`20`20`20=`20`200`09`09!`20`20Active`20MAIL`20agent`20?
V
X$`20NNTPman`09`20`20`20`20`20=`20`200`09`09!`20`20Process`20is`20asynchronous
V`20NNTP`20agent`20?
X$`20NNTPmaster`09`20`20`20`20`20=`20`200`09`09!`20`20Active`20NNTP`20agent`20?
V
X$`20Wait_Deliver`09`20`20`20`20`20=`20`200`09`09!`20`20Wait`20for`20delivery
V`20of`20mail`20and`20NNTP`20?
X$`20Max_Mail_Batches`20`20`20=`2060`09`09!`20`20Max.`20#`20of`20batches`20to
V`20send`20in`20one`20go.
X$
X$`20Disk_Warning_Limit`20=`2080000`09`09!`20`20Disk`20blocks`20below`20which
V`20issue`20warning
X$`20Disk_Suspend_Limit`20=`2030000`09`09!`20`20Disk`20blocks`20below`20which
V`20do`20not`20add.
X$
X$`20New_News`20=`200`09`09`09`09!`20Presume`20no`20new`20news`20was`20added.
X$
X$!`20`20If`20the`20account`20from`20which`20this`20is`20running`20(NEWSMGR?)
V`20is`20privileged,`20then
X$!`20`20ensure`20we`20run`20at`20least`20at`20interactive`20priority`20or`20be
Vtter!
X$
X$`20if`20f$privilege`20("ALTPRI")`20`20then`20`20set`20process`20/priority`20=
V`204
X$
X$`20Node_Search`20=`201`09`09`09!`20`20Search`20stream`20id`20for`20Post_News
X$`20File_Search`20=`202`09`09`09!`20`20Search`20stream`20id`20for`20Post_News
X$`20NNTP_Proto_Search`20=`203`09`09`09!`20`20Search`20stream`20id`20for`20NNTP
+-+-+-+-+-+-+-+-  END  OF PART 1 +-+-+-+-+-+-+-+-