Typical DCL Command Procedure to set up the program :
$!
$!      Description:    Creates a command procedure to run the bad check
$!                      counter update process with the correct current
$!			date.
$!
$	SET DEFAULT SI$FOCUS
$!
$!  Determine date to use in FOCUS routine.
$!
$       file_year = f$extract(0,4,f$cvtime(f$time()))
$       file_month = f$extract(5,2,f$cvtime(f$time()))
$       file_day = f$extract(8,2,f$cvtime(f$time()))
$	run_date = file_year + file_month + file_day
$!
$!  Create command procedure to run bad check counter update process.
$!
$	OPEN/WRITE output_file SI$FOCUS:(FOCEXEC Name)_RUN.COM
$!
$ 	output_record = "$ SET DEFAULT SI$FOCUS"
$       WRITE output_file output_record
$ 	output_record = "$ DEFINE FOC$DIR1 SI$DATA"
$       WRITE output_file output_record
$ 	output_record = "$ DEFINE FOC$DIR2 SI$FEX,SI$MFD"
$       WRITE output_file output_record
$ 	output_record = "$ FOCUS"
$       WRITE output_file output_record
$ 	output_record = "EXEC (FOCEXEC Name) INDATE=" + run_date
$       WRITE output_file output_record
$ 	output_record = "FIN"
$       WRITE output_file output_record
$ 	output_record = "$ EXIT"
$       WRITE output_file output_record
$!
$ 	CLOSE output_file
$	SUB SI$FOCUS:(FOCEXEC Name)_RUN.COM
$!
$	EXIT
FOCUS program :
-*    Description: To update the bad check counter whenever a
-*                 return check penalty is placed on a student's
-*                 account.
-*
  JOIN CLEAR *
  SET MORE=OFF, ALL=PASS, ASNAMES=ON, NODATA=' '
  SET LINES=999999
  SET PAGE=NOPAGE
  FILEDEF (FOCEXEC Name)H5 DISK (FOCEXEC Name)H5.FTM APPEND LREC 128 RECFM F
-*
-*  Create the batch header.
-*
  DEFINE FILE AAFILE
  BATCH_HEADER1/A35 = '$$$MSC501        BAD CHK CO UPD YBU';
  BATCH_HEADER2/A26 = '                    (FOCEXEC Name)';
  BATCH_HEADER3/A67 = 
    '                                                                   ';
  END
-*
  TABLE FILE AAFILE
  PRINT BATCH_HEADER1 AS '' 
        BATCH_HEADER2 AS '' 
        BATCH_HEADER3 AS '' 
  BY STU_ID NOPRINT
  ON TABLE SAVE AS (FOCEXEC Name)H5
  IF RECORDLIMIT EQ 1
  END
-*
-*  Select all students that have a return check subcode for the
-*  current date.
-*
  DEFINE FILE BDFILE
  TR_DATE/A8 = EDIT(TRAN_DT);
  END
-*
  TABLE FILE BDFILE
  PRINT TERM 
        TRAN_AMT 
        SUBCODE
  BY STU_ID
  IF TR_DATE EQ '&INDATE'
  IF SUBCODE EQ '(Subcode for bad check charge)'
  ON TABLE HOLD AS (FOCEXEC Name)H0
  END
-*
-IF &RECORDS EQ 0 THEN GOTO STOPRUN;
-*
-*
-*  Sum up charges posted.  This is to check for a 'zero out'
-*  situation in which the charge was removed the same day.
-*
  DEFINE FILE (FOCEXEC Name)H0
  TOT_AMT/P11.2C = IF STU_ID NE LAST STU_ID THEN 
                      TRAN_AMT ELSE TOT_AMT + TRAN_AMT;
  STU_CNT/I1 = IF STU_ID NE LAST STU_ID THEN 1 ELSE STU_CNT + 1;
  END
-*
  TABLE FILE (FOCEXEC Name)H0
  PRINT TERM 
        TOT_AMT 
        STU_CNT 
        TRAN_AMT 
        SUBCODE 
  BY STU_ID
  ON TABLE HOLD AS (FOCEXEC Name)H1
  END
-*
-*  Sort so that the total subcode charges appear first
-*  for each student.
-*
  TABLE FILE (FOCEXEC Name)H1
  PRINT TERM 
        TOT_AMT 
        TRAN_AMT 
        SUBCODE 
  BY STU_ID 
  BY HIGHEST STU_CNT
  ON TABLE HOLD AS (FOCEXEC Name)H2
  END
-*
-*  Remove duplicate student records leaving only the total
-*  subcode charge.
-*
  DEFINE FILE (FOCEXEC Name)H2
  THS_REC/A1 = IF STU_ID NE LAST STU_ID THEN 'Y' ELSE 'N';
  END
-*
  TABLE FILE (FOCEXEC Name)H2
  PRINT TERM 
        TOT_AMT 
        SUBCODE 
  BY STU_ID
  IF THS_REC EQ 'Y'
  ON TABLE HOLD AS (FOCEXEC Name)H3
  END
-*
-*  Remove students with a 'zero out'.
-*
  TABLE FILE (FOCEXEC Name)H3
  PRINT TERM 
        TOT_AMT 
        SUBCODE 
  BY STU_ID
  IF TOT_AMT NE 0
  ON TABLE HOLD AS (FOCEXEC Name)H4
  END
-*
  JOIN STU_ID IN (FOCEXEC Name)H4 TO KEY IN AAFILE AS J1
-*
-*  Determine new bad check counter (AA760) based upon
-*  number of charges posted that day (each charge is
-*  assumed to be $25) and create the batch transaction 
-*  to update SIS.
-*
  DEFINE FILE (FOCEXEC Name)H4
  NUM_POSTED/P11.2C = TOT_AMT / 25.00;
  TOTAL_POSTED/P11.2C = BAD_CHECK_CNTR + NUM_POSTED;
  NEW_CHECK_CNTR/A1 = IF TOTAL_POSTED GE 3.0 THEN '9'
                      ELSE EDIT(EDIT(TOTAL_POSTED),'$$$$$$$$$$9');
  BTH_TRANS/A30 = ('62B'|STU_ID|'                '|NEW_CHECK_CNTR); 
  END
-*
  TABLE FILE (FOCEXEC Name)H4
  PRINT BTH_TRANS
  BY STU_ID NOPRINT
  ON TABLE SAVE AS (FOCEXEC Name)H5
  END
  JOIN CLEAR *
-*
-RUN
-*
-*  Feed the batch transactions into the SIS feed file.
-*
-VMS COPY (FOCEXEC Name)H5.FTM (SIS feed file)
-*
-GOTO CLEANUP;
-*
-STOPRUN
-TYPE
-TYPE
-TYPE
-TYPE
-TYPE         ********NO RECORDS FOUND********
-TYPE         ************STOP RUN************
-TYPE
-TYPE
-TYPE
-TYPE
-CLEANUP
  VMS IF F$SEARCH("(FOCEXEC Name)H%.FTM") .NES. "" THEN DEL (FOCEXEC Name)H%.FTM;*
  VMS IF F$SEARCH("(FOCEXEC Name)H%.MAS") .NES. "" THEN DEL (FOCEXEC Name)H%.MAS;*
-EXIT

 

This page hosted by Get your own Free Homepage

Hosted by www.Geocities.ws

1