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

Hosted by www.Geocities.ws

1