This command procedure will run the FRS Check Cycle. $! $ SAY :== "WRITE SYS$OUTPUT" $! $! Start print file logging $! $ OPEN/WRITE output_file FR$DATA:LOG_PRT_VJCHECK.DAT $ CLOSE output_file
$! $! Check to see if running at night $! $ IF (F$INTEGER(F$EXTRACT(12,2,F$TIME())) .GE. 1) .AND. - (F$INTEGER(F$EXTRACT(12,2,F$TIME())) .LE. 6) $ THEN $ SAY "Job is running at night - bypass FRS user check" $ SAY "" $ ENDIF
$! $ SAY "Log file for AP check cycle" $ SAY "Job started at ... ",F$TIME() $ SAY "" $! $! Set up and run check extract with BANK value of 01 $! $ BANK_NUM = "01," $ GOSUB RUN_VJCHCK1 $ SAY "VHCHCK1 - Check extract completed - BANK = 01 - ",F$TIME() $ SAY ""
$! $! Update print file log $! $ PRM = "Z$PRT:VBC010.PRT;" $ GOSUB UPDATE_PRINT
$! $! Check VBC010 report to see if any checks were produced $! $ GOSUB CHECK_VBC010 $! $! If checks were produced, execute the check print $! $ IF DO_VJCHCK2 .EQS. "Y" THEN GOSUB RUN_VJCHCK2 $! $! Set up and run check extract with BANK value of 02 $! $ BANK_NUM = "02," $ GOSUB RUN_VJCHCK1 $ SAY "VHCHCK1 - Check extract completed - BANK = 02 - ",F$TIME() $ SAY ""
$! $! Update print file log $! $ PRM = "Z$PRT:VBC010.PRT;" $ GOSUB UPDATE_PRINT
$! $! Check VBC010 report to see if any checks were produced $! $ GOSUB CHECK_VBC010 $! $! If checks were produced, execute the check print $! $ IF DO_VJCHCK2 .EQS. "Y" THEN GOSUB RUN_VJCHCK2 $! $ SAY "Successful completion of AP Check Cycle" $ SAY "Job completed at ... ",F$TIME() $ SAY "" $! $ EXIT $! $RUN_VJCHCK1: $! $! Set up and run check extract with specified BANK value $! $ DELETE/LOG FR$COM:VJCHCK1.TMP;* $ OPEN/READ input_file FR$COM:VJCHCK1.COM $ OPEN/WRITE output_file FR$COM:VJCHCK1.TMP $! $VJCHCK1_LOOP_PROC: $! $ READ/END=VJCHCK1_LOOP_EXIT input_file in_record $ IF F$EXTRACT(0,11,in_record) .EQS. "PGM=VBC010," $ THEN $ WRITE output_file - "PGM=VBC010,DATE=TODAY,VCHR=0000000000,PAY-THRU=00/00/00,BANK=" + - BANK_NUM $ READ input_file in_record $ WRITE output_file in_record $ ELSE $ WRITE output_file in_record $ ENDIF $! $ GOTO VJCHCK1_LOOP_PROC $! $VJCHCK1_LOOP_EXIT: $! $ CLOSE input_file $ CLOSE output_file $ RENAME/LOG FR$COM:VJCHCK1.TMP FR$COM:VJCHCK1.COM; $! $ @FR$COM:VJCHCK1 $ RETURN $! $CHECK_VBC010: $! $! Check VBC010 report to see if any checks were produced $! $ OPEN/READ input_file Z$PRT:VBC010.PRT $ DO_VJCHCK2 = "Y" $! $VBC010_LOOP_PROC: $! $ READ/END=VBC010_LOOP_EXIT input_file in_record $ IF F$EXTRACT(0,65,in_record) .EQS. - "APPROXIMATE NUMBER OF CHECKS NEEDED FOR THE CHECK RUN = 0" $ THEN $ DO_VJCHCK2 = "N" $ GOTO VBC010_LOOP_EXIT $ ENDIF $! $ GOTO VBC010_LOOP_PROC $! $VBC010_LOOP_EXIT: $! $ CLOSE input_file $ RETURN $! $RUN_VJCHCK2: $! $! Set up and execute the check print - part 2 for the computed $! check number $! $! Get next check number for VBC020 $! $ OPEN/READ input_file FR$DATA:VBC020_CHKNUM.DAT $ IF BANK_NUM .EQS. "02," $ THEN $ READ input_file in_record $ NXT_CHK_NUM = F$EXTRACT(3,6,in_record) $ ELSE $ READ input_file in_record $ READ input_file in_record $ NXT_CHK_NUM = F$EXTRACT(3,6,in_record) $ ENDIF $ CLOSE input_file $! $ DELETE/LOG FR$COM:VJCHCK2.TMP;* $ OPEN/READ input_file FR$COM:VJCHCK2.COM $ OPEN/WRITE output_file FR$COM:VJCHCK2.TMP $! $VJCHCK2_LOOP_PROC: $! $ READ/END=VJCHCK2_LOOP_EXIT input_file in_record $ IF F$EXTRACT(0,11,in_record) .EQS. "PGM=VBC020," $ THEN $ WRITE output_file - "PGM=VBC020,DATE=TODAY,CHECK=" + NXT_CHK_NUM $ ELSE $ WRITE output_file in_record $ ENDIF $! $ GOTO VJCHCK2_LOOP_PROC $! $VJCHCK2_LOOP_EXIT: $! $ CLOSE input_file $ CLOSE output_file $ RENAME/LOG FR$COM:VJCHCK2.TMP FR$COM:VJCHCK2.COM; $! $! Execute the check print - part 2 $! $ @FR$COM:VJCHCK2 $ SAY "VJCHCK2 - Check print completed ",F$TIME() $ SAY ""
$! $! Update print file log with the check file $! $ PRM = "FR$DATA:FVCKFL.DAT;" $ GOSUB UPDATE_PRINT
$! $! Determine next check number and update parameter file $! $ SEARCH Z$PRT:VBC030.PRT; "* CHECK ''F$EXTRACT(0,2,BANK_NUM)'-"/OUTPUT=FR$COM:TSTCHK.DOC $!
$ OPEN/READ input_file FR$COM:TSTCHK.DOC $! $READ_TSTCHK: $! $ READ/END=EXIT_TSTCHK input_file in_record $ NXT_CHK_NUM = F$INTEGER(F$EXTRACT(57,6,in_record)) $ GOTO READ_TSTCHK $! $EXIT_TSTCHK: $! $ CLOSE input_file
$ NXT_CHK_NUM = NXT_CHK_NUM + 1 $ NXT_CHK_NUM = F$EXTRACT(0,6-F$LENGTH(NXT_CHK_NUM),"000000") + - F$STRING(NXT_CHK_NUM)
$! $ DELETE/LOG FR$DATA:VBC020_CHKNUM.TMP;* $ OPEN/READ input_file FR$DATA:VBC020_CHKNUM.DAT $ OPEN/WRITE output_file FR$DATA:VBC020_CHKNUM.TMP $! $ IF BANK_NUM .EQS. "02," $ THEN $ READ input_file in_record $ WRITE output_file "02 " + NXT_CHK_NUM $ READ input_file in_record $ WRITE output_file in_record $ ELSE $ READ input_file in_record $ WRITE output_file in_record $ READ input_file in_record $ WRITE output_file "01 " + NXT_CHK_NUM $ ENDIF $! $ CLOSE input_file $ CLOSE output_file $ RENAME/LOG FR$DATA:VBC020_CHKNUM.TMP FR$DATA:VBC020_CHKNUM.DAT; $! $ RETURN
$! $UPDATE_PRINT: $! $! Update print file log $! $ OPEN/APPEND output_file FR$DATA:LOG_PRT_VJCHECK.DAT $ PRM = F$SEARCH(PRM) $ IF F$EXTRACT(25,6,PRM) .EQS. "FVCKFL" $ THEN $ WRITE output_file "''PRM'" + " ''BANK_NUM'" $ ELSE $ WRITE output_file "''PRM'" $ ENDIF $ CLOSE output_file $! $ RETURN $!
$ EXIT This command procedure will send the check file to the specified queue. $! $! Read in data file that contains the names and print out $! each one $! $ OPEN/READ input_file FR$DATA:LOG_PRT_VJCHECK.DAT $! $PRINT_LOOP_PROC: $! $ READ/END=PRINT_LOOP_EXIT input_file in_record $ PRT_FILE = F$EXTRACT(0,39,in_record) $! $ IF (F$EXTRACT(25,6,in_record) .EQS. "FVCKFL") .AND. - (F$STRING(F$EXTRACT(40,2,in_record)) .EQS. "01") - THEN PRINT/NOFLAG/NOFEED 'PRT_FILE $ GOTO PRINT_LOOP_PROC $! $PRINT_LOOP_EXIT: $! $ CLOSE input_file $ EXIT This command procedure will send the print files to the specified queue in the order they were generated. By default, multiple jobs sent to a print queue will be sorted by file size. $! $! Read in data file that contains the names and print out $! each one $! $ OPEN/READ input_file FR$DATA:LOG_PRT_VJCHECK.DAT $! $PRINT_LOOP_PROC: $! $ READ/END=PRINT_LOOP_EXIT input_file in_record $ IF F$EXTRACT(25,6,in_record) .NES. "FVCKFL" $ THEN $ PRINT/NOFLAG/NOFEED 'in_record $ NAME_QUE = F$EXTRACT(24,6,in_record) $ SYNCHRONIZE 'NAME_QUE $ ENDIF $ GOTO PRINT_LOOP_PROC $! $PRINT_LOOP_EXIT: $! $ CLOSE input_file $ EXIT This procedure is used to setup the FRS check cycle to run the following morning. It will check to make sure the job has not already been submitted. $! $ SAY :== "WRITE SYS$OUTPUT"
$ JOB_THERE = "NO" $! $QLOOP: $! $ QNAME = F$GETQUI("DISPLAY_QUEUE","QUEUE_NAME","*") $ IF QNAME .EQS. "" THEN GOTO EXIT $ IF QNAME .NES. "SYS$FAST" THEN GOTO QLOOP $! $JLOOP: $! $ NOACCESS = F$GETQUI("DISPLAY_JOB","JOB_INACCESSIBLE",,"ALL_JOBS") $ IF NOACCESS .EQS. "TRUE" THEN GOTO JLOOP $ IF NOACCESS .EQS. "" THEN GOTO QLOOP $ JNAME = F$GETQUI("DISPLAY_JOB","JOB_NAME",,- "FREEZE_CONTEXT,ALL_JOBS") $ IF JNAME .EQS. "HG_VJCHECK" $ THEN $ CL $ SAY "" $ SAY "FRS Check Cycle already submitted..." $ SAY "" $ WAIT 00:00:05 $ JOB_THERE = "YES" $ ENDIF $ GOTO JLOOP
$! $EXIT: $! $ IF JOB_THERE .EQS. "NO" $ THEN $ CL $ SUBMIT (Check Cycle Procedure) - /AFTER=TOMORROW"+3" $ SAY "" $ SAY "FRS Check Cycle successfully submitted..." $ SAY "" $ SHOW ENTRY $ SAY "" $ WAIT 00:00:05 $ ENDIF $! $ EXIT

 

 

This page hosted by Get your own Free Homepage

1
Hosted by www.Geocities.ws