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

Hosted by www.Geocities.ws

1