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

Hosted by www.Geocities.ws

1