Typical DCL Command Procedure to run the program :
$!
$! GRADE_MAILER.COM
$!
$! THIS COMMAND PROCEDURE WILL PRODUCE THE GRADE MAILERS FROM SIS.
$!
$ SET NOVERIFY
$ SET NOCONTROL_Y
$ ASK := READ/PROMPT=
$ SAY := WRITE SYS$OUTPUT
$!
$ GOSUB MAKE_DATE
$!
$ASK_LOOP:
$!
$ CL
$ SAY ""
$!
$! Prompt for term.
$!
$ENTER_PARM_TERM:
$ READ SYS$COMMAND/TIME=60/END=EXIT_LOOP/ERROR=EXIT_LOOP/PROMPT= -
"Enter the five digit term to run grade mailers for (CCYYX) >>> " 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 term session.
$!
$ENTER_PARM_SESS:
$ SAY ""
$ SAY "Enter session to run grade mailers for..."
$ READ SYS$COMMAND/TIME=60/END=EXIT_LOOP/ERROR=EXIT_LOOP/PROMPT= -
"Default is all sessions [ALL] >>> " SESSION
$ IF SESSION .EQS. "" THEN SESSION = "ALL"
$ SESSION = F$EDIT(SESSION, "TRIM")
$!
$! Let user check parameters before running program.
$!
$ CL
$ SAY " "
$ SAY "Term ''TERMIN' "
$ SAY "Session ''SESSION' "
$ SAY " "
$ ASK "Is the above information correct Y/N [Y]? " SYS$COMMAND YN
$ IF YN .EQS. "" THEN YN = "Y"
$ IF .NOT. YN THEN GOTO ASK_LOOP
$!
$ NAME = F$GETJPI("","USERNAME")
$ CL
$ SAY ""
$ SAY "Please wait while program executes..."
$ SAY ""
$!
$! Create and execute FOCUS job.
$!
$ 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:GRADE_MAILER"
$ WRITE output_file TERMIN
$ WRITE output_file SESSION
$ WRITE output_file "FIN"
$ WRITE output_file "$ EXIT"
$!
$ CLOSE output_file
$ SUBMIT/NOPRINT/NOTIFY 'COM_FILE'
$ SYNCHRONIZE FOCTEMP
$!
$! Reformat resulting FOCUS data file so file can be printed on FDTC's
$! grade mailer form.
$!
$ GOSUB FORMAT_PRINT_FILE
$!
$EXIT_LOOP:
$!
$ SAY " "
$ SAY "All done..."
$ SAY " "
$!
$! CLEAN UP.
$!
$ DELETE/LOG SYS$LOGIN:*.FTM;*
$ DELETE/LOG SYS$LOGIN:*.MAS;*
$ DELETE/LOG SYS$LOGIN:*.WP;*
$ DELETE/LOG SYS$LOGIN:FOCTEMP.COM;*
$ EXIT
$!
$! SUBROUTINES
$!
$FORMAT_PRINT_FILE:
$!
$ CNT = 0
$ PRINT_CNT = 0
$!
$ OPEN/READ input_file SYS$LOGIN:GRDROS.WP
$ OPEN/WRITE output_file SYS$LOGIN:GRDROS.PRT
$!
$ READ input_file input_record
$!
$PRINT_LOOP:
$!
$ WRITE output_file " "
$ PRINT_CNT = PRINT_CNT + 1
$!
$! Read all course data for a student.
$!
$READ_LOOP:
$!
$ READ/END=EOF input_file input_record
$ WRITE output_file input_record
$ CNT = CNT + 1
$ IF input_record .EQS. " "
$ THEN
$ GOSUB BLANK_LINES
$ GOSUB BOTTOM_FORM
$!
$! Check to see if one sheet has been used (each sheet holds three
$! students.
$!
$ IF PRINT_CNT .EQ. 3
$ THEN
$ PRINT_CNT = 0
$ ELSE
$ WRITE output_file " "
$ WRITE output_file " "
$ WRITE output_file " "
$ ENDIF
$ CNT = 0
$ GOTO PRINT_LOOP
$ ENDIF
$ GOTO READ_LOOP
$!
$EOF:
$!
$ CLOSE input_file
$ CLOSE output_file
$ RETURN
$!
$! Once all course data has been read for a student, insert blank lines
$! from last course read/written to bottom of grade mailer form.
$!
$BLANK_LINES:
$!
$ LC = 11 - CNT
$!
$BLANK_LOOP:
$!
$ IF LC .LE. 0 THEN RETURN
$ WRITE output_file " "
$ LC = LC -1
$ GOTO BLANK_LOOP
$ RETURN
$!
$! Read/write remaining student data (address, advisor, cumulative stats,
$! etc.)
$!
$BOTTOM_FORM:
$!
$ BC = 0
$!
$BOTTOM_LOOP:
$!
$ IF BC .GE. 8 THEN RETURN
$ READ/END=EOF input_file input_record
$!
$! Check to see if record read contains date verbiage, if so add date.
$!
$ IF F$EXTRACT(54,5,input_record) .EQS. "DATE:"
$ THEN
$ WRITE output_file input_record + " " + DATE
$ ELSE
$ WRITE output_file input_record
$ ENDIF
$ BC = BC + 1
$ GOTO BOTTOM_LOOP
$ RETURN
$!
$! Create date to print on grade mailer.
$!
$MAKE_DATE:
$!
$ MONTH_01 = "Jan"
$ MONTH_02 = "Feb"
$ MONTH_03 = "Mar"
$ MONTH_04 = "Apr"
$ MONTH_05 = "May"
$ MONTH_06 = "June"
$ MONTH_07 = "July"
$ MONTH_08 = "Aug"
$ MONTH_09 = "Sept"
$ MONTH_10 = "Oct"
$ MONTH_11 = "Nov"
$ MONTH_12 = "Dec"
$!
$ DAY = F$CVTIME("TODAY",,"DAY")
$ MON = F$CVTIME("TODAY",,"MONTH")
$ YEAR = F$CVTIME("TODAY",,"YEAR")
$!
$ IF F$EXTRACT(0,1,DAY) .EQS. "0"
$ THEN
$ DAY = F$EXTRACT(1,1,DAY)
$ ENDIF
$!
$ DATE = MONTH_'MON' + " " + DAY + ", " + F$EXTRACT(0,4,YEAR)
$!
$ RETURN
$!
$ EXIT
FOCUS program :
-*begin doc
-*
-*FEX: GRADE_MAILER
-*
-*Input
-* Term
-* Session
-*
-* This procedure produces the "official" grade mailer
-* for a given term.
-*
-*
-*end doc
-*
JOIN CLEAR *
SET LINES=999999
SET PAGE=NOPAGE
-PROMPT &TERM/A5.ENTER THE FIVE DIGIT TERM FOR GRADE MAILERS (CCYYX) :
-PROMPT &SESSION/A3.ENTER THE SESSION CODE FOR GRADE MAILERS [ALL] :
-*
-* Get student course information for input term and session.
-*
DEFINE FILE RTFILE
SESS/A3 = '&SESSION';
BSES/A1 = IF SESS EQ 'ALL' THEN ' ' ELSE EDIT(SESS,'9');
ESES/A1 = IF SESS EQ 'ALL' THEN '9' ELSE EDIT(SESS,'9');
END
TABLE FILE RTFILE
PRINT OFFICIAL_GRADE SECTION_ID CRS_ATTEMPTED_HRS SPE_EARNED_HOURS
CRS_QHRS CRS_QPTS CURR_EARNED_HRS CURR_QHRS CURR_QPTS CURR_GPA
COLLEGE CLASS_LEVEL MAJOR_1 DEGREE
BY STU_ID
WHERE (COLLEGE_SPE NE 'CE') AND (TERM EQ '&TERM') AND (SPE_STATUS NE 'D');
WHERE RT020_ORDER LE STU_PGM_ENTRY_CNTR;
WHERE (SESSION_CODE GE BSES) AND (SESSION_CODE LE ESES);
ON TABLE HOLD AS RTTEMP1
END
-*
-* Select students where field INFO_FLAG_29 (deceased) is blank;
-* also get student's name.
-*
JOIN STU_ID IN RTTEMP1 TO STU_ID IN AAFILE AS J1
DEFINE FILE RTTEMP1
RCKEY/A16 = '&TERM'|SECTION_ID;
END
TABLE FILE RTTEMP1
PRINT OFFICIAL_GRADE SECTION_ID CRS_ATTEMPTED_HRS SPE_EARNED_HOURS
CRS_QHRS CRS_QPTS CURR_EARNED_HRS CURR_QHRS CURR_QPTS CURR_GPA
COLLEGE CLASS_LEVEL MAJOR_1 DEGREE STU_NAME STU_ID
BY RCKEY
WHERE INFO_FLAG_29 EQ '';
WHERE AA050_ORDER LE SR_CNTR;
ON TABLE HOLD AS RTTEMP2
END
-*
-* Get course title for sections student is enrolled in.
-*
JOIN RCKEY IN RTTEMP2 TO KEY IN RCFILE AS J2
TABLE FILE RTTEMP2
PRINT OFFICIAL_GRADE SECTION_ID CRS_ATTEMPTED_HRS SPE_EARNED_HOURS
CRS_QHRS CRS_QPTS CURR_EARNED_HRS CURR_QHRS CURR_QPTS CURR_GPA
COLLEGE CLASS_LEVEL MAJOR_1 DEGREE STU_NAME RC_CRS_TITLE
BY STU_ID
ON TABLE HOLD AS RTTEMP3
END
-*
-* Get cumulative stats for student.
-*
SET ALL=PASS
-*
JOIN STU_ID IN RTTEMP3 TO STU_ID IN RAFILE AS J3
TABLE FILE RTTEMP3
PRINT OFFICIAL_GRADE SECTION_ID CRS_ATTEMPTED_HRS SPE_EARNED_HOURS
CRS_QHRS CRS_QPTS CURR_EARNED_HRS CURR_QHRS CURR_QPTS CURR_GPA
COLLEGE CLASS_LEVEL MAJOR_1 DEGREE STU_NAME RC_CRS_TITLE
CUM_EARNED_HRS CUM_QHRS COLL_HIST_QPTS COLL_HIST_GPA
BY STU_ID
WHERE CAREER_STU EQ 'T';
WHERE RA040_ORDER LE CUM_STATS_CNTR;
ON TABLE HOLD AS RTTEMP4
END
-*
-* Get student's advisor.
-*
JOIN STU_ID IN RTTEMP4 TO STU_ID IN AAFILE AS J4
DEFINE FILE RTTEMP4
ADVISOR/A9= EDIT(ADVISOR_ID_1,'999999999');
ADVKEY/A9 = IF ADVISOR LE '000000000' THEN '999999999' ELSE ADVISOR;
END
TABLE FILE RTTEMP4
PRINT OFFICIAL_GRADE SECTION_ID CRS_ATTEMPTED_HRS SPE_EARNED_HOURS
CRS_QHRS CRS_QPTS CURR_EARNED_HRS CURR_QHRS CURR_QPTS CURR_GPA
COLLEGE CLASS_LEVEL MAJOR_1 DEGREE STU_NAME RC_CRS_TITLE
CUM_EARNED_HRS CUM_QHRS COLL_HIST_QPTS COLL_HIST_GPA STU_ID
BY ADVKEY
WHERE AA050_ORDER LE SR_CNTR;
ON TABLE HOLD AS RTTEMP5
END
-*
-* Get advisor's last name.
-*
JOIN ADVKEY IN RTTEMP5 TO FAC_ID IN AYFILE AS J5
TABLE FILE RTTEMP5
PRINT OFFICIAL_GRADE SECTION_ID CRS_ATTEMPTED_HRS SPE_EARNED_HOURS
CRS_QHRS CRS_QPTS CURR_EARNED_HRS CURR_QHRS CURR_QPTS CURR_GPA
COLLEGE CLASS_LEVEL MAJOR_1 DEGREE STU_NAME RC_CRS_TITLE
CUM_EARNED_HRS CUM_QHRS COLL_HIST_QPTS COLL_HIST_GPA
FAC_NAME
BY STU_ID
ON TABLE HOLD AS RTTEMP6
END
-*
-* Get student's address; create file to be used to generate grade mailers.
-*
JOIN STU_ID IN RTTEMP6 TO STU_ID IN ADFILE AS J6
DEFINE FILE RTTEMP6
-INCLUDE SI$FOCUS:NAMEPARS.SEG
FOR_SID/A11 = EDIT (STU_ID, '999-99-9999');
-*
SEM/A1 = EDIT('&TERM','$$9');
SEMDEC/A6 = DECODE SEM (1 'Fall' 2 'Spring' 3 'Summer');
-*
BLANK/A1 = ' ';
ADVISOR/A15 = EDIT (FAC_NAME, '999999999999999');
-*
T1/A50 = CITY||(' '|STATE)||(' '|ZIP_CODE);
A1/A50 = IF STREET_2 EQ BLANK THEN T1 ELSE STREET_2;
A2/A50 = IF STREET_2 EQ BLANK THEN BLANK ELSE T1;
-*
QP/P06.2C = CRS_QPTS;
AH/P06.2C = CRS_ATTEMPTED_HRS;
EH/P06.2C = SPE_EARNED_HOURS;
-*
PEH/P06.2C = CURR_EARNED_HRS;
PQH/P06.2C = CURR_QHRS;
PQP/P06.2C = CURR_QPTS;
PGPA/P05.3C = CURR_GPA;
-*
TEH/P06.2C = CUM_EARNED_HRS;
TQH/P06.2C = CUM_QHRS;
TQP/P06.2C = COLL_HIST_QPTS;
TGPA/P05.3C = COLL_HIST_GPA;
-*
STUSTR/A27 = COLLEGE|' '|CLASS_LEVEL|' '|MAJOR_1|' '|DEGREE;
CSE/A10 = EDIT (SECTION_ID,'9999999-99');
TITLE/A25 = SUBSTR(32,RC_CRS_TITLE,1,25,25,'*************************');
END
-*
TABLE FILE RTTEMP6
PRINT
CSE AS '' IN 1
TITLE AS '' IN 13
AH AS '' IN 40
EH AS '' IN 48
CRS_QHRS AS '' IN 56
OFFICIAL_GRADE AS '' IN 66
QP AS '' IN 70
BY STU_NAME NOPRINT
BY STU_ID NOPRINT
ON STU_ID SUBFOOT
" "
" <STU_NAME <52 SSN: <FOR_SID "
" <STREET_1 <52 ADVISOR: <ADVISOR "
" <A1 <52 DATE: "
" <A2"
" "
"<46 <PEH <55 <PQH <63 <PQP <72 <PGPA"
"<2 <SEMDEC <12 <STUSTR <46 <TEH <55 <TQH <63 <TQP <72 <TGPA "
" "
WHERE AD020_ORDER LE ADDRESS_CTR;
WHERE (ADDR_TYPE_1 EQ 'P') OR (ADDR_TYPE_2 EQ 'P') OR (ADDR_TYPE_3 EQ 'P') OR
(ADDR_TYPE_4 EQ 'P') OR (ADDR_TYPE_5 EQ 'P');
ON TABLE HOLD AS GRDROS FORMAT WP
END
JOIN CLEAR *
This page hosted by
Get your own Free Homepage