Typical DCL Command Procedure to set up the program :
$ SET NOVERIFY $ SAY :== "WRITE SYS$OUTPUT" $! $ SAY "This report produces the preliminary graduate list" $ SAY "for department heads for the specified academic terms" $ SAY "broken out by major." $ SAY " " $! $ENTER_PARM: $ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= - "Enter the first academic term to run this report for >>> " FSTTRMIN $ LEN_FSTTRMIN = F$LENGTH(FSTTRMIN) $ IF LEN_FSTTRMIN .NE. 3 THEN GOTO ENTER_PARM $ TYP_FSTTRMIN = F$TYPE(FSTTRMIN) $ IF TYP_FSTTRMIN .NES. "INTEGER" THEN GOTO ENTER_PARM $! $ SAY " " $ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= - "Enter the second academic term to run this report for >>> " SECTRMIN $ LEN_SECTRMIN = F$LENGTH(SECTRMIN) $ IF LEN_SECTRMIN .NE. 3 THEN GOTO ENTER_PARM $ TYP_SECTRMIN = F$TYPE(SECTRMIN) $ IF TYP_SECTRMIN .NES. "INTEGER" THEN GOTO ENTER_PARM $! $ SAY " " $ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= - "Enter the third academic term to run this report for >>> " THDTRMIN $ LEN_THDTRMIN = F$LENGTH(THDTRMIN) $ IF LEN_THDTRMIN .NE. 3 THEN GOTO ENTER_PARM $ TYP_THDTRMIN = F$TYPE(THDTRMIN) $ IF TYP_THDTRMIN .NES. "INTEGER" THEN GOTO ENTER_PARM $! $! Build parameter for (FOCEXEC name) $! $ EXEC1_REC = "EXEC (FOCEXEC name)A FSTTRM=" + FSTTRMIN + - ", SECTRM=" + SECTRMIN + ", THDTRM=" + THDTRMIN $ EXEC2_REC = "EXEC (FOCEXEC name)B FSTTRM=" + FSTTRMIN + - ", SECTRM=" + SECTRMIN + ", THDTRM=" + THDTRMIN $ OPEN/READ INPUT_FILE SI$FOCUS_USER:(FOCEXEC name).COM $ OPEN/WRITE OUTPUT_FILE SI$FOCUS_USER:(FOCEXEC name).TMP $ EXEC_CNT = 1 $READ_MORE_001: $ READ/END_OF_FILE=BEGIN_001 INPUT_FILE IN_RECORD $ IF F$EXTRACT(0,4,IN_RECORD) .EQS. "EXEC" $ THEN $ IF EXEC_CNT .EQ. 1 THEN WRITE OUTPUT_FILE EXEC1_REC $ IF EXEC_CNT .EQ. 2 THEN WRITE OUTPUT_FILE EXEC2_REC $ EXEC_CNT = EXEC_CNT + 1 $ ELSE $ OUTFILE_REC = IN_RECORD $ WRITE OUTPUT_FILE OUTFILE_REC $ ENDIF $ GOTO READ_MORE_001 $BEGIN_001: $ CLOSE OUTPUT_FILE $ CLOSE INPUT_FILE $ RENAME SI$FOCUS_USER:(FOCEXEC name).TMP SI$FOCUS_USER:(FOCEXEC name).COM;/LOG $ SUBMIT/QUE=SYS$FOCUS SI$FOCUS_USER:(FOCEXEC name).COM $! $EXIT: $ EXIT
Typical DCL Command Procedure to actually run the program :
$ DELETE SI$FOCUS_USER:*.FTM;*/LOG
$ DELETE SI$FOCUS_USER:*.MAS;*/LOG
$ COPY SI$FOCUS:EMPTY_FILE.DOC; SI$FOCUS_USER:EMPTY_PLAY.DOC; /LOG
$ DEFINE FOC$DIR1 SI$DATA
$ SET DEFAULT SI$FOCUS_USER
$ FOCUS
EXEC (FOCEXEC name)A FSTTRM=(First enrollment term), SECTRM=(Second enrollment term), THDTRM=(Third enrollment term)
FIN
$ STA1 = F$SEARCH ("SI$FOCUS_USER:RPTEMP5.FTM;*",1)
$ IF (STA1 .NES. "") THEN CONVERT/APPEND RPTEMP5.FTM EMPTY_PLAY.DOC
$ RENAME EMPTY_PLAY.DOC RPTEMP5.FTM
$ COPY RPTEMP5.MFD RPTEMP5.MAS;/LOG
$ SET DEFAULT SI$FOCUS_USER
$ FOCUS
EXEC (FOCEXEC name)B FSTTRM=(First enrollment term), SECTRM=(Second enrollment term), THDTRM=(Third enrollment term)
FIN
$ SET DEFAULT Z$PRT
$ RENAME TEMPFILE.DOC (FOCEXEC name).PRT;/LOG
$ NAME = F$GETJPI("","USERNAME")
$ MAIL/SUBJECT="PRELIMINARY GRADUATE LIST/ALPHA" (FOCEXEC name).PRT 'NAME'
$ EXIT
FOCUS program :
(1)
-* THIS FOCEXEC PERFORMS AN EXTRACT OF PRELIMINARY GRADUATION INFORMATION
-* FROM SCREEN 117 BASED ON SELECTED ACADEMIC TERMS.
-* VARIABLES USED :
-* FSTTRM : THE FIRST ACADEMIC TERM TO EXTRACT FROM
-* SECTRM : THE SECOND ACADEMIC TERM TO EXTRACT FROM
-* THDTRM : THE THIRD ACADEMIC TERM TO EXTRACT FROM
-*
JOIN CLEAR *
DEFINE FILE RPFILE
TERM_DEG_OUT/A3=IF TRM_DEG_EXPC NE ' ' THEN TRM_DEG_EXPC ELSE
DEG_TRM_RP;
END
TABLE FILE RPFILE
PRINT ROOT_KEY_RP SID_RP TERM_DEG_OUT
ON TABLE HOLD AS RPTEMP1
WHERE (TRM_DEG_EXPC EQ '&FSTTRM' OR '&SECTRM' OR '&THDTRM') OR
(DEG_TRM_RP EQ '&FSTTRM' OR '&SECTRM' OR '&THDTRM');
IF DEG_STAT_RP EQ '1' OR '2' OR '3'
END
JOIN ROOT_KEY_RP IN RPTEMP1 TO KEY IN RPFILE AS J1
TABLE FILE RPTEMP1
PRINT ROOT_KEY_RP SID_RP GPA_RP LST_TRM_STAT TERM_DEG_OUT
ON TABLE HOLD AS RPTEMP2
IF STU_LVL_STAT EQ 'CR'
END
JOIN CLEAR *
JOIN TEMP_KEY WITH ROOT_KEY_RP IN RPTEMP2 TO KEY IN RTFILE AS J1
DEFINE FILE RPTEMP2
TEMP_KEY/A14=(TERM_DEG_OUT|ROOT_KEY_RP);
END
TABLE FILE RPTEMP2
PRINT ROOT_KEY_RP SID_RP GPA_RP LST_TRM_STAT TERM_DEG_OUT
RPT9_FLG_RT RPT3_FLG_RT
ON TABLE HOLD AS RPTEMP3
WHERE TERM_RT EQ TERM_DEG_OUT;
END
JOIN TEMP_KEY WITH ROOT_KEY_RP IN RPTEMP3 TO KEY IN RTFILE AS J2
DEFINE FILE RPTEMP3
TEMP_KEY/A14=(TERM_DEG_OUT|ROOT_KEY_RP);
END
TABLE FILE RPTEMP3
PRINT GPA_RP LST_TRM_STAT TERM_DEG_OUT RPT9_FLG_RT RPT3_FLG_RT
PRIM_MJR1_RT PRIM_MJR2_RT PRIM_MNR_RT PRIM_CERT_RT
SCND_MJR1_RT SCND_MJR2_RT SCND_MNR_RT SCND_CERT_RT
GRAD_CD_RT PRIM_DEG_RT
BY SID_RP
ON TABLE HOLD AS RPTEMP4
WHERE TERM_RT EQ TERM_DEG_OUT;
END
TABLE FILE RPTEMP4
PRINT PRIM_MJR1_RT TERM_DEG_OUT RPT3_FLG_RT PRIM_DEG_RT BY SID_RP
ON TABLE SAVE AS RPTEMP5
IF PRIM_MJR1_RT NE ' '
END
FILEDEF RPTEMP5 DISK RPTEMP5.FTM APPEND
TABLE FILE RPTEMP4
PRINT PRIM_MJR2_RT TERM_DEG_OUT RPT3_FLG_RT PRIM_DEG_RT BY SID_RP
ON TABLE SAVE AS RPTEMP5
IF PRIM_MJR2_RT NE ' '
END
FILEDEF RPTEMP5 DISK RPTEMP5.FTM APPEND
TABLE FILE RPTEMP4
PRINT PRIM_MNR_RT TERM_DEG_OUT RPT3_FLG_RT PRIM_DEG_RT BY SID_RP
ON TABLE SAVE AS RPTEMP5
IF PRIM_MNR_RT NE ' '
END
FILEDEF RPTEMP5 DISK RPTEMP5.FTM APPEND
TABLE FILE RPTEMP4
PRINT PRIM_CERT_RT TERM_DEG_OUT RPT3_FLG_RT PRIM_DEG_RT BY SID_RP
ON TABLE SAVE AS RPTEMP5
IF PRIM_CERT_RT NE ' '
END
FILEDEF RPTEMP5 DISK RPTEMP5.FTM APPEND
TABLE FILE RPTEMP4
PRINT SCND_MJR1_RT TERM_DEG_OUT RPT3_FLG_RT PRIM_DEG_RT BY SID_RP
ON TABLE SAVE AS RPTEMP5
IF SCND_MJR1_RT NE ' '
END
FILEDEF RPTEMP5 DISK RPTEMP5.FTM APPEND
TABLE FILE RPTEMP4
PRINT SCND_MJR2_RT TERM_DEG_OUT RPT3_FLG_RT PRIM_DEG_RT BY SID_RP
ON TABLE SAVE AS RPTEMP5
IF SCND_MJR2_RT NE ' '
END
FILEDEF RPTEMP5 DISK RPTEMP5.FTM APPEND
TABLE FILE RPTEMP4
PRINT SCND_MNR_RT TERM_DEG_OUT RPT3_FLG_RT PRIM_DEG_RT BY SID_RP
ON TABLE SAVE AS RPTEMP5
IF SCND_MNR_RT NE ' '
END
FILEDEF RPTEMP5 DISK RPTEMP5.FTM APPEND
TABLE FILE RPTEMP4
PRINT SCND_CERT_RT TERM_DEG_OUT RPT3_FLG_RT PRIM_DEG_RT BY SID_RP
ON TABLE SAVE AS RPTEMP5
IF SCND_CERT_RT NE ' '
END
JOIN CLEAR *
(2)
-* THIS FOCEXEC PRODUCES THE PRELIMINARY GRADUATE LIST BROKEN OUT BY MAJOR.
-* VARIABLES USED :
-* FSTTRM : THE FIRST ACADEMIC TERM TO EXTRACT FROM
-* SECTRM : THE SECOND ACADEMIC TERM TO EXTRACT FROM
-* THDTRM : THE THIRD ACADEMIC TERM TO EXTRACT FROM
-*
OFFLINE CLOSE
FILEDEF D_MAJOR DISK SI$FOCUS:D_MAJOR.DOC
FILEDEF RPTEMP5 DISK RPTEMP5.FTM
FILEDEF OFFLINE DISK Z$PRT:TEMPFILE.DOC
SET PAGE=NOPAGE
JOIN CLEAR *
TABLE FILE RPTEMP5
PRINT PRIM_MJR1_RT TERM_DEG_OUT RPT3_FLG_RT BY SID_RP
ON TABLE HOLD AS RPTEMP6
END
JOIN TEMP_KEY WITH SID_RP IN RPTEMP6 TO KEY IN AAFILE AS J1
DEFINE FILE RPTEMP6
TEMP_KEY/A11=('XX'|SID_RP);
PRINT_MAJOR/A35=DECODE PRIM_MJR1_RT (D_MAJOR ELSE '*****');
SID_LINE/A11=EDIT(SID_RP,'999-99-9999');
-*
FSTYR_IN/A3='&FSTTRM';
FSTYR_OUT/A2=EDIT(FSTYR_IN, '99$');
FSTYR_OUT_NUM/I2=EDIT(FSTYR_OUT);
FSTTRM_OUT/A1=EDIT(FSTYR_IN, '$$9');
FSTYR_OUT_COMP/I2=IF FSTTRM_OUT NE '1' THEN FSTYR_OUT_NUM + 1
ELSE FSTYR_OUT_NUM;
-*
SECYR_IN/A3='&THDTRM';
SECYR_OUT/A2=EDIT(SECYR_IN, '99$');
SECYR_OUT_NUM/I2=EDIT(SECYR_OUT);
SECTRM_OUT/A1=EDIT(SECYR_IN, '$$9');
SECYR_OUT_COMP/I2=IF SECTRM_OUT NE '1' THEN SECYR_OUT_NUM + 1
ELSE SECYR_OUT_NUM;
-*
FSTYR_OUT_COMP_A/A2=EDIT(FSTYR_OUT_COMP);
SECYR_OUT_COMP_A/A2=EDIT(SECYR_OUT_COMP);
SEASON_OUT_1/A13=IF FSTTRM_OUT EQ '1'
THEN ('('|'FALL 19'|FSTYR_OUT_COMP_A)
ELSE IF FSTTRM_OUT EQ '2'
THEN ('('|'SPRING 19'|FSTYR_OUT_COMP_A)
ELSE IF FSTTRM_OUT EQ '3'
THEN ('('|'SUMMER 19'|FSTYR_OUT_COMP_A);
SEASON_OUT_2/A16=IF SECTRM_OUT EQ '1'
THEN (' - FALL 19'|SECYR_OUT_COMP_A|')')
ELSE IF SECTRM_OUT EQ '2'
THEN (' - SPRING 19'|SECYR_OUT_COMP_A|')')
ELSE IF SECTRM_OUT EQ '3'
THEN (' - SUMMER 19'|SECYR_OUT_COMP_A|')');
OUT_HEAD2/A30=(SEASON_OUT_1||SEASON_OUT_2);
-*
END
TABLE FILE RPTEMP6
HEADING
"<FF>"
"<21 SOME COLLEGE"
"<21 GRADUATE CANDIDATES"
"<21 <OUT_HEAD2>"
"<21 <PRINT_MAJOR> </1"
PRINT STU_NAME_AA AS '' IN 1 SID_LINE AS '' IN 40 RPT3_FLG_RT AS '' IN 60
TERM_DEG_OUT AS '' IN 70
BY PRIM_MJR1_RT NOPRINT
BY NAME_SORT_AA NOPRINT
ON PRIM_MJR1_RT PAGE-BREAK
END
JOIN CLEAR *
Master File Description (MFD) for RPTEMP5 :
FILE=RPTEMP5,SUFFIX=FIX SEGNAME=RPTEMP5 FIELDNAME=SID_RP,E01,A09,A09,$ FIELDNAME=PRIM_MJR1_RT,E02,A04,A04,$ FIELDNAME=TERM_DEG_OUT,E03,A03,A03,$ FIELDNAME=RPT3_FLG_RT,E04,A01,A01,$ FIELDNAME=PRIM_DEG_RT,E05,A03,A03,$
This page hosted by
Get your own Free Homepage