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 "outstanding high school transcript and who has listed"
$ SAY "a maiden/former name on their application."
$ 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) APPTERM=" + 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) APPTERM=(Enrollment/Application Term)
FIN
$ NAME = F$GETJPI("","USERNAME")
$ MAIL/SUBJECT="MAIDEN NAME REPORT/(FOCEXEC name)" TEMPFILE.DOC 'NAME'
$ SET DEFAULT SYS$LOGIN
$ EXIT
FOCUS program :
-*  THIS FOCEXEC WILL LIST MAIDEN/FORMER NAMES OF STUDENTS WHO HAVE
-*  A HIGH SCHOOL TRANSCRIPT OUTSTANDING IN ORDER TO CROSS REFERENCE
-*  WITH THEIR CURRENT NAME.  THE RESULTS ARE MAILED TO A USER ACCOUNT.
-*     VARIABLES USED :
-*         APPTERM : THE BASE ACADEMIC TERM TO USE IN DETERMINING 
-*                   APPLICATIONS AND REGISTRATIONS TO SELECT
-*
SET LINES=999999
SET PAGE=NOPAGE
OFFLINE CLOSE
FILEDEF OFFLINE DISK TEMPFILE.DOC
JOIN CLEAR *
TABLE FILE RTFILE 
PRINT MTCH_KEY SID_RT
ON TABLE HOLD AS RTTEMP1
IF TERM_RT GE '&APPTERM'
END
JOIN SUBKEY_RT IN RTTEMP1 TO KEY IN AAFILE AS J1
JOIN SUBKEY_RT IN RTTEMP1 TO KEY IN RBFILE AS J2
TABLE FILE RTTEMP1
PRINT SID_RT HS_TRNS_RCVD
ON TABLE HOLD AS PLAY1
IF PREV_NAME_AA NE ' '
IF HS_TRNS_RCVD EQ 'N'
WHERE RB_020_ORDER EQ 1;
END
JOIN CLEAR *
TABLE FILE MMFILE
PRINT KEY SID_MM 
ON TABLE HOLD AS MMTEMP1
IF APP_TERM GE '&APPTERM'
WHERE MM_030_ORDER LE 3;
END
JOIN ROOT_KEY_MM IN MMTEMP1 TO KEY IN AAFILE AS J1
TABLE FILE MMTEMP1
PRINT ROOT_KEY_MM SID_MM 
ON TABLE HOLD AS PLAY2
IF PREV_NAME_AA NE ' '
END
JOIN ROOT_KEY_MM IN PLAY2 TO KEY IN RBFILE AS J2
TABLE FILE PLAY2
PRINT SID_MM HS_TRNS_RCVD
ON TABLE HOLD AS PLAY3
IF HS_TRNS_RCVD EQ 'N'
WHERE RB_020_ORDER EQ 1;
END
MATCH FILE PLAY1
PRINT HS_TRNS_RCVD BY SID_RT AS SID_CODE
RUN
FILE PLAY3
PRINT HS_TRNS_RCVD BY SID_MM AS SID_CODE
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);
THS_REC/A1=IF SID_CODE NE LAST SID_CODE THEN 'Y' ELSE 'N';
CON_DATE/MDY=DOB_AA;
EDIT_SSN/A11=EDIT(SID_CODE, '999-99-9999');
END
TABLE FILE HOLD
PRINT STU_NAME_AA AS '' IN 25 EDIT_SSN AS '' IN 55
      CON_DATE AS '' IN 69
      BY NAME_SORT_AA NOPRINT
      BY PREV_NAME_AA AS '' IN 1
IF THS_REC EQ 'Y'
END
JOIN CLEAR *

 

This page hosted by Get your own Free Homepage

Hosted by www.Geocities.ws

1