Typical DCL Command Procedure to run the program :
$!
$! This command procedure will allow a faculty member to send grades
$! to a student's Campus Pipeline e-mail account.
$!
$ SET NOVERIFY
$ SET NOCONTROL_Y
$!
$ SAY :== "WRITE SYS$OUTPUT"
$!
$! Delete any hold files that may have been left over from previous runs.
$!
$ DELETE/LOG SYS$LOGIN:*.FTM;*
$ DELETE/LOG SYS$LOGIN:*.MAS;*
$ COPY SI$FEX:ZKFILE.MFD; SYS$LOGIN:*.MAS;
$!
$ CL
$!
$ SAY " "
$ SAY "Sending Grades To A Student's Campus Pipeline E-mail Account..."
$ SAY " "
$!
$! Prompt for e-mail subject.
$!
$ READ SYS$COMMAND/TIME=60/END=EXIT_LOOP/ERROR=EXIT_LOOP/PROMPT= -
"E-mail Subject >>> " SUBJIN
$!
$! Prompt for course section.
$!
$ENTER_PARM_CRS:
$!
$ SAY ""
$ SAY "Enter the course section to send grades for..."
$ SAY ""
$ SAY "Ex : ENG 101 01 {for a single section} or "
$ READ SYS$COMMAND/TIME=60/END=EXIT_LOOP/ERROR=EXIT_LOOP/PROMPT= -
" ENG 101 {for all sections} >>> " CRSIN
$ LEN_CRSIN = F$LENGTH(CRSIN)
$ IF (LEN_CRSIN .NE. 10) .AND. (LEN_CRSIN .NE. 7) THEN GOTO ENTER_PARM_CRS
$ TYP_CRSIN = F$TYPE(CRSIN)
$ IF TYP_CRSIN .NES. "STRING" THEN GOTO ENTER_PARM_CRS
$!
$ IF (LEN_CRSIN .EQ. 7)
$ THEN
$ CRSIN = F$EDIT(CRSIN,"UPCASE") + " $$"
$ ELSE
$ CRSIN = F$EDIT(CRSIN,"UPCASE")
$ ENDIF
$!
$! Create/run FOCUS program for given course section(s).
$!
$ CL
$ SAY ""
$ SAY "Please wait while course information is retrieved from SIS..."
$ SAY ""
$!
$ 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$FEX_USER:(FOCEXEC name)"
$ WRITE output_file CRSIN
$ WRITE output_file "FIN"
$ WRITE output_file "$ EXIT"
$!
$ CLOSE output_file
$ SUBMIT/NOPRINT/NOTIFY 'COM_FILE'
$ SYNCHRONIZE FOCTEMP
$!
$! Check to see if hold files were created.
$!
$ IF (F$SEARCH("SYS$LOGIN:RTTEMP2.FTM;") .EQS. "")
$ THEN
$ CL
$ SAY " "
$ SAY "No course enrollment found for the following : "
$ SAY ''CRSIN'
$ SAY " "
$ WAIT 00:00:05
$ EXIT
$ ENDIF
$!
$! Prompt faculty member to enter in grade for each student in class.
$! Create and send e-mail containing grade.
$!
$ CL
$ OPEN/READ input_file SYS$LOGIN:RTTEMP2.FTM
$ OPEN/WRITE output_file SYS$LOGIN:SEND_CP_EMAIL.COM
$!
$BEGIN_READ:
$!
$ READ/END=END_READ input_file in_record
$!
$ IF F$EDIT(F$EXTRACT(32,30,in_record),"TRIM") .NES. ""
$ THEN
$ SAY " "
$ SAY "Student Name : " + F$EXTRACT(0,32,in_record)
$ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= -
"Grade (if no grade, enter *) >>> " GRDIN
$!
$ IF GRDIN .NES. "*"
$ THEN
$ WRITE output_file "$ MAIL"
$ WRITE output_file "SEND
$ WRITE output_file -
"SMTP%" + """" + -
F$EDIT(F$EXTRACT(32,30,in_record),"TRIM") + -
"@(e-mail address)" + """"
$ WRITE output_file SUBJIN + " - " + CRSIN
$ WRITE output_file "Grade : " + GRDIN
$ WRITE output_file "$!"
$ ENDIF
$ ENDIF
$!
$ GOTO BEGIN_READ
$!
$END_READ:
$!
$ CLOSE input_file
$ CLOSE output_file
$!
$ @SYS$LOGIN:SEND_CP_EMAIL
$!
$EXIT:
$!
$ CLOSE input_file
$ CLOSE output_file
$ EXIT
FOCUS program :
SET PAGE = NOPAGE
SET LINES = 999999
JOIN CLEAR *
-SET &TERM='(Enrollment Term)';
-*PROMPT &TERM/A5.ENTER THE FIVE DIGIT TERRM OF INPUT COURSE SECTION (CCYYX) :
-PROMPT &CRS/A9.ENTER THE NAME OF INPUT COOURSE SECTION (EX : YOD 626 40) :
-*
-* Select students enrolled in input courrses for the specified term.
-*
TABLE FILE RTFILE
PRINT SECTION_ID
BY STU_ID
WHERE SPE_STATUS NE 'D';
WHERE (OFFICIAL_GRADE NE 'W') AND (OFFICIAL_GRADE NE 'WF') AND
(OFFICIAL_GRADE NE 'WF*');
WHERE SECTION_ID EQ '&CRS';
WHERE RT020_ORDER LE STU_PGM_ENTRY_CNTR;
WHERE TERM EQ '&TERM';
ON TABLE HOLD AS RTTEMP1
END
-*
-* Retrieve Campus Pipeline Id.
-*
FILEDEF ZKFILE DISK ZS$DATA:ZKFILE.DAT
TABLE FILE ZKFILE
PRINT ZK_PERSON_ID BY ZK_APPLICATION_ID
ON TABLE HOLD AS ZKTEMP1
END
-*
-* Retrieve student information.
-*
JOIN STU_ID IN RTTEMP1 TO KEY IN AAFILE AS J1
JOIN STU_ID IN RTTEMP1 TO ZK_APPLICATION_ID IN ZKTEMP1 AS J2
DEFINE FILE RTTEMP1
-*
TMP_NAME/A32=GETTOK(STU_NAME,32,2,',',32,TMP_NAME);
SFX_NAME/A5=GETTOK(STU_NAME,32,3,',',5,SFX_NAME);
FMN_NAME/A32=LJUST(32,TMP_NAME,FMN_NAME);
FST_NAME/A32=GETTOK(FMN_NAME,32,1,' ',32,FST_NAME);
MDL_NAME/A32=GETTOK(FMN_NAME,32,2,' ',32,MDL_NAME);
LST_NAME/A32=GETTOK(STU_NAME,32,1,',',32,LST_NAME);
EXPNDNME/A72=FMN_NAME || (' ' | LST_NAME | ' ') || SFX_NAME || '*';
CMPRSNME/A32=GETTOK(EXPNDNME,66,1,'*',32,CMPRSNME);
FUL_NAME/A32=LJUST(32,CMPRSNME,FUL_NAME);
-*
END
TABLE FILE RTTEMP1
PRINT FUL_NAME ZK_PERSON_ID STU_ID
BY STU_NAME NOPRINT
ON TABLE SAVE AS RTTEMP2
END
JOIN CLEAR *
This page hosted by
Get your own Free Homepage