Typical DCL Command Procedure to run the program :

$! 
$!	AM-CLOSE-MATR.COM
$! 
$!      Description:    Produces batch transactions to close matriculation
$!			records on students. 
$! 
$ SET NOVERIFY 
$ SAY :== "WRITE SYS$OUTPUT" 
$ CL
$! 
$ SAY "This process will produce transactions to close matriculation" 
$ SAY "records on students."
$ SAY "These transactions will be processed overnight."  
$ SAY " "
$ SAY "(AM-CLOSE-MATR)" 
$ SAY " "
$! 
$!  Prompt for term
$!
$ENTER_PARM_TERM: 
$ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= -   
  "Enter the 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
$!
$!  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:AM-CLOSE-MATR TERM=" + TERMIN 
$ WRITE output_file "FIN" 
$ WRITE output_file "$ EXIT" 
$! 
$ CLOSE output_file 
$ SAY ""
$ SAY "Please wait...
$ SAY ""
$ SUBMIT/NOPRINT/NOTIFY 'COM_FILE' 
$ SYNCHRONIZE FOCTEMP
$!
$!  MOVE RESULTING BATCH TRANSACTIONS TO MAINTENANCE CYCLE FEED FILE.
$!
$ CONVERT/APPEND SYS$LOGIN:MATRFIX.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 :

-*begin doc 
-*
-*FEX:  AM-CLOSE-MATR 
-*
-*      This FOCUS request will create the batch transactions to close
-*      matriculation records on students; those who did not attend for
-*      the input term.
-*
-*INPUT
-*      TERM  : Enrollment Term
-*
-*end doc
-**********************************************************************
SET PAGE = NOPAGE
SET LINES = 999999
JOIN CLEAR *
FILEDEF MATRFIX DISK MATRFIX.FTM APPEND LREC 80 RECFM F
-*
-*  Create The Batch Header
-*
DEFINE FILE AAFILE
BATCH_HEADER1/A40 = '$$$MSC501        MATRICULATE FX YAM     ';
BATCH_HEADER2/A40 = '                                        ';
END
TABLE FILE AAFILE
PRINT BATCH_HEADER1 AS ''
      BATCH_HEADER2 AS ''
BY STU_ID NOPRINT   
ON TABLE SAVE AS MATRFIX   
IF RECORDLIMIT EQ 1  
END
-*
-*  Get all open matriculations.
-*
TABLE FILE AAFILE
PRINT COLLEGE AP_DEG MAJOR ENTRY_TERM BY STU_ID
ON TABLE HOLD AS AATEMP1
WHERE ENTRY_TERM LE '&TERM';
WHERE EXIT_TERM GT '&TERM';
WHERE EXIT_ACTION NE 'GD';
WHERE AA060_ORDER LE AP_CNTR;
END
-*
-*  Get the term array for each student selected above; this will
-*  show the terms a student was active in.
-*
JOIN STU_ID IN AATEMP1 TO STU_ID IN AAFILE AS J1
TABLE FILE AATEMP1
PRINT COLLEGE AP_DEG MAJOR ENTRY_TERM TERM_STAT_ARRAY_1 
BY STU_ID
ON TABLE HOLD AS AATEMP2
WHERE TERM_STAT_ARRAY_1 NE '';
END
-*
-*  Create the join keys to hook to the RTFILE.
-*
DEFINE FILE AATEMP2
JN_KEY/A14=(TERM_STAT_ARRAY_1|STU_ID);
COLLEGE_MATR/A3=COLLEGE;
END
TABLE FILE AATEMP2
PRINT COLLEGE_MATR AP_DEG MAJOR ENTRY_TERM TERM_STAT_ARRAY_1 STU_ID  
BY JN_KEY
ON TABLE HOLD AS AATEMP3
END
-*
-*  Looks at open matriculations who have the major information
-*  listed as primary on screen 111.
-*
-*  Join to RTFILE to get college, degree, and major information
-*  for each term a student was active in {primary major}.
-*
JOIN JN_KEY IN AATEMP3 TO KEY IN RTFILE AS J2
TABLE FILE AATEMP3
PRINT COLLEGE DEGREE MAJOR_1 ENTRY_TERM 
BY STU_ID
BY COLLEGE_MATR 
BY AP_DEG 
BY MAJOR
BY HIGHEST TERM
ON TABLE HOLD AS AATEMP4
END
-*
-*  Selection criteria to create a link between a student's
-*  matriculation and their enrollment history {primary major}.
-*
DEFINE FILE AATEMP4
CHK_FLD_MJR/A11=(COLLEGE|DEGREE|MAJOR_1);
CHK_FLD_MAT/A11=(COLLEGE_MATR|AP_DEG|MAJOR);
-*
THS_REC/A1=IF (((CHK_FLD_MJR NE LAST CHK_FLD_MJR) OR
                (CHK_FLD_MAT NE LAST CHK_FLD_MAT)) AND 
               (STU_ID EQ LAST STU_ID) AND (COLLEGE_MATR EQ COLLEGE) AND 
               (AP_DEG EQ DEGREE) AND (MAJOR EQ MAJOR_1)) OR
               (STU_ID NE LAST STU_ID) THEN 'Y' ELSE 'N';
END
TABLE FILE AATEMP4
PRINT COLLEGE_MATR AP_DEG MAJOR ENTRY_TERM
      COLLEGE DEGREE MAJOR_1 TERM 
BY STU_ID
ON TABLE HOLD AS AATEMP5
WHERE THS_REC EQ 'Y';
END 
-*
-*  Select remaining records whose matriculation data is the same
-*  as term data {primary major}.
-*
DEFINE FILE AATEMP5
CHK_PROG/A11=COLLEGE_MATR|AP_DEG|MAJOR;
END
TABLE FILE AATEMP5
PRINT COLLEGE_MATR AP_DEG MAJOR
      COLLEGE DEGREE MAJOR_1 ENTRY_TERM
BY STU_ID
BY CHK_PROG
BY HIGHEST TERM
ON TABLE HOLD AS AATEMP6
WHERE (COLLEGE_MATR EQ COLLEGE) AND (AP_DEG EQ DEGREE) AND
      (MAJOR EQ MAJOR_1);
END 
-*
-*  Get most recent term that a student was registered in degree
-*  associated with matriculation {primary major}.
-*
DEFINE FILE AATEMP6
THS_REC/A1=IF (STU_ID NE LAST STU_ID) OR ((STU_ID EQ LAST STU_ID) AND
              (CHK_PROG NE LAST CHK_PROG)) THEN 'Y'
                                           ELSE 'N';
END
TABLE FILE AATEMP6
PRINT COLLEGE_MATR AP_DEG MAJOR ENTRY_TERM
      COLLEGE DEGREE MAJOR_1 TERM 
BY STU_ID
ON TABLE HOLD AS AATEMP7
WHERE THS_REC EQ 'Y';
END 
-*
-*  Looks at open matriculations who have the major information
-*  listed as secondary on screen 111.
-*
-*  Join to RTFILE to get college, degree, and major information
-*  for each term a student was active in {secondary major}.
-*
JOIN CLEAR *
JOIN JN_KEY IN AATEMP3 TO KEY IN RTFILE AS J3
TABLE FILE AATEMP3
PRINT COLLEGE_SEC DEGREE_SEC MAJOR_1_SEC ENTRY_TERM 
BY STU_ID
BY COLLEGE_MATR 
BY AP_DEG 
BY MAJOR
BY HIGHEST TERM
ON TABLE HOLD AS AATEMP10
WHERE MAJOR_1_SEC NE '';
END
-*
-*  Selection criteria to create a link between a student's
-*  matriculation and their enrollment history {secondary major}.
-*
DEFINE FILE AATEMP10
CHK_FLD_MJR/A11=(COLLEGE_SEC|DEGREE_SEC|MAJOR_1_SEC);
CHK_FLD_MAT/A11=(COLLEGE_MATR|AP_DEG|MAJOR);
-*
THS_REC/A1=IF (((CHK_FLD_MJR NE LAST CHK_FLD_MJR) OR
                (CHK_FLD_MAT NE LAST CHK_FLD_MAT)) AND 
               (STU_ID EQ LAST STU_ID) AND (COLLEGE_MATR EQ COLLEGE_SEC) AND 
               (AP_DEG EQ DEGREE_SEC) AND (MAJOR EQ MAJOR_1_SEC)) OR
               (STU_ID NE LAST STU_ID) THEN 'Y' ELSE 'N';
END
TABLE FILE AATEMP10
PRINT COLLEGE_MATR AP_DEG MAJOR ENTRY_TERM
      COLLEGE_SEC DEGREE_SEC MAJOR_1_SEC TERM 
BY STU_ID
ON TABLE HOLD AS AATEMP11
WHERE THS_REC EQ 'Y';
END 
-*
-*  Select remaining records whose matriculation data is the same
-*  as term data {secondary major}.
-*
DEFINE FILE AATEMP11
CHK_PROG/A11=COLLEGE_MATR|AP_DEG|MAJOR;
END
TABLE FILE AATEMP11
PRINT COLLEGE_MATR AP_DEG MAJOR ENTRY_TERM
      COLLEGE_SEC DEGREE_SEC MAJOR_1_SEC 
BY STU_ID
BY CHK_PROG
BY HIGHEST TERM
ON TABLE HOLD AS AATEMP12
WHERE (COLLEGE_MATR EQ COLLEGE_SEC) AND (AP_DEG EQ DEGREE_SEC) AND
      (MAJOR EQ MAJOR_1_SEC);
END 
-*
-*  Get most recent term that a student was registered in degree
-*  associated with matriculation {secondary major}.
-*
DEFINE FILE AATEMP12
THS_REC/A1=IF (STU_ID NE LAST STU_ID) OR ((STU_ID EQ LAST STU_ID) AND
              (CHK_PROG NE LAST CHK_PROG)) THEN 'Y'
                                           ELSE 'N';
END
TABLE FILE AATEMP12
PRINT COLLEGE_MATR AP_DEG MAJOR ENTRY_TERM
      COLLEGE_SEC DEGREE_SEC MAJOR_1_SEC TERM 
BY STU_ID
ON TABLE HOLD AS AATEMP13
WHERE THS_REC EQ 'Y';
END 
-*
-*  Combine two files {primary and secondary data}.
-*
-RUN
-VMS COPY AATEMP7.FTM,AATEMP13.FTM AATEMP14.FTM
-*
-*  Sort file so most recent term is first for each student.
-*
FILEDEF AATEMP13 DISK AATEMP14.FTM
DEFINE FILE AATEMP13
CHK_PROG/A11=COLLEGE_MATR|AP_DEG|MAJOR;
END
TABLE FILE AATEMP13
PRINT COLLEGE_MATR AP_DEG MAJOR ENTRY_TERM
      COLLEGE_SEC DEGREE_SEC MAJOR_1_SEC 
BY STU_ID
BY CHK_PROG
BY HIGHEST TERM
ON TABLE HOLD AS AATEMP15
END 
-*
-*  Get most recent term that a student was registered in degree
-*  associated with matriculation {all majors}.
-*
DEFINE FILE AATEMP15
THS_REC/A1=IF (STU_ID NE LAST STU_ID) OR ((STU_ID EQ LAST STU_ID) AND
              (CHK_PROG NE LAST CHK_PROG)) THEN 'Y'
                                           ELSE 'N';
END
TABLE FILE AATEMP15
PRINT COLLEGE_MATR AP_DEG MAJOR ENTRY_TERM
      COLLEGE_SEC DEGREE_SEC MAJOR_1_SEC TERM 
BY STU_ID
ON TABLE HOLD AS AATEMP16
WHERE THS_REC EQ 'Y';
END 
-*
-*  Select those whose last enrollment term within the matriculation
-*  is before the input term.
-*
TABLE FILE AATEMP16
PRINT COLLEGE_MATR AP_DEG MAJOR ENTRY_TERM
      COLLEGE_SEC DEGREE_SEC MAJOR_1_SEC TERM 
BY STU_ID
ON TABLE HOLD AS AATEMP17
WHERE TERM LT '&TERM';
END 
-*
-*  Create the batch transaction to close the matriculation on screen 110.
-*
DEFINE FILE AATEMP17
WHICH_TERM/A5=IF TERM LT ENTRY_TERM THEN ENTRY_TERM ELSE TERM;
BTH_TRANS/A80 = ('15C'|STU_ID|'        '|ENTRY_TERM|COLLEGE_MATR|AP_DEG|
MAJOR|'     '|WHICH_TERM|'EP');
END
TABLE FILE AATEMP17
PRINT BTH_TRANS AS '' BY STU_ID NOPRINT
ON TABLE SAVE AS MATRFIX   
END
-*
-*  Close matriculation records on students who never enrolled. 
-*  That is, there are no entries on screen 1E1.
-*
-*  Select students who did register. 
-*
JOIN CLEAR *
JOIN STU_ID IN AATEMP1 TO STU_ID IN AAFILE AS J1
TABLE FILE AATEMP1
PRINT TERM_STAT_ARRAY_1 BY STU_ID
ON TABLE HOLD AS AATEMP18
WHERE TERM_STAT_ARRAY_1 NE '';
END
-*
-*  Remove duplicates.
-*
DEFINE FILE AATEMP18
THS_REC/A1=IF STU_ID NE LAST STU_ID THEN 'Y' ELSE 'N';
END
TABLE FILE AATEMP18
PRINT TERM_STAT_ARRAY_1 BY STU_ID
ON TABLE HOLD AS AATEMP19
WHERE THS_REC EQ 'Y';
END
-*
-*  Select students who never enrolled. 
-*
MATCH FILE AATEMP1
PRINT COLLEGE AP_DEG MAJOR ENTRY_TERM BY STU_ID
RUN
FILE AATEMP19
PRINT TERM_STAT_ARRAY_1 BY STU_ID
AFTER MATCH HOLD OLD-NOT-NEW
END
-RUN
-*
-*  Create the batch transaction to close the matriculation on screen 110.
-*
DEFINE FILE HOLD
BTH_TRANS/A80 = ('15C'|STU_ID|'        '|ENTRY_TERM|COLLEGE|AP_DEG|
MAJOR|'     '|ENTRY_TERM|'EP');
END
TABLE FILE HOLD
PRINT BTH_TRANS AS '' BY STU_ID NOPRINT
ON TABLE SAVE AS MATRFIX   
END
JOIN CLEAR *

 

 

This page hosted by Get your own Free Homepage

Hosted by www.Geocities.ws

1