Typical DCL Command Procedure to set up the program :
$ SET NOVERIFY
$ CLEAR
$ SAY :== "WRITE SYS$OUTPUT"
$!
$ SAY " "
$ SAY "This report produces the list of students whose residency code on"
$ SAY "their matriculation record is different from the residency code on"
$ SAY "their term record."
$ SAY " "
$!
$ENTER_PARM:
$!
$ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= -
"Enter the term to run this report for >>> " FSTTRMIN
$ LEN_FSTTRMIN = F$LENGTH(FSTTRMIN)
$ IF LEN_FSTTRMIN .NE. 5 THEN GOTO ENTER_PARM
$ TYP_FSTTRMIN = F$TYPE(FSTTRMIN)
$ IF TYP_FSTTRMIN .NES. "INTEGER" THEN GOTO ENTER_PARM
$!
$! Build parameter for (FOCEXEC name)
$!
$ EXEC1_REC = "EXEC (FOCEXEC name) FSTTRM=" + FSTTRMIN
$ OPEN/READ INPUT_FILE SI$FEX_USER:(FOCEXEC name).COM
$ OPEN/WRITE OUTPUT_FILE SI$FEX_USER:(FOCEXEC name).TMP
$!
$READ_MORE_001:
$!
$ READ/END_OF_FILE=BEGIN_001 INPUT_FILE IN_RECORD
$ IF F$EXTRACT(0,4,IN_RECORD) .EQS. "EXEC"
$ THEN
$ WRITE OUTPUT_FILE EXEC1_REC
$ ELSE
$ OUTFILE_REC = IN_RECORD
$ WRITE OUTPUT_FILE OUTFILE_REC
$ ENDIF
$ GOTO READ_MORE_001
$!
$BEGIN_001:
$!
$ CLOSE OUTPUT_FILE
$ CLOSE INPUT_FILE
$ RENAME SI$FEX_USER:(FOCEXEC name).TMP SI$FEX_USER:(FOCEXEC name).COM;/LOG
$ SUBMIT/QUE=SYS$FOCUS SI$FEX_USER:(FOCEXEC name).COM
$!
$EXIT:
$!
$ EXIT
Typical DCL Command Procedure to actually run the program :
$!
$! THIS COMMAND PROCEDURE RUNS THE FOCEXEC THAT CREATES THE
$! ADMISSIONS RESIDENCY CHECK REPORT.
$!
$ DELETE SI$FEX_USER:*.FTM;*/LOG
$ DELETE SI$FEX_USER:*.MAS;*/LOG
$ DELETE SI$FEX_USER:*.WP;*/LOG
$ DEFINE FOC$DIR2 SI$DATA, SI$MFD
$ SET DEFAULT SI$FEX_USER
$ FOCUS
EXEC (FOCEXEC name) FSTTRM=(Enrollment Term)
FIN
$ NAME = F$GETJPI("","USERNAME")
$ MAIL/SUBJECT="ADMISSIONS RESIDENCY CHECK-(FOCEXEC name)" PLAY.WP 'NAME'
$ EXIT
FOCUS program :
-*
JOIN CLEAR *
SET PAGE=NOPAGE
SET LINES=999999
-*
-* SELECT ALL CURRICULUM STUDENTS THAT HAVE AN OPEN MATRICULATION FOR
-* THE INPUT TERM; GET RESIDENCY STATUS OF MATRICULATION RECORD
-*
TABLE FILE AAFILE
PRINT AA_RES_STAT BY STU_ID
ON TABLE HOLD AS AATEMP1
WHERE (ENTRY_TERM LE '&FSTTRM') AND
(EXIT_TERM GE '&FSTTRM');
WHERE EXIT_DT EQ 00000000;
WHERE COLLEGE NE 'CE';
WHERE AA060_ORDER LE AP_CNTR;
END
-*
-* REMOVE DUPLICATES
-*
DEFINE FILE AATEMP1
THS_REC/A1 = IF STU_ID NE LAST STU_ID THEN 'Y' ELSE 'N';
END
TABLE FILE AATEMP1
PRINT AA_RES_STAT BY STU_ID
ON TABLE HOLD AS AATEMP2
WHERE THS_REC EQ 'Y';
END
-*
-* SELECT STUDENTS WHO ARE ENROLLED FOR THE INPUT TERM;
-* GET RESIDENCY STATUS OF TERM RECORD
-*
MATCH FILE AATEMP2
PRINT AA_RES_STAT BY STU_ID
RUN
FILE RTFILE
PRINT TERM_RESIDENCY BY STU_ID
WHERE CURR_ATTEMPTED_HRS GT 0;
WHERE TERM EQ '&FSTTRM';
WHERE TERM_RESIDENCY NE 'S';
AFTER MATCH HOLD OLD-AND-NEW
END
-RUN
-*
-* PRODUCE REPORT; GET RESIDENCY EXCLUSION DATE
-*
JOIN STU_ID IN HOLD TO STU_ID IN AAFILE AS J1
TABLE FILE HOLD
PRINT AA_RES_STAT AS 'Matriculation,Residency,Status'
TERM_RESIDENCY AS 'Term,Residency,Status'
RESID_QUEST_DT AS 'Residency,Exclusion,Date'
BY STU_ID AS 'Student ID'
ON TABLE SAVE AS PLAY FORMAT WP
WHERE AA_RES_STAT NE TERM_RESIDENCY;
END
-*
JOIN CLEAR *
This page hosted by
Get your own Free Homepage