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