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

Hosted by www.Geocities.ws

1