Typical DCL Command Procedure to run the program :
$!
$! COM:GE-LINE-SCH-PI.COM
$!
$! This command procedure will create the course schedule for use in the
$! Public Information Office.
$!
$ SET NOVERIFY
$ SET NOCONTROL_Y
$ ASK := READ/PROMPT=
$ SAY := WRITE SYS$OUTPUT
$ CL := SET TERM/WIDTH=80
$!
$ CL
$!
$! 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 extract 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
$!
$! Create and execute the FOCUS command procedure to generate the data
$! source.
$!
$ CL
$ SAY ""
$ SAY "Please wait while program executes..."
$ 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 "$ ASSIGN SI$DATA:XFOC01.DAT XFOC01"
$ WRITE output_file "$ SET DEFAULT SYS$LOGIN"
$ WRITE output_file "$ FOCUS"
$ WRITE output_file "EXEC SI$FOCUS:GE-LINE-SCH-PI"
$ WRITE output_file TERMIN
$ WRITE output_file "FIN"
$ WRITE output_file "$ EXIT"
$!
$ CLOSE output_file
$ SUBMIT/NOPRINT/NOTIFY 'COM_FILE'
$ SYNCHRONIZE FOCTEMP
$!
$! Rename hold file containg course data for a specific site.
$!
$ RENAME SYS$LOGIN:(Hold file #1).FTM *.TXT;
$ RENAME SYS$LOGIN:(Hold file #2).FTM *.TXT;
.
.
.
$ RENAME SYS$LOGIN:(Hold file #n).FTM *.TXT;
$!
$ CL
$ SAY " "
$ SAY "Program completed successfully..."
$ 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;*
$ EXIT
FOCUS program :
-*begin doc
-*
-*FEX: GE-LINE-SCH-PI
-*
-* This produces a file of course information that is used by public
-* information to generate the published course schedule.
-*
-*INPUT
-* TERM_IN : Enrollment Term
-*
-*end doc
-**********************************************************************
-*
JOIN CLEAR *
-PROMPT &TERM_IN/A5.ENTER THE FIVE DIGIT TERM FOR REPORT (CCYYX) :
SET LINES=999999
SET PAGE=NOPAGE
-*
-* Get session start and end date for term.
-*
FILEDEF ACFL055 DISK SI$DATA:ACFILE.DAT
TABLE FILE ACFL055
PRINT CLASS_END_DATE CLASS_BEGIN_DATE SESSION_CODE
ON TABLE SAVE AS TRMSEC
WHERE TERM_CODE_SES EQ '&TERM_IN';
END
FILEDEF EXTFILE DISK TRMSEC.FTM
-RUN
-READ EXTFILE &ENDDEF.I8. &BEGDEF.I8. &SESDEF.A1.
-READ EXTFILE &ENDFST.I8. &BEGFST.I8. &SESFST.A1.
-READ EXTFILE &ENDSEC.I8. &BEGSEC.I8. &SESSEC.A1.
-*
DEFINE FILE RCFILE
SUBJ_CD/A3=EDIT(SECTION_ID,'999');
END
-*
-* Get pre-req/co-req information for each course section.
-*
MATCH FILE RCFILE
PRINT SCHD_CONTROL_NOTE1 AS SCHD_NOTE1 BY SECTION_ID
WHERE SCHD_CONTROL_NOTE1 EQ 'MC';
WHERE RC040_ORDER LE SCHEDULING_CNTR;
WHERE (SUBJ_CD NE 'AAA') AND (SUBJ_CD NE 'AAS') AND
(SUBJ_CD NE 'AAH') AND (SUBJ_CD NE 'AAT');
WHERE TERM EQ '&TERM_IN';
WHERE COLLEGE NE 'CE';
RUN
FILE RCFILE
PRINT SCHD_CONTROL_NOTE1 AS SCHD_NOTE2 BY SECTION_ID
WHERE SCHD_CONTROL_NOTE1 EQ 'MP';
WHERE RC040_ORDER LE SCHEDULING_CNTR;
WHERE (SUBJ_CD NE 'AAA') AND (SUBJ_CD NE 'AAS') AND
(SUBJ_CD NE 'AAH') AND (SUBJ_CD NE 'AAT');
WHERE TERM EQ '&TERM_IN';
WHERE COLLEGE NE 'CE';
AFTER MATCH HOLD OLD-OR-NEW
END
-RUN
-*
MATCH FILE HOLD
PRINT SCHD_NOTE1 SCHD_NOTE2 BY SECTION_ID
RUN
FILE RCFILE
PRINT RC_DEPT BY SECTION_ID
WHERE (SUBJ_CD NE 'AAA') AND (SUBJ_CD NE 'AAS') AND
(SUBJ_CD NE 'AAH') AND (SUBJ_CD NE 'AAT');
WHERE TERM EQ '&TERM_IN';
WHERE COLLEGE NE 'CE';
AFTER MATCH HOLD OLD-OR-NEW
END
-RUN
-*
DEFINE FILE HOLD
JN_KEY/A16=('&TERM_IN'|SECTION_ID);
END
TABLE FILE HOLD
PRINT SCHD_NOTE1 SCHD_NOTE2 BY JN_KEY
ON TABLE HOLD AS RCTEMP5
END
-*
-* Get course information for the 1st meeting time/place.
-*
JOIN JN_KEY IN RCTEMP5 TO KEY IN RCFILE AS J1
DEFINE FILE RCTEMP5
CRS_START_ALPHA/A8=EDIT(SECT_START_DT);
CRS_END_ALPHA/A8=EDIT(SECT_END_DT);
-*
SEC_TXT/A70='NOTE: COURSE START DATE '|EDIT(CRS_START_ALPHA, '$$$$99$$')
|'/'|EDIT(CRS_START_ALPHA, '$$$$$$99')|'/'|EDIT(CRS_START_ALPHA, '9999$$$$')
|'; COURSE END DATE '|EDIT(CRS_END_ALPHA, '$$$$99$$')|'/'|
EDIT(CRS_END_ALPHA, '$$$$$$99')|'/'|EDIT(CRS_END_ALPHA, '9999$$$$');
-*
ALP_RC020_1/A3=EDIT(RC020_ORDER);
ALP_RC020_2/A1=EDIT(ALP_RC020_1,'$$9');
MT/A12='MTG'|ALP_RC020_2|'-'|MTG_DAYS;
-*
FULL_TIME/A17=EDIT(START_TIME,'99')|':'|EDIT(START_TIME,'$$9999')|'-'|
EDIT(STOP_TIME,'99')|':'|EDIT(STOP_TIME,'$$9999');
OUT_FULL_TIME/A17=IF FULL_TIME EQ ' : - : ' THEN ' ' ELSE FULL_TIME;
-*
OUT_BLDG/A5=IF (MTG_BLDG EQ '55402') THEN 'HARTS'
ELSE IF (MTG_BLDG EQ '55403') THEN 'LAKEC'
ELSE IF (MTG_BLDG EQ '55404') THEN 'AGNCY'
ELSE IF (MTG_BLDG EQ '70172') THEN 'AGNCY'
ELSE MTG_BLDG;
BD/A10='BLDG-'|OUT_BLDG;
RM/A9='RM-'|MTG_ROOM;
-*
CHK_NOTE/A1=EDIT(SCHD_CONTROL_NOTE1,'9');
OUT_NOTE1/A45=XSFOCT(45,'RC405',SCHD_CONTROL_NOTE1,'',OUT_NOTE);
OUT_NOTE2/A51='NOTE: '|OUT_NOTE1;
-*
REQ_IND/A4=IF (SCHD_NOTE1 EQ 'MC') AND (SCHD_NOTE2 EQ ' ') THEN '**'
ELSE IF (SCHD_NOTE1 EQ ' ') AND (SCHD_NOTE2 EQ 'MP') THEN '*'
ELSE IF (SCHD_NOTE1 EQ 'MC') AND (SCHD_NOTE2 EQ 'MP') THEN '*/**'
ELSE ' ';
OUT_SECTION_ID/A15=EDIT(SECTION_ID,'9999')|'-'|EDIT(SECTION_ID,'$$$$999')
|'-'|EDIT(SECTION_ID,'$$$$$$$99')|REQ_IND;
-*
COM_IN_NAME/I2=POSIT(CRS_SCHD_INSTR_1,15,', ',2,COM_IN_NAME);
PER_IN_NAME/I2=POSIT(CRS_SCHD_INSTR_1,15,'.',1,PER_IN_NAME);
GET_LST_NAME/A3=SUBSTR(15,CRS_SCHD_INSTR_1,COM_IN_NAME,PER_IN_NAME,3,
GET_LST_NAME);
EXT_LST_FST/A1=EDIT(GET_LST_NAME,'$$9');
-*
MOD_COM_POS/I2=COM_IN_NAME-1;
EXT_LST_LST/A15=SUBSTR(15,CRS_SCHD_INSTR_1,1,MOD_COM_POS,15,EXT_LST_LST);
MIX_LST_LST/A15=MXCASE(15,EXT_LST_LST,MIX_LST_LST);
FMT_INST_NAME/A17=IF COM_IN_NAME GT 0 THEN MIX_LST_LST||(' '|EXT_LST_FST)
ELSE CRS_SCHD_INSTR_1;
OUT_INST/A15=IF (CRS_SCHD_INSTR_1 EQ 'STAFF') OR
(CRS_SCHD_INSTR_1 EQ 'TBA F') THEN 'TBA'
ELSE
EDIT(FMT_INST_NAME,'999999999999999');
-*
TAB_CHR/A1=' ';
END
TABLE FILE RCTEMP5
PRINT OUT_SECTION_ID AS '' TAB_CHR AS '' RC_CRS_TITLE AS ''
TAB_CHR AS '' CTF_MAX_CREDIT AS '' TAB_CHR AS '' OUT_INST AS ''
TAB_CHR AS '' MT AS '' TAB_CHR AS '' OUT_FULL_TIME AS '' TAB_CHR AS ''
BD AS '' TAB_CHR AS '' RM AS ''
ON TABLE SAVE AS RCTEMP1
BY SECTION_ID AS '' IN 1
WHERE RC020_ORDER EQ 1;
END
-*
-* Get course information for the other meeting time/place(s).
-*
TABLE FILE RCTEMP5
PRINT TAB_CHR AS '' TAB_CHR AS '' TAB_CHR AS '' TAB_CHR AS '' TAB_CHR AS ''
MT AS '' TAB_CHR AS '' OUT_FULL_TIME AS '' TAB_CHR AS '' BD AS ''
TAB_CHR AS '' RM AS ''
ON TABLE SAVE AS RCTEMP2
BY SECTION_ID AS '' IN 1
WHERE (RC020_ORDER LE MEETINGS_CNTR) AND (RC020_ORDER GT 1);
END
-*
-* Get section begin/end dates for those courses that are held outside
-* the regular semester dates.
-*
TABLE FILE RCTEMP5
PRINT TAB_CHR AS '' TAB_CHR AS '' SEC_TXT AS ''
ON TABLE SAVE AS RCTEMP3
BY SECTION_ID AS '' IN 1
WHERE (SECT_START_DT NE &BEGDEF) OR (SECT_END_DT NE &ENDDEF);
END
-*
-* Get section registration control information for each selected course.
-* Only select memo notes.
-*
TABLE FILE RCTEMP5
PRINT TAB_CHR AS '' TAB_CHR AS '' OUT_NOTE2 AS ''
ON TABLE SAVE AS RCTEMP4
BY SECTION_ID AS '' IN 1
WHERE RC040_ORDER LE SCHEDULING_CNTR;
WHERE (CHK_NOTE EQ 'M') AND (SCHD_CONTROL_NOTE1 NE 'MC') AND
(SCHD_CONTROL_NOTE1 NE 'MP');
END
-*
-* Combine data files created above.
-*
-RUN
-VMS COPY SYS$LOGIN:RCTEMP1.FTM,SYS$LOGIN:RCTEMP2.FTM, -
SYS$LOGIN:RCTEMP3.FTM,SYS$LOGIN:RCTEMP4.FTM -
SYS$LOGIN:RCTEMP.FTM
-VMS COPY SI$FOCUS:GE-LINE-SCH-PI.MFD SYS$LOGIN:LINESCH.MAS;
-*
-* Sort combined information to produce published schedule data
-* for all college sites.
-*
FILEDEF LINESCH DISK SYS$LOGIN:RCTEMP.FTM
DEFINE FILE LINESCH
SITE_CD/A2=EDIT(DATA_SECTION,'$$$$$$$99');
INT_REC/A21=EDIT(DATA_ELEMENT_1,'$$999999999999999999999');
DIS_REC/A30=EDIT(DATA_ELEMENT_1,'$$999999999999999999999999999999');
END
TABLE FILE LINESCH
PRINT DATA_ELEMENT_1 AS '' IN 1 DATA_ELEMENT_2 AS '' IN 100
BY DATA_SECTION NOPRINT
ON TABLE SAVE AS ALLCRS
END
-*
-* Sort combined information to produce published schedule data
-* for site #1.
-*
TABLE FILE LINESCH
PRINT DATA_ELEMENT_1 AS '' IN 1 DATA_ELEMENT_2 AS '' IN 100
BY DATA_SECTION NOPRINT
ON TABLE SAVE AS HARTCRS
(Selection criteria for determining 1st site)
END
-*
-* Sort combined information to produce published schedule data
-* for site #2.
-*
TABLE FILE LINESCH
PRINT DATA_ELEMENT_1 AS '' IN 1 DATA_ELEMENT_2 AS '' IN 100
BY DATA_SECTION NOPRINT
ON TABLE SAVE AS LAKECRS
(Selection criteria for determining 2nd site)
END
.
.
.
(Generate hold files for remaining sites)
JOIN CLEAR *
GE-LINE-SCH-PI.MFD :
FILE=RBA120,SUFFIX=FIX
SEGNAME=ROOT
FIELD=DATA_SECTION, ,A11,A11,$
FIELD=DATA_ELEMENT_1, ,A99,A99,$
FIELD=DATA_ELEMENT_2, ,A22,A22,$
This page hosted by
Get your own Free Homepage