Typical DCL Command Procedure to run the program :
$ DEFINE FOC$DIR1 SI$DATA
$ DEFINE FOC$DIR2 SI$FEX,SI$MFD
$ FOCUS
EXEC (FOCEXEC name) TERM_IN=(input term to select from)
FIN
$ EXIT
FOCUS program :
JOIN CLEAR *
-*
-* Get all students enrolled for the current term.
-*
TABLE FILE RTFILE
PRINT CURR_ATTEMPTED_HRS BY STU_ID
WHERE CURR_ATTEMPTED_HRS GT 0;
WHERE TERM EQ '&TERM_IN';
ON TABLE HOLD AS RTTEMP1
END
-*
-* Calculate the "term" for all students who have college history
-* on screen 211.
-*
JOIN STU_ID IN RTTEMP1 TO STU_ID IN RBFILE AS J1
TABLE FILE RTTEMP1
PRINT CO_BEGIN_DT CO_END_DT BY STU_ID
ON TABLE HOLD AS RBTEMP1
WHERE RB040_ORDER LE COLLEGE_CNTR;
END
-*
DEFINE FILE RBTEMP1
ALPHA_BD/A6=EDIT(CO_BEGIN_DT);
ALPHA_ED/A6=EDIT(CO_END_DT);
COLL_DT_FND/A6=IF (ALPHA_BD EQ '000000') AND (ALPHA_ED EQ '000000')
THEN '000000' ELSE
IF (ALPHA_BD EQ '000000') AND (ALPHA_ED NE '000000')
THEN ALPHA_ED ELSE ALPHA_BD;
COLL_DT_CNV/A6=IF COLL_DT_FND EQ '(key to use if no dates available)'
THEN '000000' ELSE COLL_DT_FND;
END
TABLE FILE RBTEMP1
PRINT CO_BEGIN_DT CO_END_DT
BY STU_ID
BY COLL_DT_CNV
ON TABLE HOLD AS RBTEMP2
END
-*
-* Remove duplicates
-*
DEFINE FILE RBTEMP2
THS_REC/A1=IF STU_ID NE LAST STU_ID THEN 'Y' ELSE 'N';
END
TABLE FILE RBTEMP2
PRINT COLL_DT_CNV
BY STU_ID
ON TABLE HOLD AS RBTEMP3
WHERE THS_REC EQ 'Y';
END
-*
DEFINE FILE RBTEMP3
COLL_TRM_YR/A4=EDIT(COLL_DT_CNV,'9999');
COLL_TRM_MON/A2=EDIT(COLL_DT_CNV,'$$$$99');
COLL_YR_NUM/I4=EDIT(COLL_TRM_YR);
-*
-* We converted from quarter to semester terms in 1992; so
-* create term accordingly.
-*
COLL_SEM/A1=IF COLL_TRM_YR LE '1992' THEN
DECODE COLL_TRM_MON(01 '3' 02 '3' 03 '4' 04 '4' 05 '4' 06 '1' 07 '1' 08 '1'
09 '2' 10 '2' 11 '2' 12 '3' ELSE '*') ELSE
DECODE COLL_TRM_MON(01 '2' 02 '2' 03 '2' 04 '2' 05 '3' 06 '3' 07 '3' 08 '3'
09 '1' 10 '1' 11 '1' 12 '1' ELSE '*');
-*
CORRECT_YR_NUM/I4=IF ((COLL_SEM EQ '1') OR (COLL_SEM EQ '2')) AND
(COLL_TRM_YR LE '1992') THEN COLL_YR_NUM
ELSE IF ((COLL_SEM EQ '3') OR (COLL_SEM EQ '4')) AND
(COLL_TRM_YR LE '1992') THEN COLL_YR_NUM - 1
ELSE IF (COLL_SEM EQ '1') AND (COLL_TRM_YR GT '1992') THEN
COLL_YR_NUM
ELSE IF ((COLL_SEM EQ '2') OR (COLL_SEM EQ '3')) AND
(COLL_TRM_YR GT '1992') THEN COLL_YR_NUM - 1;
-*
CORRECT_YR_ALPHA/A4=EDIT(CORRECT_YR_NUM);
WHAT_TRM/A5=IF COLL_DT_CNV EQ '000000' THEN '*****'
ELSE IF (COLL_DT_CNV EQ '199206') OR (COLL_DT_CNV EQ '199207') OR
(COLL_DT_CNV EQ '199208') THEN '19920'
ELSE CORRECT_YR_ALPHA|COLL_SEM;
END
TABLE FILE RBTEMP3
PRINT WHAT_TRM BY STU_ID
ON TABLE HOLD AS RBTEMP4
END
-*
-* Get the first term student enrolled in a non-CE major.
-*
-* Get the term array for each student; this will show the terms a
-* student was active in.
-*
JOIN STU_ID IN RTTEMP1 TO STU_ID IN AAFILE AS J2
TABLE FILE RTTEMP1
PRINT TERM_STAT_ARRAY_1 BY STU_ID
ON TABLE HOLD AS AATEMP1
WHERE TERM_STAT_ARRAY_1 NE '';
END
-*
-* Create the join keys to hook to the RTFILE.
-*
DEFINE FILE AATEMP1
JN_KEY/A14=(TERM_STAT_ARRAY_1|STU_ID);
END
TABLE FILE AATEMP1
PRINT TERM_STAT_ARRAY_1 STU_ID BY JN_KEY
ON TABLE HOLD AS AATEMP2
END
-*
-* Join to RTFILE to get college information
-* for each term a student was active in.
-*
JOIN JN_KEY IN AATEMP2 TO KEY IN RTFILE AS J2
TABLE FILE AATEMP2
PRINT COLLEGE TERM_STAT_ARRAY_1 BY STU_ID
ON TABLE HOLD AS AATEMP3
END
-*
-* Remove all terms when a student was in a CE major.
-*
TABLE FILE AATEMP3
PRINT TERM_STAT_ARRAY_1 BY STU_ID
ON TABLE HOLD AS AATEMP4
WHERE COLLEGE NE 'CE';
END
-*
-* Remove duplicates
-*
DEFINE FILE AATEMP4
THS_REC/A1=IF STU_ID NE LAST STU_ID THEN 'Y' ELSE 'N';
EXP_TERM/A5=TERM_STAT_ARRAY_1;
END
TABLE FILE AATEMP4
PRINT EXP_TERM BY STU_ID
ON TABLE HOLD AS AATEMP5
WHERE THS_REC EQ 'Y';
END
-*
-* Join two files created above back to the original.
-*
MATCH FILE RTTEMP1
PRINT CURR_ATTEMPTED_HRS BY STU_ID
RUN
FILE RBTEMP4
PRINT WHAT_TRM BY STU_ID
AFTER MATCH HOLD OLD-OR-NEW
END
-RUN
-*
MATCH FILE HOLD
PRINT WHAT_TRM BY STU_ID
RUN
FILE AATEMP5
PRINT EXP_TERM BY STU_ID
AFTER MATCH HOLD OLD-OR-NEW
END
-RUN
-*
DEFINE FILE HOLD
HE_TRM/A5=IF WHAT_TRM EQ '******'
THEN '(key to use if first term can't be determined)'
ELSE IF WHAT_TRM EQ '' THEN EXP_TERM
ELSE IF WHAT_TRM LT EXP_TERM
THEN '(key to use if first term can't be determined)'
ELSE EXP_TERM;
END
TABLE FILE HOLD
PRINT HE_TRM BY STU_ID
ON TABLE SAVE AS FSTTRM
END
JOIN CLEAR *
This page hosted by
Get your own Free Homepage