|  | $ SET VERIFY
$!*********************Digital Equipment Corporation****************************
$!
$!	TPAS_COPY_NOR_MNTHLY.COM	Author: K Bhaskara Rao.
$!
$!	Date Written:  	    02-JUN-1994
$!	Date Last Modified:  
$!
$!	Process Remarks:  This procedure copies the following files
$!			  TPAS_NOR_DB_####.UNL and TPAS_NOR_DB_####.RRD
$!			  from the ACADMY::TPAS_II$OUTBOUND area.
$!
$!		  ST000 - This step checks for system restart and performs the
$!		     	  set logicals step to set process logicals and show all
$!			  logicals used in this procedure.
$!
$!                ST005 - This step captures the latest File Name of
$!                        TPAS_NOR_DB_####.UNL and TPAS_NOR_DB_###.RRD
$!			  from ACADMY and also Extracts 
$!			  the Serial Number from the file.
$!                        Searches for TPAS_NOR_SERIAL.DAT file to capture
$!                        Last Processed Serial Number of *.DAT file
$!                        for a comparison
$!		   
$!		  ST010 - This step copies the file mentioned to the sites.
$!
$!		  ST020 - This step mail a notification back to APPIX if good
$!			  copy
$!
$!	Recovery Instructions:  THIS STREAM IS RESTARTABLE  
$!
$!	Dependencies:  None 
$!------------------------------------------------------------------------------
$!
$!	REVISION HISTORY:  
$!  5-OCT-1995 Charley Flach Ayr, Scotland
$!
$!  Unlike the other copy command streams this one expects a specific serial
$!  number, i.e. one greater that last month.  However there is no guarantee
$!  that this will always be the case as the NOR file may have been
$!  processed more than once in a month.  In this case the command stream
$!  would fail.
$!  
$!  To prevent this from happening I have change the serial number checking
$!  code to match the other copy jobs.
$!  
$!  This is an unsupported hack!  If you reinstall TPAS 3.2 you will lose it!
$!------------------------------------------------------------------------------
$!
$ ST000:
$!------
$ ON ERROR THEN GOTO BD000
$ ERROR_STATUS = "FALSE"
$ IF P1 .NES. "" 
$ THEN 
$	GOTO 'P1
$ ENDIF
$ IF F$MODE() .EQS. "BATCH"
$ THEN 
$	SHOW SYMBOL $RESTART
$ 	IF $RESTART
$ 	THEN
$		GOSUB SET_LOGICALS
$		GOTO 'BATCH$RESTART
$ 	ENDIF
$ ENDIF
$ IF F$MODE() .EQS. "OTHER"
$ THEN
$	SHOW SYMBOL $VSSRESTART
$ 	IF $VSSRESTART
$ 	THEN
$		GOSUB SET_LOGICALS
$		GOTO 'BATCH$RESTART
$ 	ENDIF
$ ENDIF
$!
$ IF F$MODE() .EQS. "BATCH"
$ THEN
$	SET RESTART_VALUE = "ST000"
$	SHOW QUEUE *BATCH 
$ ENDIF
$ IF F$MODE() .EQS. "OTHER"
$ THEN
$ 	SCHEDULE SET RESTART ST000
$	SCHEDULE SHOW JOB/BRIEF 
$!
$! May give /USER= qualifier in the above statement.
$!
$ ENDIF
$!
$ SHOW TIME
$ SHOW DEFAULT
$ SHOW DEVICE D
$ PURGE/LOG/KEEP=4    TPAS_COPY_NOR_MNTHLY.LOG
$!
$!can give logical name for the log file/directory in the above statement.
$!
$ GOSUB SET_LOGICALS
$!
$ GOTO GD000
$!
$ GD000:
$!------
$ GOTO ST005
$!
$ BD000:
$!------
$ SAVE_STATUS = $STATUS
$ ERROR_STATUS = "TRUE"
$ SHOW TIME
$ WRITE SYS$OUTPUT "TPAS_COPY_NOR_MNTHLY-ST000 **FAILED** STREAM ABORTING"
$ GOTO ENDBD
$!
$ SET_LOGICALS:
$!-------------
$ SHOW TIME
$ SHOW DEFAULT
$!
$!*************************************************************************
$!Sites should set up their logicals here, if the logicals are not define
$! system wide already
$!
$!    		TPAS$TEMP 	and 	TPAS$COM  	 are required
$!*************************************************************************
$!
$!
$! Can use 
$! @ddua:[directory.COM]TPAS_LOGICALS.COM
$!		OR
$! @TPAS$ROOT:[COM]TPAS_LOGICALS.COM
$!		OR
$! ASSIGN/LOG/TRANSLATION=CONCEALED  	ddua:[directory.] 	TPAS$ROOT
$! ASSIGN/LOG 				TPAS$ROOT:[TEMP] 	TPAS$TEMP
$! ASSIGN/LOG 				TPAS$ROOT:[COM] 	TPAS$COM 
$!
$!
$ SHOW LOGICAL/PROCESS 
$!
$ RETURN
$!
$ ST005:
$!------------------------------------------------------------------------------
$!	TPAS_COPY_NOR_MNTHLY - STEP 005		-RESTARTABLE-
$!------------------------------------------------------------------------------
$!	This step searches the .UNL file extracts the serial number into 
$!	a symbol and comapres with the Serial Number available in 
$!	TPAS_NOR_SERIAL.DAT file
$!------------------------------------------------------------------------------
$!
$ ON ERROR THEN GOTO BD005
$ IF F$MODE() .EQS. "BATCH"
$ THEN
$	SET RESTART_VALUE = "ST005"
$ ENDIF
$ IF F$MODE() .EQS. "OTHER"
$ THEN
$ 	SCHEDULE SET RESTART ST005
$ ENDIF
$!
$ SHOW TIME
$ SET DEFAULT TPAS$TEMP
$ SHOW DEFAULT
$!
$!  
$ FILE_NAME_RRD=F$SEARCH("ACADMY""TPAS_XFER""::TPAS_II$OUTBOUND:TPAS_NOR_DB*.RRD;0")
$ FILE_NAME_UNL=F$SEARCH("ACADMY""TPAS_XFER""::TPAS_II$OUTBOUND:TPAS_NOR_DB*.UNL;0")
$!
$ SHOW SYMBOL FILE_NAME_RRD
$ IF FILE_NAME_RRD .EQS. "" 
$    THEN 
$     WRITE SYS$OUTPUT "TPAS_COPY_NOR_MNTHLY-ST005 * NO RRD FILE AVAILABLE"
$     GOTO BD005
$ ENDIF
$!
$ SHOW SYMBOL FILE_NAME_UNL
$ IF FILE_NAME_UNL .EQS. "" 
$    THEN 
$     WRITE SYS$OUTPUT "TPAS_COPY_NOR_MNTHLY-ST005 * NO UNL FILE AVAILABLE"
$     GOTO BD005
$ ENDIF
$!	 
$ NAME=F$PARSE(FILE_NAME_RRD,,,"NAME")
$ EXT=F$PARSE(FILE_NAME_RRD,,,"TYPE")
$ TPAS_SERIAL_NUMBER_RRD = F$EXTRACT(12,4,NAME)
$ SHOW SYMB TPAS_SERIAL_NUMBER_RRD
$!
$ NAME=F$PARSE(FILE_NAME_UNL,,,"NAME")
$ EXT=F$PARSE(FILE_NAME_UNL,,,"TYPE")
$ TPAS_SERIAL_NUMBER_UNL = F$EXTRACT(12,4,NAME)
$ SHOW SYMB TPAS_SERIAL_NUMBER_UNL
$!
$ IF TPAS_SERIAL_NUMBER_UNL .NES. TPAS_SERIAL_NUMBER_RRD
$    THEN 
$     WRITE SYS$OUTPUT -
	"TPAS_COPY_NOR_MNTHLY-ST005 * UNL and RRD SERIAL # DON'T MATCH"
$     GOTO BD005
$ ENDIF
$! Search File TPAS_NOR_SERIAL.DAT
$!
$ FILE_NAME_DAT=F$SEARCH("TPAS$COM:TPAS_NOR_SERIAL.DAT")
$!
$ SHOW SYMBOL FILE_NAME_DAT
$ IF FILE_NAME_DAT .EQS. ""
$    THEN 
$	TPAS_SERIAL_NUMBER_CTRL_DAT = TPAS_SERIAL_NUMBER_UNL
$ ELSE
$	OPEN INPUT_FILE TPAS$COM:TPAS_NOR_SERIAL.DAT
$       READ/END_OF_FILE=BD005 INPUT_FILE TPAS_SERIAL_NUMBER_CTRL_DAT
$	CLOSE INPUT_FILE
$ ENDIF
$!
$ SHOW SYMB TPAS_SERIAL_NUMBER_CTRL_DAT
$ SHOW SYMB TPAS_SERIAL_NUMBER_UNL
$!
$! Comaprison of Both serial Numbers
$!
$ IF TPAS_SERIAL_NUMBER_UNL .LES. TPAS_SERIAL_NUMBER_CTRL_DAT
$    THEN
$     WRITE SYS$OUTPUT - 
  "TPAS_COPY_NOR_MNTHLY-ST005 * NO NEW RRD/UNL FILE AVAILABLE"
$     GOTO BD005 
$ ENDIF
$!
$ GD005:
$!------
$  GOTO ST010
$!
$ BD005:
$!-----
$ SAVE_STATUS = "42"
$ ERROR_STATUS = "TRUE"
$ SHOW TIME
$ WRITE SYS$OUTPUT "TPAS_COPY_NOR_MNTHLY-ST005 **FAILED** ABORTING"
$ GOTO ENDBD
$!      
$!
$ ST010:
$!------------------------------------------------------------------------------
$!	TPAS_COPY_NOR_MNTHLY - STEP 010		-RESTARTABLE-
$!------------------------------------------------------------------------------
$!	This step copies the .RRD AND UNL files to the site's 
$!	TPAS$ROOT area from
$!      ACADMY::TPAS_II$OUTBOUND area
$!------------------------------------------------------------------------------
$!
$ ON ERROR THEN GOTO BD010
$ IF F$MODE() .EQS. "BATCH"
$ THEN
$	SET RESTART_VALUE = "ST010"
$ ENDIF
$ IF F$MODE() .EQS. "OTHER"
$ THEN
$ 	SCHEDULE SET RESTART ST010
$ ENDIF
$!
$ SHOW TIME
$ SET DEFAULT TPAS$TEMP
$ SHOW DEFAULT
$!
$ DELETE/LOG/NOCONFIRM TPAS_NOR_DB_*.RRD;*
$ DELETE/LOG/NOCONFIRM TPAS_NOR_DB_*.UNL;*
$ COPY/LOG ACADMY"TPAS_XFER"::TPAS_II$OUTBOUND:TPAS_NOR_DB_*.UNL; []
$ COPY/LOG ACADMY"TPAS_XFER"::TPAS_II$OUTBOUND:TPAS_NOR_DB_*.RRD; []
$!
$ LIST_FILES:
$!----------
$!
$ DIRECTORY/DATE/SIZE TPAS_NOR_DB_*.UNL   
$ DIRECTORY/DATE/SIZE TPAS_NOR_DB_*.RRD   
$!
$ GOTO GD010
$!
$ GD010:
$!------
$ GOTO ST020
$!
$ BD010:
$!------
$ SAVE_STATUS = "42"
$ ERROR_STATUS = "TRUE"
$ SHOW TIME
$ WRITE SYS$OUTPUT "TPAS_COPY_NOR_MNTHLY-ST010 **FAILED** STREAM ABORTING"
$ GOTO ENDBD
$!
$!-----------------------------------------------------------------------------
$!
$ ST020:
$!------------------------------------------------------------------------------
$!	TPAS_COPY_NOR_MNTHLY - STEP 020		-RESTARTABLE-
$!------------------------------------------------------------------------------
$!	This step mails a notification to the APPIX Organization that the 
$!      copy was successful.        
$!------------------------------------------------------------------------------
$!
$!
$ ON ERROR THEN GOTO BD020
$ WRITE SYS$OUTPUT "TPAS_SEND_MAIL STARTING ...."
$!++
$! Setup the info that is to be included in the mail message.
$!--
$ ! Send mail to node PNEWMN - 17.454 : (17 * 1024) + 454 = node_address
$ APPIX_NODE = "17862"
$ LOC_NODENAME = F$TRNLNM("SYS$NODE") - "::"
$!
$! Finding out the Actual Filename and Create a Symbol to append in the Mail
$! 
$! TPAS_NOR_DB_####.UNL, TPAS_NOR_DB_####.RRD
$!
$ DIRECTORY/NOHEADER/NOTRAIL/BRIEF/COLUMN=1/OUTPUT=TPAS_COPY_NOR_DB_DIR.DAT -
                   TPAS$TEMP:TPAS_NOR_DB_*.RRD;0,TPAS$TEMP:TPAS_NOR_DB_*.UNL;0 
$ TYPE TPAS_COPY_NOR_DB_DIR.DAT;
$ OPEN/READ DIR_FILE TPAS_COPY_NOR_DB_DIR.DAT
$ READ DIR_FILE TPAS_RRD_FILE_NAME
$ READ DIR_FILE TPAS_UNL_FILE_NAME
$ CLOSE DIR_FILE
$ DELETE/LOG/NOCONFIRM TPAS_COPY_NOR_DB_DIR.DAT;*
$ SHOW SYMBOL TPAS_RRD_FILE_NAME
$ SHOW SYMBOL TPAS_UNL_FILE_NAME
$!
$!++
$! Create the mail message/file.
$!--
$ OPEN/WRITE HOME SEND_COPY_HOME.TXT
$ WRITE HOME " Date:				''F$TIME()'"
$ WRITE HOME " TPAS_NOR_DB_####.RRD: 	        ''TPAS_RRD_FILE_NAME'"
$ WRITE HOME " TPAS_NOR_DB_####.UNL: 	        ''TPAS_UNL_FILE_NAME'"
$ WRITE HOME " Has been copied to :"
$ WRITE HOME " Node Name:			''loc_nodename'"
$ CLOSE HOME
$!
$!++
$! Set up the type of mail transportation.
$!--
$ TRUE = 1
$ FALSE = 0
$!
$ MAIL_PREFIX = ""
$ NMAIL_EXISTS = FALSE
$ IF F$SEARCH("SYS$SHARE:NM_MAILSHR.EXE") .EQS. "" 
$ THEN 
$	GOTO SET_MAIL_ADDRESS
$ ENDIF
$!
$ NMAIL_EXISTS = F$FILE_ATTRIBUTES("SYS$SHARE:NM_MAILSHR.EXE", "KNOWN")
$ IF NMAIL_EXISTS .EQS. TRUE 
$ THEN 
$	MAIL_PREFIX = "NM%"
$ ENDIF
$!
$SET_MAIL_ADDRESS:
$ SEND_HOME = MAIL_PREFIX + "''APPIX_NODE'::QCA_ADMIN"
$!
$!++
$! Send the mail message.
$!--
$!
$ SAVE_MESSAGE = F$ENVIRONMENT("MESSAGE")
$ SET MESSAGE/NOFACILITY/NOTEXT/NOIDENT/NOSEVERITY
$ MAIL SEND_COPY_HOME.TXT 'SEND_HOME' /SUBJECT="TPAS_NOR_DB*.RRD + UNL Have been copied"
$ SET MESSAGE 'SAVE_MESSAGE'
$ DELETE/NOCONFIRM/LOG SEND_COPY_HOME.TXT;*
$!
$!++++
$! The Serial Number using the symbol TPAS_SERIAL_NUMBER_UNL is updated in
$! TPAS_NOR_SERIAL.DAT file 
$!
$  SHOW SYMB TPAS_SERIAL_NUMBER_UNL
$!
$  IF TPAS_SERIAL_NUMBER_UNL .NES. ""
$     THEN
$	OPEN/WRITE OUTPUT_FILE TPAS$COM:TPAS_NOR_SERIAL.DAT
$	WRITE OUTPUT_FILE TPAS_SERIAL_NUMBER_UNL
$	CLOSE OUTPUT_FILE
$  ENDIF
$!
$  PURGE/LOG TPAS$COM:TPAS_NOR_SERIAL.DAT
$  TYPE TPAS$COM:TPAS_NOR_SERIAL.DAT;
$!
$!
$ GD020:
$!-----
$ GOTO ENDGD
$!
$ BD020:
$!------
$ SAVE_STATUS = $STATUS
$ ERROR_STATUS = "TRUE"
$ SHOW TIME
$ WRITE SYS$OUTPUT "TPAS_COPY_NOR_MNTHLY-ST020 **FAILED** STREAM ABORTING"
$ GOTO ENDBD
$!
$!
$ ENDBD:
$!------------------------------------------------------------------------------
$ ON ERROR THEN GOTO ALLEND
$ SHOW TIME
$!
$ SUPPORT_ACCOUNT=F$GETJPI("0","USERNAME")
$  MAIL -
     /TRANSPORT=NM% -
     /SUBJECT="TPAS_COPY_NOR_MNTHLY ***FAILED*** Check Log" -
     NL: 'SUPPORT_ACCOUNT
$!
$ GOTO ALLEND
$!
$ ENDGD:
$!------------------------------------------------------------------------------
$!                   
$ ON ERROR THEN GOTO ENDBD
$ SHOW TIME
$ WRITE SYS$OUTPUT "TPAS_COPY_NOR_MNTHLY ENDING SUCCESSFULLY"
$ GOTO ALLEND
$!
$!
$ ALLEND:
$!------------------------------------------------------------------------------
$!
$ ON ERROR THEN EXIT
$ SHOW TIME
$ IF F$MODE() .EQS. "BATCH"
$ THEN
$ 	SHOW QUEUE *BATCH
$ ENDIF
$ IF F$MODE() .EQS. "OTHER"
$ THEN
$	SCHEDULE SHOW JOB/BRIEF
$!
$! May give /USER qualifier in the above statement
$!
$ ENDIF
$ SHOW DEVICE D
$!
$ SHOW LOGICAL/PROCESS
$!
$ SHOW SYMBOL ERROR_STATUS
$ SET NOVERIFY
$ IF ERROR_STATUS .EQS. "TRUE" 
$ THEN 
$	EXIT SAVE_STATUS
$ ENDIF
$ EXIT
 |