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

Hosted by www.Geocities.ws

1