Typical DCL Command Procedure to set up the program :
$ SET NOVERIFY $ SAY :== "WRITE SYS$OUTPUT" $! $ SAY "This FOCEXEC will generate a mail merge file that to produce" $ SAY "the letters for students who are considered no shows." $ SAY " " $! $ENTER_PARM: $ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= - "Enter the term to run this list for >>> " TERMIN $ LEN_TERMIN = F$LENGTH(TERMIN) $ IF LEN_TERMIN .NE. 3 THEN GOTO ENTER_PARM $ TYP_TERMIN = F$TYPE(TERMIN) $ IF TYP_TERMIN .NES. "INTEGER" THEN GOTO ENTER_PARM $ SAY " " $! $ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= - "Enter the first past term to check for >>> " BACKT1 $ LEN_BACKT1 = F$LENGTH(BACKT1) $ IF LEN_BACKT1 .NE. 3 THEN GOTO ENTER_PARM $ TYP_BACKT1 = F$TYPE(BACKT1) $ IF TYP_BACKT1 .NES. "INTEGER" THEN GOTO ENTER_PARM $ SAY " " $! $ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= - "Enter the second past term to check for >>> " BACKT2 $ LEN_BACKT2 = F$LENGTH(BACKT2) $ IF LEN_BACKT2 .NE. 3 THEN GOTO ENTER_PARM $ TYP_BACKT2 = F$TYPE(BACKT2) $ IF TYP_BACKT2 .NES. "INTEGER" THEN GOTO ENTER_PARM $! $! Build parameter for (FOCEXEC name) $! $ EXEC1_REC = "EXEC (FOCEXEC name) INTERM=" + TERMIN + " ,BTERM1=" + BACKT1 + - " ,BTERM2=" + BACKT2 $ OPEN/READ INPUT_FILE SI$FOCUS_USER:(FOCEXEC name).COM $ OPEN/WRITE OUTPUT_FILE SI$FOCUS_USER:(FOCEXEC name).TMP $READ_MORE_001: $ READ/END_OF_FILE=BEGIN_001 INPUT_FILE IN_RECORD $ IF F$EXTRACT(0,4,IN_RECORD) .EQS. "EXEC" $ THEN $ WRITE OUTPUT_FILE EXEC1_REC $ 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 :
$ DEFINE FOC$DIR1 SI$DATA $ DEL SI$FOCUS_USER:*.FTM;*/LOG $ DEL SI$FOCUS_USER:*.MAS;*/LOG $ DEL SI$FOCUS_USER:TEMP*.*;*/LOG $ SET DEFAULT SI$FOCUS_USER $ FOCUS EXEC (FOCEXEC name) INTERM=(Enrollment Term 1) ,BTERM1=(Enrollment Term 2) ,BTERM2=(Enrollment Term 3) FIN $ COPY SI$FOCUS_USER:PLAY2.FTM; SYS$LOGIN:*.*;/LOG $ CONVERT/APPEND/PAD=%D32 SI$FOCUS_USER:PLAY.FTM SI$DATA:AIBBFL.DAT $ SET DEFAULT SYS$LOGIN $ EXIT
FOCUS program :
-* THIS FOCEXEC WILL RETRIEVE THOSE STUDENTS WHO ARE NO SHOWS.
-* A MAIL MERGE FILE IS PRODUCED AND A HOLD FLAG IS ACTIVATED
-* FOR THEM.
-* VARIABLES USED:
-* INTERM : THE TERM TO PULL STUDENTS FROM
-* BTERM1 : THE FIRST TERM TO CHECK FOR ACTIVITY
-* BTERM2 : THE SECOND TERM TO CHECK FOR ACTIVITY
-*
SET LINES=999999
SET PAGE=NOPAGE
JOIN CLEAR *
TABLE FILE RTFILE
PRINT TERM_RT SID_RT BY MTCH_KEY
ON TABLE HOLD AS RTTEMP1
IF TERM_RT EQ '&INTERM'
IF CURR_AHRS_RT EQ 00.00
IF COLLEGE_RT NE 'CE'
WHERE ((SPE_STAT_RT EQ 'D') OR
((SPE_STAT_RT EQ 'E') AND (CRS_LVL_RT EQ 'CE')));
WHERE RT_020_ORDER EQ 1;
END
MATCH FILE RTFILE
PRINT CURR_AHRS_RT BY SID_RT AS SID_CODE
IF CURR_AHRS_RT GT 00.00
IF TERM_RT EQ '&BTERM1'
RUN
FILE RTTEMP1
PRINT TERM_RT BY SID_RT AS SID_CODE
AFTER MATCH HOLD NEW-NOT-OLD
END
-RUN
MATCH FILE RTFILE
PRINT CURR_AHRS_RT BY SID_RT AS SID_CODE
IF CURR_AHRS_RT GT 00.00
IF TERM_RT EQ '&BTERM2'
RUN
FILE HOLD
PRINT TERM_RT BY SID_CODE
AFTER MATCH HOLD NEW-NOT-OLD
END
-RUN
TABLE FILE HOLD
PRINT TERM_RT BY SID_CODE
ON TABLE HOLD AS RTTEMP2
END
JOIN SUBKEY_RT IN RTTEMP1 TO KEY IN MMFILE AS J1
TABLE FILE RTTEMP1
PRINT TERM_RT BY SID_RT
ON TABLE HOLD AS RTTEMP3
IF APP_TERM EQ '&INTERM'
IF DCSN_STAT NE 'AP'
END
MATCH FILE RTTEMP2
PRINT TERM_RT AS TERM_RT_OLD BY SID_CODE
RUN
FILE RTTEMP3
PRINT TERM_RT AS TERM_RT_NEW BY SID_RT AS SID_CODE
AFTER MATCH HOLD OLD-OR-NEW
END
-RUN
DEFINE FILE HOLD
TRUE_TERM/A3=IF TERM_RT_OLD EQ '&INTERM' THEN TERM_RT_OLD
ELSE TERM_RT_NEW;
END
TABLE FILE HOLD
PRINT TRUE_TERM BY SID_CODE
ON TABLE HOLD AS RTTEMP4
END
JOIN TEMP_KEY WITH SID_CODE IN RTTEMP4 TO KEY IN MMFILE AS J2
DEFINE FILE RTTEMP4
TEMP_KEY/A11=('XX'|SID_CODE);
END
MATCH FILE MMFILE
PRINT DCSN_STAT BY SID_MM AS SID_CODE
IF APP_TERM EQ '&INTERM'
IF DCSN_STAT EQ 'AP' OR 'AD'
IF APP_FOR_COLL NE 'CE'
RUN
FILE RTTEMP4
PRINT TRUE_TERM DCSN_STAT AS DCSN_STAT2 BY SID_CODE
WHERE MM_030_ORDER EQ 1;
AFTER MATCH HOLD OLD-OR-NEW
END
-RUN
JOIN CLEAR *
JOIN TEMP_KEY WITH SID_CODE IN HOLD TO KEY IN AAFILE AS J1
DEFINE FILE HOLD
TEMP_KEY/A11=('XX'|SID_CODE);
TMP_NAME/A32 = GETTOK(STU_NAME_AA,32,2,',',32,TMP_NAME);
SFX_NAME/A5 = GETTOK(STU_NAME_AA,32,3,',',5,SFX_NAME);
FMN_NAME/A32 = LJUST(32,TMP_NAME,FMN_NAME);
FST_NAME/A32 = GETTOK(FMN_NAME,32,1,' ',32,FST_NAME);
MDL_NAME/A32 = GETTOK(STU_NAME_AA,32,2,',',32,MDL_NAME);
LST_NAME/A32 = GETTOK(STU_NAME_AA,32,1,',',32,LST_NAME);
EXPNDNME/A72 = FMN_NAME || (' '|LST_NAME|' ') || SFX_NAME || '*';
CMPRSNME/A32 = GETTOK (EXPNDNME,66,1,'*',32,CMPRSNME);
R_NAME/A32 = LJUST(32,CMPRSNME,R_NAME);
EXPNDNME2/A72 = FST_NAME || (' '|LST_NAME|' ') || SFX_NAME || '*';
CMPRSNME2/A32 = GETTOK (EXPNDNME2,66,1,'*',32,CMPRSNME2);
R_NAME2/A32 = LJUST(32,CMPRSNME2,R_NAME2);
SID_LINE1/A11=EDIT(SID_CODE,'999-99-9999');
BTH_TRANS1/A29 = ('02I'|SID_CODE|' ');
BTH_TRANS2/A34 = ' 23';
END
TABLE FILE HOLD
.
.
(Creation of mail merge file)
.
.
BY STU_NAME_AA NOPRINT
ON TABLE SAVE AS PLAY
WHERE AA_020_ORDER EQ 1;
END
-SET &HDRKEY = '$$$MSC117 NO SHOW HOLD YFA';
-INCLUDE (SIS Batch Header).SEG
FILEDEF PLAY DISK PLAY.FTM APPEND
TABLE FILE HOLD
PRINT BTH_TRANS1 IN 1 AS '' BTH_TRANS2 AS ''
ON TABLE SAVE AS PLAY
END
JOIN CLEAR *
This page hosted by
Get your own Free Homepage