Typical DCL Command Procedure to run the program :
$!
$! CE-ASSIGN-GRD.COM
$!
$! This command procedure will create the batch transactions in order to
$! assign grades to a continuing education course.
$!
$ SET NOVERIFY
$ SET NOCONTROL_Y
$ ASK := READ/PROMPT=
$ SAY := WRITE SYS$OUTPUT
$ CL :== SET TERM/WIDTH=80
$!
$! Delete any hold files that may have been left over from previous runs.
$!
$ DELETE/LOG SYS$LOGIN:*.FTM;*
$!
$ CL
$!
$! Get current batch number.
$!
$ OPEN/READ num_file BTH_NUM_1288.DAT
$ READ num_file num_record
$ CLOSE num_file
$ batch_num = F$STRING(F$INTEGER(F$EXTRACT(0,3,num_record))+1)
$ IF batch_num .EQS. "599"
$ THEN
$ batch_num = "590"
$ ENDIF
$!
$! Create batch transaction file and write out header record.
$!
$ OPEN/WRITE trans_file SYS$LOGIN:TRANSFILE.DOC
$ WRITE trans_file "$$$MSC" + batch_num + " CE GRADE UPD YMS"
$ CLOSE trans_file
$!
$! Write out new batch number.
$!
$ OPEN/WRITE num_file BTH_NUM_1288.DAT
$ WRITE num_file batch_num
$ CLOSE num_file
$!
$! Create course section list file.
$!
$ OPEN/WRITE crs_file SYS$LOGIN:CRSFILE.DOC
$ CLOSE crs_file
$!
$! Create student ids file.
$!
$ OPEN/WRITE ssn_file SYS$LOGIN:CE_GRD.DAT
$ CLOSE ssn_file
$!
$! Prompt for term.
$!
$ENTER_PARM_TERM:
$!
$ SAY ""
$ READ SYS$COMMAND/TIME=60/END=EXIT_LOOP/ERROR=EXIT_LOOP/PROMPT= -
"Enter the five digit term to run process 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 course section.
$!
$ENTER_PARM_CRS:
$!
$ SAY ""
$ SAY "Enter the course section to assign grades "
$ READ SYS$COMMAND/TIME=60/END=EXIT_LOOP/ERROR=EXIT_LOOP/PROMPT= -
"for (ex : ENG 10201) >>> " CRSIN
$ LEN_CRSIN = F$LENGTH(CRSIN)
$ IF LEN_CRSIN .NE. 9 THEN GOTO ENTER_PARM_CRS
$ TYP_CRSIN = F$TYPE(CRSIN)
$ IF TYP_CRSIN .NES. "STRING" THEN GOTO ENTER_PARM_CRS
$!
$! Add course section to list.
$!
$ OPEN/APPEND crs_file SYS$LOGIN:CRSFILE.DOC
$ WRITE crs_file CRSIN
$ CLOSE crs_file
$!
$! Prompt user for any student ids to assign a grade of W to.
$!
$ CL
$ SAY ""
$ ASK "Any students to be given a grade of W [N]? " SYS$COMMAND YN
$ IF YN .EQS. "" THEN YN = "N"
$ IF YN .EQS. "N" THEN GOTO PROMPT_MORE_CRS
$!
$FIRST_ASK:
$!
$ READ SYS$COMMAND/TIME=60/END=EXIT_LOOP/ERROR=EXIT_LOOP/PROMPT= -
"Student Id <RETURN> or CONTROL-Z to exit : " SSN
$ IF SSN .EQS. "" THEN GOTO PROMPT_MORE_CRS
$ IF (F$LENGTH(SSN) .NE. 9) .OR. (F$TYPE(SSN) .NES. "INTEGER")
$ THEN
$ SAY " "
$ SAY " "
$ SAY "Student Id must be 9 digits"
$ SAY " "
$ GOTO FIRST_ASK
$ ENDIF
$!
$ ssn_line = CRSIN + " " + F$STRING(SSN)
$!
$ OPEN/APPEND ssn_file SYS$LOGIN:CE_GRD.DAT
$ WRITE ssn_file ssn_line
$ CLOSE ssn_file
$!
$ GOTO FIRST_ASK
$!
$! Prompt user for more course sections.
$!
$PROMPT_MORE_CRS:
$!
$ CL
$ SAY ""
$ ASK "Enter in more courses [Y]? " SYS$COMMAND YN
$ IF YN .EQS. "" THEN YN = "Y"
$ IF YN .EQS. "Y" THEN GOTO ENTER_PARM_CRS
$!
$! Create/run FOCUS program for all course sections in list.
$!
$ CL
$ SAY ""
$ SAY "Please wait while program executes..."
$ SAY ""
$ OPEN/READ crs_file SYS$LOGIN:CRSFILE.DOC
$!
$READ_LOOP_FST:
$!
$ READ/END_OF_FILE=EXIT_LOOP_FST crs_file crs_record
$ 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 CE-ASSIGN-GRD"
$ WRITE output_file TERMIN
$ WRITE output_file F$EXTRACT(0,9,crs_record)
$ WRITE output_file "FIN"
$ WRITE output_file "$ EXIT"
$!
$ CLOSE output_file
$ SUBMIT/NOPRINT/NOTIFY 'COM_FILE'
$ SYNCHRONIZE FOCTEMP
$!
$ GOTO READ_LOOP_FST
$!
$EXIT_LOOP_FST:
$!
$ CLOSE crs_file
$!
$! Create/append batch transactions to file.
$!
$ OPEN/READ input_file SYS$LOGIN:CEUPD.FTM
$ OPEN/APPEND trans_file SYS$LOGIN:TRANSFILE.DOC
$!
$! Modify batch transactions for those students who are to be graded
$! a "W".
$!
$READ_LOOP_OUT:
$!
$ READ/END_OF_FILE=EXIT_LOOP_OUT input_file in_record
$ OPEN/READ chk_file SYS$LOGIN:CE_GRD.DAT
$!
$ INP_CRS_SEC = F$EXTRACT(20,9,in_record)
$ INP_SSN_NUM = F$EXTRACT(3,9,in_record)
$!
$READ_LOOP_IN:
$!
$ READ/END_OF_FILE=EXIT_LOOP_IN chk_file chk_record
$ CHK_CRS_SEC = F$EXTRACT(0,9,chk_record)
$ CHK_SSN_NUM = F$EXTRACT(10,9,chk_record)
$ IF (CHK_CRS_SEC .EQS. INP_CRS_SEC) .AND. -
(CHK_SSN_NUM .EQS. INP_SSN_NUM)
$ THEN
$ WRITE trans_file F$EXTRACT(0,38,in_record) + "W"
$ CLOSE chk_file
$ GOTO READ_LOOP_OUT
$ ELSE
$ GOTO READ_LOOP_IN
$ ENDIF
$!
$EXIT_LOOP_IN:
$!
$ CLOSE chk_file
$ WRITE trans_file in_record
$ GOTO READ_LOOP_OUT
$!
$EXIT_LOOP_OUT:
$!
$ CLOSE input_file
$ CLOSE trans_file
$!
$ CONVERT/APPEND SYS$LOGIN:TRANSFILE.DOC SI$DATA:AIB2FL.DAT
$!
$ CL
$ SAY " "
$ SAY "The information on screen SP1 will be updated overnight."
$ SAY " "
$ WAIT 00:00:05
$!
$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;*
$ DELETE/LOG SYS$LOGIN:TRANSFILE.DOC;*
$ DELETE/LOG SYS$LOGIN:CRSFILE.DOC;*
$ DELETE/LOG SYS$LOGIN:CE_GRD.DAT;*
$ EXIT
FOCUS program :
-*begin doc
-*
-*FEX: CE-ASSIGN-GRD
-*
-* This FOCUS request will create the batch transactions in order to
-* assign grades to a continuing education course section for a given
-* term.
-*
-*INPUT
-* TERM : Term of input course section
-* CRS : Name of input course section
-*
-*end doc
-**********************************************************************
SET PAGE = NOPAGE
SET LINES = 999999
JOIN CLEAR *
FILEDEF CEUPD DISK CEUPD.FTM APPEND LREC 80 RECFM F
-PROMPT &TERM/A5.ENTER THE FIVE DIGIT TERM OF INPUT COURSE SECTION (CCYYX) :
-PROMPT &SECID/A9.ENTER THE NAME OF INPUT COURSE SECTION (EX : ENG 10201) :
-*
-* Create batch transactions to update screen SP1.
-*
DEFINE FILE RTFILE
BTH_TRANS/A80 = ('45B'|STU_ID|'GRD'|'&TERM'|'&SECID'|' S');
END
TABLE FILE RTFILE
PRINT BTH_TRANS AS '' BY STU_ID NOPRINT
ON TABLE SAVE AS CEUPD
WHERE TERM EQ '&TERM';
WHERE SECTION_ID EQ '&SECID';
WHERE OFFICIAL_GRADE EQ '';
WHERE SPE_STATUS NE 'D';
END
JOIN CLEAR *
This page hosted by
Get your own Free Homepage