Typical DCL Command Procedure to set up the program :
$ SET NOVERIFY $ SAY :== "WRITE SYS$OUTPUT" $! $ SAY "This report produces the graduate tally sheet for the" $ SAY "specified date range." $ SAY " " $! $ENTER_PARM: $ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= - "Enter the beginning date (YYMM) to run this tally for >>> " BEGDTIN $ LEN_BEGDTIN = F$LENGTH(BEGDTIN) $ IF LEN_BEGDTIN .NE. 4 THEN GOTO ENTER_PARM $ TYP_BEGDTIN = F$TYPE(BEGDTIN) $ IF TYP_BEGDTIN .NES. "INTEGER" THEN GOTO ENTER_PARM $! $ SAY " " $ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= - "Enter the ending date (YYMM) to run this tally for >>> " ENDDTIN $ LEN_ENDDTIN = F$LENGTH(ENDDTIN) $ IF LEN_ENDDTIN .NE. 4 THEN GOTO ENTER_PARM $ TYP_ENDDTIN = F$TYPE(ENDDTIN) $ IF TYP_ENDDTIN .NES. "INTEGER" THEN GOTO ENTER_PARM $! $! Build parameter for (FOCEXEC name) $! $ EXEC1_REC = "EXEC (FOCEXEC name)A BEGDT=" + BEGDTIN + ", ENDDT=" + ENDDTIN $ EXEC2_REC = "EXEC (FOCEXEC name)B BEGDT=" + BEGDTIN + ", ENDDT=" + ENDDTIN $ 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 BEGDT=(Beginning date in YYMM format), ENDDT=(Ending date in YYMM format)
FIN
$ STA1 = F$SEARCH ("SI$FOCUS_USER:RATEMP1.FTM;*",1)
$ STA2 = F$SEARCH ("SI$FOCUS_USER:RATEMP2.FTM;*",2)
$ IF (STA1 .NES. "") THEN CONVERT/APPEND RATEMP1.FTM EMPTY_PLAY.DOC
$ IF (STA2 .NES. "") THEN CONVERT/APPEND RATEMP2.FTM EMPTY_PLAY.DOC
$ RENAME EMPTY_PLAY.DOC RATEMP1.FTM
$ COPY RATEMP1.MFD RATEMP1.MAS;/LOG
$ SET DEFAULT SI$FOCUS_USER
$ FOCUS
EXEC (FOCEXEC name)B BEGDT=(Beginning date in YYMM format), ENDDT=(Ending date in YYMM format)
FIN
$ SET DEFAULT Z$PRT
$ RENAME TEMPFILE.DOC (FOCEXEC name).PRT;/LOG
$ NAME = F$GETJPI("","USERNAME")
$ MAIL/SUBJECT="GRADUATE TALLY SHEET" (FOCEXEC name).PRT 'NAME'
$ EXIT
FOCUS program :
(1)
-* THIS FOCEXEC PERFORMS AN EXTRACT OF GRADUATION INFORMATION -* FROM SCREEN 123 BASED ON BEGINNING AND ENDING DATES. -* VARIABLES USED : -* BEGDT : THE BEGINNING DATE IN YYMM FORMAT TO EXTRACT FROM -* ENDDT : THE ENDING DATE IN YYMM FORMAT TO EXTRACT FROM -* JOIN CLEAR * TABLE FILE RAFILE PRINT DEG_MJR1_RA DEG_AWD_RA DEG_DT_RA BY SID_RA ON TABLE SAVE AS RATEMP1 WHERE (DEG_DT_RA GE '&BEGDT') AND (DEG_DT_RA LE '&ENDDT'); WHERE RA_030_ORDER LE 10; END TABLE FILE RAFILE PRINT DEG_MJR2_RA DEG_AWD_RA DEG_DT_RA BY SID_RA ON TABLE SAVE AS RATEMP2 WHERE (DEG_DT_RA GE '&BEGDT') AND (DEG_DT_RA LE '&ENDDT'); WHERE RA_030_ORDER LE 10; IF DEG_MJR2_RA NE ' ' END JOIN CLEAR *
(2)
-* THIS FOCEXEC PRODUCES THE GRADUATE TALLY SHEET.
-* VARIABLES USED :
-* BEGDT : THE BEGINNING DATE IN YYMM FORMAT TO EXTRACT FROM
-* ENDDT : THE ENDING DATE IN YYMM FORMAT TO EXTRACT FROM
-*
OFFLINE CLOSE
FILEDEF D_DEGREE DISK SI$FOCUS:D_DEGREE.DOC
FILEDEF D_MAJOR DISK SI$FOCUS:D_MAJOR.DOC
FILEDEF RATEMP1 DISK RATEMP1.FTM
FILEDEF OFFLINE DISK Z$PRT:TEMPFILE.DOC
SET PAGE=NOPAGE
JOIN CLEAR *
TABLE FILE RATEMP1
PRINT DEG_MJR1_RA DEG_DT_RA DEG_AWD_RA
BY SID_RA
ON TABLE HOLD AS RATEMP10
END
JOIN TEMP_KEY WITH SID_RA IN RATEMP10 TO KEY IN RPFILE AS J1
DEFINE FILE RATEMP10
TEMP_KEY/A11=('XX'|SID_RA);
TERM_DEG_OUT/A3=IF TRM_DEG_EXPC NE ' ' THEN TRM_DEG_EXPC ELSE
DEG_TRM_RP;
END
TABLE FILE RATEMP10
PRINT DEG_MJR1_RA DEG_DT_RA DEG_AWD_RA TERM_DEG_OUT
BY SID_RA
ON TABLE HOLD AS RATEMP11
END
DEFINE FILE RATEMP11
JOIN_KEY_RT/A14=(TERM_DEG_OUT|'XX'|SID_RA);
END
TABLE FILE RATEMP11
PRINT SID_RA DEG_MJR1_RA DEG_DT_RA DEG_AWD_RA TERM_DEG_OUT
BY JOIN_KEY_RT
ON TABLE HOLD AS RATEMP12
END
JOIN JOIN_KEY_RT IN RATEMP12 TO KEY IN RTFILE AS J2
TABLE FILE RATEMP12
PRINT DEG_MJR1_RA DEG_DT_RA DEG_AWD_RA RPT3_FLG_RT
BY SID_RA
ON TABLE HOLD AS RATEMP13
WHERE TERM_RT EQ TERM_DEG_OUT;
END
JOIN CLEAR *
JOIN TEMP_KEY WITH SID_RA IN RATEMP13 TO KEY IN AAFILE AS J1
DEFINE FILE RATEMP13
TEMP_KEY/A11=('XX'|SID_RA);
END
TABLE FILE RATEMP13
PRINT DEG_MJR1_RA DEG_DT_RA STREET1_AA CITY_AA STATE_AA ZIP_AA
STU_NAME_AA NAME_SORT_AA DEG_AWD_RA RPT3_FLG_RT
BY SID_RA
ON TABLE HOLD AS RATEMP2
WHERE AA_020_ORDER LE 1;
END
DEFINE FILE RATEMP2
CNTR/I5=IF SID_RA NE LAST SID_RA THEN 1 ELSE 0;
PRINT_DEGREE/A35=DECODE DEG_AWD_RA (D_DEGREE ELSE '*****');
PRINT_MAJOR/A35=DECODE DEG_MJR1_RA (D_MAJOR ELSE '*****');
CITY_LINE/A28=(CITY_AA|' '|STATE_AA|' '|ZIP_AA);
SID_LINE/A11=EDIT(SID_RA,'999-99-9999');
EXTRA_LINE/A10=(' ');
-*
FSTYR_IN/A4='&BEGDT';
FSTYR_OUT/A2=EDIT(FSTYR_IN, '99$$');
SECYR_IN/A4='&ENDDT';
SECYR_OUT/A2=EDIT(SECYR_IN, '99$$');
-*
FSTMON_IN/A4='&BEGDT';
FSTMON_OUT/A2=EDIT(FSTMON_IN, '$$99');
SECMON_IN/A4='&ENDDT';
SECMON_OUT/A2=EDIT(SECMON_IN, '$$99');
SEASON_OUT_1/A9=IF FSTMON_OUT EQ '01' OR '02' OR '03' OR '04' OR '05'
THEN 'SPRING 19'
ELSE IF FSTMON_OUT EQ '06' OR '07' OR '08'
THEN 'SUMMER 19'
ELSE IF FSTMON_OUT EQ '09' OR '10' OR '11' OR '12'
THEN 'FALL 19';
SEASON_OUT_2/A13=IF SECMON_OUT EQ '01' OR '02' OR '03' OR '04' OR '05'
THEN (' - SPRING '|SECYR_OUT|')')
ELSE IF SECMON_OUT EQ '06' OR '07' OR '08'
THEN (' - SUMMER '|SECYR_OUT|')')
ELSE IF SECMON_OUT EQ '09' OR '10' OR '11' OR '12'
THEN (' - FALL '|SECYR_OUT|')');
-*
OUT_HEAD1/A25=('19'|FSTYR_OUT|'-'|SECYR_OUT|' ACADEMIC YEAR');
OUT_HEAD2/A30=('('|SEASON_OUT_1||FSTYR_OUT||SEASON_OUT_2);
END
TABLE FILE RATEMP2
HEADING
"<FF>"
"<20 SAME COLLEGE"
"<17 DEGREES, DIPLOMAS, CERTIFICATES AWARDED"
"<27 <OUT_HEAD1>"
"<26 <OUT_HEAD2> </1"
SUM CNT.SID_RA AS 'NUMBER' IN 70
BY PRINT_DEGREE AS 'DEGREE'
BY PRINT_MAJOR AS 'CURRICULUM'
ON PRINT_DEGREE SUBTOTAL AS '**TOTAL FOR'
END
JOIN CLEAR *
Master File Description (MFD) for RATEMP1 :
FILE=RATEMP1,SUFFIX=FIX SEGNAME=RATEMP1 FIELDNAME=SID_RA,E01,A09,A09,$ FIELDNAME=DEG_MJR1_RA,E02,A04,A04,$ FIELDNAME=DEG_AWD_RA,E03,A03,A03,$ FIELDNAME=DEG_DT_RA,E04,A04,A04,$
This page hosted by
Get your own Free Homepage