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

Hosted by www.Geocities.ws

1