Typical DCL Command Procedure to set up the program :
$ SET NOVERIFY
$ SAY :== "WRITE SYS$OUTPUT"
$!
$ SAY "This FOCEXEC will list the students who have an"
$ SAY "invalid advisor #1 code and is active in the"
$ SAY "input term."
$ 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
$!
$!   Build parameter for (FOCEXEC name)
$!
$ EXEC1_REC = "EXEC (FOCEXEC name) INTERM=" + TERMIN
$ 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:TEMP*.*;*/LOG
$ DEL SI$FOCUS_USER:*.FTM;*/LOG
$ DEL SI$FOCUS_USER:*.MAS;*/LOG
$ SET DEFAULT SI$FOCUS_USER
$ FOCUS
EXEC (FOCEXEC name) INTERM=(Enrollment Term)
FIN
$ NAME = F$GETJPI("","USERNAME")
$ MAIL/SUBJECT="INCORRECT ADV #1 REPORT" TEMPFILE.DOC 'NAME'
$ SET DEFAULT SYS$LOGIN
$ EXIT
FOCUS program :
-*  THIS FOCEXEC WILL RETRIEVE THOSE STUDENTS WHO HAVE AN INCORRECT
-*  OR BLANK ADVISOR #1 CODE.  IT ONLY LOOKS AT THOSE STUDENTS WHO
-*  ARE REGISTERED FOR THE INPUT TERM.
-*    VARIABLES USED:
-*      INTERM : THE BASE TERM TO PULL STUDENTS FROM
-*
SET PAGE=NOPAGE
OFFLINE CLOSE
FILEDEF OFFLINE DISK SI$FOCUS_USER:TEMPFILE.DOC
FILEDEF INSTFL DISK SI$DATA:INSTFL.DAT
JOIN CLEAR *
MATCH FILE RPFILE
PRINT ADVSR1_ID_RP BY SID_RP AS SID_CODE 
RUN
FILE RTFILE
PRINT CLASS_RT PRIM_MJR1_RT BY SID_RT AS SID_CODE
IF CAREER_RT NE 'CE'
IF CURR_AHRS_RT GT 0.0
IF TERM_RT EQ '&INTERM'
AFTER MATCH HOLD OLD-AND-NEW
END
-RUN
MATCH FILE HOLD
PRINT SID_CODE CLASS_RT PRIM_MJR1_RT BY ADVSR1_ID_RP AS ADVISOR_CODE
RUN
FILE INSTFL
PRINT ADVISOR_NAME BY ADVISOR_CODE
AFTER MATCH HOLD OLD-NOT-NEW
END
-RUN
JOIN TEMP_KEY WITH SID_CODE IN HOLD TO KEY IN AAFILE AS J1
DEFINE FILE HOLD
TEMP_KEY/A11=('XX'|SID_CODE);
EDIT_SID1/A11=EDIT(SID_CODE,'999-99-9999');
EDIT_SID2/A11=EDIT(ADVISOR_CODE,'999-99-9999');
SORT_UP_FIELD/A32=UPCASE(32,STU_NAME_AA,SORT_UP_FIELD);
END
TABLE FILE HOLD
HEADING
"<5 STUDENT RECORDS INVALID ADVISOR REPORT FOR ENROLLMENT TERM = &INTERM </1"
PRINT EDIT_SID1 AS 'Social,Security #' IN 35 
      EDIT_SID2 AS 'Incorrect,Advisor #' IN 50
      CLASS_RT AS 'Class' IN 65
      PRIM_MJR1_RT AS 'Major' IN 72
      BY SORT_UP_FIELD NOPRINT
      BY STU_NAME_AA IN 1
WHERE ((ADVISOR_CODE EQ '000000000' OR ADVISOR_CODE EQ ' ') AND 
      (CLASS_RT EQ 'LSC')) OR ((ADVISOR_CODE NE '000000000') AND 
      (ADVISOR_CODE NE ' '));
END
JOIN CLEAR *

 

This page hosted by Get your own Free Homepage

Hosted by www.Geocities.ws

1