!+ READ_OUTBOX.SCP !+ V1.0 = AUTHOR NEIL LAWTON !+ V2.0 = Modified Robyn Clinch - 1992 for Pacific Power ECOSS system. !+ Runs as a housekeeping procedure under V2.4 ALL-IN-1 !- DECIMAL I GET #DOC_COUNT=0 GET #USER_COUNT=0 GET #TOTAL_DOC_COUNT=0 !+ ! Set up delete date. ! For run on Good Friday 1992 this was 75. ! This was set to 72 for June 14th run to delete from 1st April. ! This deleted up to and including 3rd April. ! This was set to 70 for July 12th run to delete from 1st May. ! This was left at 70 for the August 16 1992 run. !- GET #DEL_DAYS="70" CAL SET DATE OA$DATE GET OA$FUNCTION="CAL SET DATE -" #DEL_DAYS "D" DATE_CONVERT #CHECK_DATE, OA$TM_DATE, 7 !+ ! Get Manager VMS name since he owns all. !- GET #MANAGER=PROFIL.VMSUSR[OA$_GBL_MANAGER_ACCOUNT] !+ ! Get first profile record, and check to see if it is a distribution list. !- GET #START_INDEX=PROFIL.%NEXT[""] GET #USER_INDEX=#START_INDEX .LABEL VALID_USER .IF NOT (#USER_INDEX = "@") AND NOT(#USER_INDEX <=> ":") THEN - .GOTO GOOD_USER GET #USER_INDEX=PROFIL.%SEQ_NEXT[#USER_INDEX] .GOTO VALID_USER .LABEL GOOD_USER GET #THE_USER=#USER_INDEX !------------------------------------------------------------------------------- !+ ! This is the begining of the user loop, so NEWDIR to the user ! and check that we can process this user's account. !- .LABEL LOOP_ON_USER GET #RTN_POINT = "" .IF #THE_USER == "" THEN .GOTO NEXT_USER .IF PROFIL.DIRECT[#THE_USER] == "" THEN .GOTO NEXT_USER CHECK_ACCOUNT #THE_USER .IF OA$STATUS == 0 THEN .GOTO NEXT_USER .LABEL PROCEED GET OA$FUNCTION="NEWDIR " #THE_USER !+ ! Check the status of the NEWDIR call. ! If the status is 0 (failure) then get the next user. ! Check if there is a DOCDB.DAT and a DAF.DAT in the user's directory. !- .IF OA$STATUS == 0 THEN .GOTO NEXT_USER .IF OA$DIR:"*.*".%WHOLE["DOCDB.DAT"] == "" THEN .GOTO NEXT_USER .IF OA$DIR:"*.*".%WHOLE["DAF.DAT"] == "" THEN .GOTO NEXT_USER !------------------------------------------------------------------------------- !+ ! Process READ box !- .LABEL READBOX_PASS GET #RTN_POINT="R" GET #DELDOC = "" GET #FOLDER = "READ" CAB SELECT #FOLDER,,,#DELDOC ! .IF OA$STATUS == 0 THEN .GOTO OUTBOX_PASS !Commented this out since OA$STATUS is always set to 0 for some unknown reason GET #FOLDER_NAME=OA$CURDOC_FOLDER .IF #FOLDER_NAME EQS #FOLDER - THEN .GOTO PROCESS_FOLDER !------------------------------------------------------------------------------- !+ ! Process OUTBOX !- .LABEL OUTBOX_PASS GET #RTN_POINT="O" GET #DELDOC = "" GET #FOLDER = "OUTBOX" CAB SELECT #FOLDER,,,#DELDOC .IF OA$STATUS == 0 THEN .GOTO NEXT_USER GET #FOLDER_NAME=OA$CURDOC_FOLDER .IF #FOLDER_NAME EQS #FOLDER - THEN .GOTO PROCESS_FOLDER - ELSE - .GOTO NEXT_USER !------------------------------------------------------------------------------- .LABEL PROCESS_FOLDER !+ ! O.K This is valid folder, so look for documents here !- .LABEL DOCUMENT_LOOP ! OA$MSG_PURGE ! OA$FAO "CHECKING FOLDER ", "OA$DISPLAY", #FOLDER_NAME ! FORCE !+ ! Check document modified date against delete date. !- .IF OA$CURDOC_MODIFIED_NBS:8 GT #CHECK_DATE:8 THEN .GOTO GET_NEXT_DOCUMENT !+ ! Check To see if this is a non deletable document !- .IF OA$CURDOC_DELETE EQS OA$N THEN .GOTO GET_NEXT_DOCUMENT !------------------------------------------------------------------------------- !+ ! This one can go !- COMPUTE #DOC_COUNT = #DOC_COUNT + 1 COMPUTE #TOTAL_DOC_COUNT = #TOTAL_DOC_COUNT + 1 !+ ! Now move the document to the wastebasket !- CAB DELETE_OR_REFILE OA$CURDOC, OA$WASTEBASKET !------------------------------------------------------------------------------- !+ ! Check to see if we have another document to go to. !- .LABEL GET_NEXT_DOCUMENT CAB NEXT_DOCUMENT #FOLDER .IF OA$STATUS == 1 THEN .GOTO DOCUMENT_LOOP !------------------------------------------------------------------------------ .LABEL RETURN_SECTION !+ ! Determine which return point to use from process folder section. !- .IF #RTN_POINT EQS "R" THEN .GOTO OUTBOX_PASS .IF #RTN_POINT EQS "O" THEN .GOTO NEXT_USER !------------------------------------------------------------------------------ .LABEL NOTIFY_USER COMPUTE #USER_COUNT = #USER_COUNT + 1 GET #TEXT = #THE_USER ' ' #DOC_COUNT ' documents put in the wastebasket' .TEXT #TEXT ! !+ ! Notify the user !- GET #MAILLINE0=" " #DOC_COUNT " Documents from your READ and OUTBOX" GET #MAILLINE1=" folders have been placed in your WASTEBASKET." GET #MAILLINE2=" If you want to keep any of the documents, you must" GET #MAILLINE3=" refile them before the JANITOR routine runs" GET #MAILLINE4=" next Thursday night." !+ ! Create mail message but NEWDIR back to MANAGER first otherwise you'll ! end up sending the message to the user from the user. !- NEWDIR MAIL CREATE/OPEN/NOSEND MAIL TO #THE_USER MAIL SUBJECT "Purge of your READ & OUTBOX " !+ ! Send the message. !- MAIL TEXT MAIL TEXT MAIL TEXT #MAILLINE0 MAIL TEXT #MAILLINE1 MAIL TEXT #MAILLINE2 MAIL TEXT #MAILLINE3 MAIL TEXT #MAILLINE4 MAIL TEXT MAIL CLOSE_MESSAGE MAIL SEND OA$MSG_PURGE !+ ! Reset doc_count !- GET #DOC_COUNT = 0 !------------------------------------------------------------------------------ !+ ! Loop for next user !- .LABEL NEXT_USER .IF #DOC_COUNT GT 0 THEN .GOTO NOTIFY_USER GET #USER_INDEX=PROFIL.%SEQ_NEXT[#USER_INDEX] GET #THE_USER=#USER_INDEX .IF #START_INDEX == #USER_INDEX THEN .GOTO END_RUN .GOTO LOOP_ON_USER !+ ! Thats the end, all done now !- .LABEL END_RUN OA$MSG_PURGE NEWDIR GET #TEXT = 'Number of users processed: ' #USER_COUNT .TEXT #TEXT GET #TEXT = 'Number of documents put in the wastebaskets: ' #TOTAL_DOC_COUNT .TEXT #TEXT NEWDIR !------------------------------------------------------------------------------- .LABEL NOTIFY_ME !+ ! Notify MANAGER !- GET #MAILLINE0="Purge READ & OUTBOX was run at " oa$time " on " oa$date_full GET #MAILLINE1="Number of users processed: " #USER_COUNT GET #MAILLINE2="Number of documents put in wastebaskets: " #TOTAL_DOC_COUNT !+ ! Create mail message. !- MAIL CREATE/OPEN/NOSEND MAIL TO OA$USER MAIL SUBJECT "Purge READ and OUTBOX routine " !+ ! Send the message. !- MAIL TEXT MAIL TEXT MAIL TEXT #MAILLINE0 MAIL TEXT MAIL TEXT #MAILLINE1 MAIL TEXT #MAILLINE2 MAIL TEXT MAIL CLOSE_MESSAGE MAIL SEND !---------------------------------------------------------------------------- OA$MSG_PURGE NEWDIR .EXIT !------------------------------------------------------------------------------- !+ ! Abstract: ! ! READ_OUTBOX.SCP ! ! This script works on a system wide basis for all active profiles. ! It refiles documents from the READ and OUTBOX into the user's ! WASTEBASKET folder. It then sends a message to each of the users ! who have had stuff moved into their WASTEBASKET. The MANAGER gets a ! log file of all the users who've been processed as well as a summary ! mail message to say how many messages in total have been deleted. ! The MANAGER also ends up with a huge OUTBOX of all the messages sent ! to the users. ! ! Neil lawton 07-JUL-90 Original version ! NEIL LAWTON 07-NOV-90 PUT IN PRODUCTION ADDED MSG TO MANAGER ! Robyn Clinch 27-Mar-1992 Copied into CM for Pacific Power mods. ! 11-Aug-92 Fixed up for Aug 16th run.