FOCUS program (1) :
-*begin doc
-*
-*FEX: BO-LAST-PURGE-LIST
-*
-*Input
-* Term
-* Minimum Balance To Purge Against
-*
-* This procedure lists students who are subject to be purged
-* for non-payment.
-*
-* This is done after open registration and drop/add.
-*
-*end doc
-*
SET LINES=56
JOIN CLEAR *
-PROMPT &TERM/A5.ENTER THE FIVE DIGIT TERM TO LIST NONPAYING STUDENTS (CCYYX) :
-PROMPT &MIN_BAL/P05.ENTER THE MINIMUM BALANCE IN DOLLARS TO LIST :
-SET &NEXTTERM=&TERM+1;
-*
-* Identify students enrolled in specified term.
-*
TABLE FILE RTFILE
PRINT CURR_ATTEMPTED_HRS BY STU_ID
ON TABLE HOLD AS RTTEMP1
WHERE ROOT_KEY GT '&TERM';
WHERE ROOT_KEY LT '&NEXTTERM';
WHERE CURR_ATTEMPTED_HRS GE 1;
END
-*
-* Select students with account balance >= &MIN_BAL.
-*
JOIN STU_ID IN RTTEMP1 TO STU_ID IN AAFILE AS J1
TABLE FILE RTTEMP1
PRINT CURRENT_BAL BY STU_ID
ON TABLE HOLD AS RTTEMP2
WHERE CURRENT_BAL GE &MIN_BAL;
END
-*
-* Select students with transaction of subcode 79999 or 99999.
-*
JOIN BDKEY WITH STU_ID IN RTTEMP2 TO ALL MTCH_KEY1 IN BDFILE AS J2
DEFINE FILE RTTEMP2
BDKEY/A10=' '|STU_ID;
NPURGTRAN/I1=IF SUBCODE EQ '79999' OR '99999' THEN 1 ELSE 0;
END
TABLE FILE RTTEMP2
SUM NPURGTRAN BY STU_ID
ON TABLE HOLD AS RTTEMP3
WHERE TERM EQ '&TERM';
END
-*
-* Select students with non-cleared hold reason 23.
-*
FILEDEF AMFL010 DISK SI$DATA:AMFILE.DAT
TABLE FILE AMFL010
PRINT REASON BY STU_ID
WHERE REASON EQ '23';
WHERE HOLD_STATUS NE 'C';
ON TABLE HOLD AS AMTEMP1
END
-*
-* Select students with no transaction subcodes of 79999 or 99999
-* and with no hold flags of 23.
-*
MATCH FILE RTTEMP3
PRINT NPURGTRAN BY STU_ID
IF NPURGTRAN EQ 0
RUN
FILE AMTEMP1
PRINT REASON BY STU_ID
AFTER MATCH HOLD OLD-NOT-NEW
END
-RUN
-*
-* Create student list for Business Office.
-*
JOIN RTKEY WITH STU_ID IN HOLD TO ROOT_KEY IN RTFILE AS J3
JOIN STU_ID IN HOLD TO STU_ID IN AAFILE AS J4
DEFINE FILE HOLD
RTKEY/A14='&TERM'|STU_ID;
END
TABLE FILE HOLD
PRINT SECTION_ID BY STU_NAME BY STU_ID AS 'Student ID'
ON TABLE HOLD AS REPORT FORMAT WP
END
JOIN CLEAR *
Typical DCL Command Procedure to set up the program :
$!
$! LAST_PURGE_TRANS.COM
$!
$! Description: Produces batch transactions to purge courses
$! for students that have not paid after open
$! registration and drop/add.
$!
$ SET NOVERIFY
$ SAY :== "WRITE SYS$OUTPUT"
$!
$! Delete any hold files that may have been left over from previous runs.
$!
$ DELETE/LOG SYS$LOGIN:*.FTM;*
$!
$ CL
$!
$ SAY "This process will produce transactions to purge courses for "
$ SAY "students that have not paid after open registration and drop/add."
$ SAY "These transactions will be processed overnight."
$ SAY " "
$ SAY "(BO-LAST-PURGE-TRANS)"
$ SAY " "
$!
$! Prompt for term
$!
$ENTER_PARM_TERM:
$ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= -
"Enter the five digit term to run this process for >>> " TERMIN
$ LEN_TERMIN = F$LENGTH(TERMIN)
$ IF LEN_TERMIN .NE. 5 THEN GOTO ENTER_PARM_TERM
$ TYP_TERMIN = F$TYPE(TERMIN)
$ IF TYP_TERMIN .NES. "INTEGER" THEN GOTO ENTER_PARM_TERM
$!
$! Prompt for minimum balance in dollars to purge
$!
$ENTER_PARM_BAL:
$ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= -
"Enter the minimum balance in whole dollars (no cents) to purge for >>> " BALIN
$ LEN_BALIN = F$LENGTH(BALIN)
$ IF LEN_BALIN .GT. 3 THEN GOTO ENTER_PARM_BAL
$ TYP_BALIN = F$TYPE(BALIN)
$ IF TYP_BALIN .NES. "INTEGER" THEN GOTO ENTER_PARM_BAL
$!
$! Prompt for maintenance date to set on screen SP1
$!
$ENTER_PARM_MNTDT:
$ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= -
"Enter the maintenance date to set on screen SP1 (MMDDYYYY) >>> " MNTDT
$ LEN_MNTDT = F$LENGTH(MNTDT)
$ IF LEN_MNTDT .GT. 8 THEN GOTO ENTER_PARM_MNTDT
$ TYP_MNTDT = F$TYPE(MNTDT)
$ IF TYP_MNTDT .NES. "INTEGER" THEN GOTO ENTER_PARM_MNTDT
$!
$! Create and execute the FOCUS command procedure.
$!
$ NAME = F$GETJPI("","USERNAME")
$!
$ COM_FILE = "SYS$LOGIN:FOCTEMP.COM"
$ OPEN/WRITE output_file 'COM_FILE'
$!
$ WRITE output_file "$ DEFINE FOC$DIR1 SI$DATA"
$ WRITE output_file "$ DEFINE FOC$DIR2 SI$FEX,SI$MFD"
$ WRITE output_file "$ SET DEFAULT SYS$LOGIN"
$ WRITE output_file "$ FOCUS"
$ WRITE output_file "EXEC SI$FOCUS:BO-LAST-PURGE-TRANS TERM=" + TERMIN + ", MIN_BAL=" + BALIN + ", MNTDT=" + MNTDT
$ WRITE output_file "FIN"
$ WRITE output_file "$ EXIT"
$!
$ CLOSE output_file
$ SUBMIT/NOPRINT/NOTIFY 'COM_FILE'
$ SYNCHRONIZE FOCTEMP
$!
$! E-mail report to Business Office.
$!
$ MAIL/SUBJECT="Student Purge List" SYS$LOGIN:BRRPT.WP 'NAME'
$!
$! Copy report to requestor's SYS$LOGIN directory.
$!
$ COPY SYS$LOGIN:BRRPT.WP SYS$LOGIN:REPORT.DOC;
$!
$! MOVE RESULTING BATCH TRANSACTIONS TO MAINTENANCE CYCLE FEED FILE.
$!
$ CONVERT/APPEND SYS$LOGIN:BRDRP.FTM SI$DATA:AIB2FL.DAT
$!
$! CLEAN UP.
$!
$ DELETE/LOG SYS$LOGIN:*.FTM;*
$ DELETE/LOG SYS$LOGIN:*.MAS;*
$ DELETE/LOG SYS$LOGIN:*.WP;*
$ DELETE/LOG SYS$LOGIN:FOCTEMP.COM;*
$!
$EXIT:
$!
$ SAY " "
$ SAY "All done..."
$ SAY " "
$!
$ SET DEFAULT SYS$LOGIN
$ EXIT
FOCUS program (2) :
-*begin doc
-*
-*FEX: BO-LAST-PURGE-TRANS
-*
-*input
-* Term
-* Minimum Balance To Purge Against
-*
-*
-* This procedure creates 45B transactions for students to be purged
-* for non-payment. In order for a student to be selected, it would
-* need to meet the following criteria :
-* enrolled in specified term.
-* account balance >= specified amount.
-* does not have a non-cleared (active) hold reason 23 or 36.
-* does not have transactions with subcode 79999 or 99999
-* in specified term.
-*
-* This is done after open registration and drop/add.
-*
-*end doc
-*
SET LINES=999999
SET PAGE=OFF
JOIN CLEAR *
-SET &NEXTTERM=&TERM+1;
FILEDEF BRDRP DISK BRDRP.FTM APPEND LREC 80 RECFM F
-*
-* Create The Batch Header
-*
DEFINE FILE AAFILE
BATCH_HEADER1/A40 = '$$$REG001 B/R 1ST PURGE YCS ';
BATCH_HEADER2/A40 = ' ';
END
TABLE FILE AAFILE
PRINT BATCH_HEADER1 AS ''
BATCH_HEADER2 AS ''
BY STU_ID NOPRINT
ON TABLE SAVE AS BRDRP
IF RECORDLIMIT EQ 1
END
-*
-* Identify students enrolled in specified term.
-*
TABLE FILE RTFILE
PRINT CURR_ATTEMPTED_HRS BY STU_ID
ON TABLE HOLD AS RTTEMP1
WHERE ROOT_KEY GT '&TERM';
WHERE ROOT_KEY LT '&NEXTTERM';
WHERE CURR_ATTEMPTED_HRS GE 1;
END
-*
-* Select students with account balance >= &MIN_BAL.
-*
JOIN STU_ID IN RTTEMP1 TO STU_ID IN AAFILE AS J1
TABLE FILE RTTEMP1
PRINT CURRENT_BAL BY STU_ID
ON TABLE HOLD AS RTTEMP2
WHERE CURRENT_BAL GE &MIN_BAL;
END
-*
-* Select students with transaction of subcode 79999 or 99999.
-*
JOIN BDKEY WITH STU_ID IN RTTEMP2 TO ALL MTCH_KEY1 IN BDFILE AS J2
DEFINE FILE RTTEMP2
BDKEY/A10=' '|STU_ID;
NPURGTRAN/I1=IF SUBCODE EQ '79999' OR '99999' THEN 1 ELSE 0;
END
TABLE FILE RTTEMP2
SUM NPURGTRAN BY STU_ID
ON TABLE HOLD AS RTTEMP3
WHERE TERM EQ '&TERM';
END
-*
-* Select students with non-cleared hold reason 23.
-*
FILEDEF AMFL010 DISK SI$DATA:AMFILE.DAT
TABLE FILE AMFL010
PRINT REASON BY STU_ID
WHERE REASON EQ '23';
WHERE HOLD_STATUS NE 'C';
ON TABLE HOLD AS AMTEMP1
END
-*
-* Select students with no transaction subcodes of 79999 or 99999
-* and with no hold flags of 23.
-*
MATCH FILE RTTEMP3
PRINT NPURGTRAN BY STU_ID
IF NPURGTRAN EQ 0
RUN
FILE AMTEMP1
PRINT REASON BY STU_ID
AFTER MATCH HOLD OLD-NOT-NEW
END
-RUN
-*
-* Create transactions to drop courses (retain with reason DA - "purged
-* for non-payment").
-*
JOIN RTKEY WITH STU_ID IN HOLD TO ROOT_KEY IN RTFILE AS J3
JOIN STU_ID IN HOLD TO STU_ID IN AAFILE AS J4
DEFINE FILE HOLD
RTKEY/A14='&TERM'|STU_ID;
DROPREC1/A80='45B'|STU_ID|'DRP'|'&TERM'|SECTION_ID
|' '|'&MNTDT'|' DA';
END
TABLE FILE HOLD
PRINT DROPREC1 AS '' IN 1
ON TABLE SAVE AS BRDRP
END
-*
-* Create transactions to clear first registration date for purged students.
-*
DEFINE FILE HOLD
RTKEY/A14='&TERM'|STU_ID;
DROPREC2/A80='40F'|STU_ID|' '|'&TERM'|' '|
' *';
END
TABLE FILE HOLD
PRINT DROPREC2 AS '' IN 1
ON TABLE SAVE AS BRDRP
END
-*
-* Create student list for Business Office.
-*
TABLE FILE HOLD
PRINT SECTION_ID BY STU_NAME BY STU_ID AS 'Student ID'
ON TABLE SAVE AS BRRPT FORMAT WP
END
JOIN CLEAR *
This page hosted by
Get your own Free Homepage