Typical DCL Command Procedure to run the program :
$!
$! RE-DUP-REQS.COM
$!
$! This command procedure will create the batch transactions in order to
$! copy the pre-reqs/co-reqs from the input course section to all other
$! sections.
$!
$ SET NOVERIFY
$ SET NOCONTROL_Y
$ ASK := READ/PROMPT=
$ SAY := WRITE SYS$OUTPUT
$ CL :== SET TERMINAL/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 + " DUP SEC CNTRL YRE"
$ 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
$!
$! 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 the list 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 duplicate pre-reqs/coreqs"
$ 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 more course sections.
$!
$ 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:
$!
$ DELETE/LOG SYS$LOGIN:*.FTM;*
$ READ/END_OF_FILE=EXIT_LOOP_LST 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 SI$FOCUS:RE-DUP-REQS"
$ 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
$!
$! Check to see if hold files were created.
$!
$ IF (F$SEARCH("SYS$LOGIN:RCTEMP1.FTM;*") .EQS. "") .OR. -
(F$SEARCH("SYS$LOGIN:RCTEMP2.FTM;*") .EQS. "")
$ THEN
$ GOTO READ_LOOP_FST
$ ENDIF
$!
$! Create/append batch transactions to file.
$!
$ OPEN/READ input_file SYS$LOGIN:RCTEMP2.FTM
$ OPEN/APPEND trans_file SYS$LOGIN:TRANSFILE.DOC
$!
$READ_LOOP_OUT:
$!
$ READ/END_OF_FILE=EXIT_LOOP_OUT input_file in_record
$ OPEN/READ batch_file SYS$LOGIN:RCTEMP1.FTM
$ SEQ_NUM = F$INTEGER(F$EXTRACT(13,1,in_record))
$!
$READ_LOOP_IN:
$!
$ READ/END_OF_FILE=EXIT_LOOP_IN batch_file batch_record
$!
$ output_record = "24M" + F$EXTRACT(0,11,in_record) + F$STRING(SEQ_NUM+1) + -
TERMIN + F$EXTRACT(11,3,batch_record) + -
F$EXTRACT(14,1,batch_record) + -
F$EXTRACT(15,5,batch_record) + -
F$EXTRACT(20,11,batch_record) + -
F$EXTRACT(31,1,batch_record) + -
F$EXTRACT(32,3,batch_record)
$ WRITE trans_file output_record
$!
$ SEQ_NUM = SEQ_NUM + 1
$!
$ GOTO READ_LOOP_IN
$!
$EXIT_LOOP_IN:
$!
$ CLOSE batch_file
$ GOTO READ_LOOP_OUT
$!
$EXIT_LOOP_OUT:
$!
$ CLOSE input_file
$ CLOSE trans_file
$ GOTO READ_LOOP_FST
$!
$EXIT_LOOP_LST:
$!
$ CLOSE crs_file
$ CONVERT/APPEND SYS$LOGIN:TRANSFILE.DOC SI$DATA:AIB2FL.DAT
$!
$ CL
$ SAY " "
$ SAY "The information on screen 131 (Section Registration Controls)"
$ SAY "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;*
$ EXIT
FOCUS program :
-*begin doc
-*
-*FEX: RE-DUP-REQS
-*
-* This FOCUS request will create the batch transactions in order to
-* duplicate the pre-reqs/co-reqs from one course section to all other
-* course sections 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 *
-PROMPT &TERM/A5.ENTER THE FIVE DIGIT TERM OF INPUT COURSE SECTION (CCYYX) :
-PROMPT &CRS/A9.ENTER THE NAME OF INPUT COURSE SECTION (EX : ENG 10201) :
-*
-* Get pre-reqs/co-reqs from input course section.
-*
DEFINE FILE RCFILE
ALP_SC/A3=EDIT(SCHD_SEAT_COUNT1);
END
TABLE FILE RCFILE
PRINT SCHD_CONTROL_NOTE1 SCHD_NOTE_CONTROL1 SCHD_ARGUMENT1
SCHD_VALUE1 SCHD_RELATION1 ALP_SC
BY SECTION_ID
WHERE SECTION_ID EQ '&CRS';
WHERE TERM EQ '&TERM';
WHERE RC040_ORDER LE SCHEDULING_CNTR;
ON TABLE SAVE AS RCTEMP1
END
-*
-* Get pre-reqs/co-reqs from input course section.
-*
DEFINE FILE RCFILE
ALL_SEC/A7=EDIT(SECTION_ID,'9999999');
CHK_SEC/A7=EDIT('&CRS','9999999');
END
TABLE FILE RCFILE
PRINT SCHEDULING_CNTR BY SECTION_ID
WHERE (ALL_SEC EQ CHK_SEC) AND (SECTION_ID NE '&CRS');
WHERE TERM EQ '&TERM';
ON TABLE SAVE AS RCTEMP2
END
-*
JOIN CLEAR *
This page hosted by
Get your own Free Homepage