Typical DCL Command Procedure to set up the program :
$ SET NOVERIFY $ SAY :== "WRITE SYS$OUTPUT" $! $ SAY "This report produces the final graduate list for the specified" $ SAY "date range broken out by major." $ SAY " " $! $ENTER_PARM: $ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= - "Enter the beginning date (YYMM) to run this report 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 report 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
$ COPY SI$FOCUS:SISDBD.MFD SI$FOCUS_USER:SISDBD.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="FINAL GRADUATE LIST" (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 FINAL GRADUATE LIST BROKEN OUT BY MAJOR.
-* 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 OFFLINE DISK Z$PRT:TEMPFILE.DOC
FILEDEF RATEMP1 DISK RATEMP1.FTM
FILEDEF D_MAJOR DISK SI$FOCUS:D_MAJOR.DOC
SET PAGE=NOPAGE
SET LINES=999999
JOIN CLEAR *
-*
-* THIS FOCUS SEGMENT WILL GENERATE A DECODE FILE OF MAJORS
-* ALONG WITH THEIR "TRANSLATED" CODE VALUE. THE FILE THAT IS LOOKED AT
-* IS AN EXTRACT OF THE SIS PRODUCTION DBD.
-*
FILEDEF SISDBD DISK SI$DATA::SISDBD.DAT
DEFINE FILE SISDBD
EXT_FIELD/A5=EDIT(DATA_ELEMENT_TRANS2, '99999$$$$$$$$$$$$$$');
OUTLINE/A15=(DATA_ELEMENT_VALUE|' '''|EXT_FIELD||''' ');
END
TABLE FILE SISDBD
PRINT OUTLINE AS ''
ON TABLE SAVE AS DNUM
WHERE DATA_ELEMENT_NAME EQ 'DVATN25';
IF VALUE_INDICATOR EQ ' '
END
FILEDEF DNUM DISK DNUM.FTM
SET LINES=57
TABLE FILE RATEMP1
PRINT DEG_MJR1_RA DEG_DT_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 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 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 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 J3
DEFINE FILE RATEMP13
TEMP_KEY/A11=('XX'|SID_RA);
OUT_PROGRAM1/A35=DECODE DEG_MJR1_RA (D_MAJOR ELSE ' ');
OUT_CODE/A5=DECODE DEG_MJR1_RA (DNUM ELSE ' ');
SID_OUT/A11=EDIT(SID_RA, '999-99-9999');
-*
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_HEAD2/A30=('('|SEASON_OUT_1||FSTYR_OUT||SEASON_OUT_2);
CNTR/I5=IF SID_RA NE ' ' THEN 1 ELSE 0;
END
TABLE FILE RATEMP13
HEADING
"<FF>"
"<20 SOME COLLEGE"
"<20 CERTIFIED GRADUATES"
"<20 <OUT_HEAD2> "
"<20 <OUT_PROGRAM1> : <OUT_CODE> </1"
PRINT STU_NAME_AA AS '' SID_OUT AS '' IN 40 RPT3_FLG_RT AS '' IN 60
DEG_DT_RA AS '' IN 75
BY DEG_MJR1_RA NOPRINT
BY NAME_SORT_AA NOPRINT
ON DEG_MJR1_RA PAGE-BREAK
ON DEG_MJR1_RA SUBFOOT
"</1 Total For <OUT_PROGRAM1> Is <ST.CNTR"
" "
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,$
Master File Description (MFD) for SISDBD :
FILE=SISDBD,SUFFIX=FIX SEGNAME=ROOT FIELD=DATA_ELEMENT_NAME, ,A07,A07,$ FIELD=VALUE_INDICATOR, ,A01,A01,$ FIELD=DATA_ELEMENT_VALUE, ,A04,A04,$ FIELD=COMPU_FILL01, ,A15,A15,$ FIELD=DATA_ELEMENT_TRANS, ,A34,A34,$ FIELD=DATA_ELEMENT_TRANS2, ,A19,A19,$
This page hosted by
Get your own Free Homepage