[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference acadmy::tpas_notes

Title:Transfer Price Administration System
Notice:Conference has moved to ACADMY::TPAS_NOTES
Moderator:ACADMY::MAGNI
Created:Wed Jul 01 1992
Last Modified:Fri Mar 21 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:102
Total number of notes:459

100.0. "NOR Copy command stream" by AYRMIS::LSS055::Charles (If you can't knit bring a book!) Thu Oct 05 1995 06:29

        Hi,

        In recent correspondence with Lois it has come to light that the
        NOR copy command stream could fail if the NOR file serial numbers
        were higher than expected.  This could happen if there was some
        processing problems and the files were regenerated more than once
        in a month.

        The NOR copy command stream was written originally to load files
        in strict sequence as it was intended to send only update data.
        However as the full data set is sent it only needs to check that
        the new file has a higher serial number (as the other copy
        command streams do).

        An updated version of the NOR copy command stream is the next
        reply to this note.


        Regards

        Charley
T.RTitleUserPersonal
Name
DateLines
100.1Updated command fileAYRMIS::AYRMIS::CHARLESAll stressed up and nowhere to blowThu Oct 05 1995 06:31441
$ 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