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

Hosted by www.Geocities.ws

1