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

Hosted by www.Geocities.ws

1