Typical DCL Command Procedure to run the program :
$!
$! DETERMINE DATE TO USE IN FOCUS ROUTINE.
$!
$ RUN_DATE = F$EXTRACT(0,4,F$CVTIME("YESTERDAY")) + -
F$CVTIME("YESTERDAY","COMPARISON","MONTH") + -
F$EXTRACT(8,2,F$CVTIME("YESTERDAY"))
$!
$! UPDATE COMMAND PROCEDURE WITH COMPUTED DATE & THEN EXECUTE.
$!
$ OPEN/READ INPUT_FILE SI$FEX:(FOCEXEC name).FEX
$ OPEN/WRITE OUTPUT_FILE SI$FEX:(FOCEXEC name).TMP
$!
$READ_MORE:
$!
$ READ/END_OF_FILE=END_READ INPUT_FILE IN_RECORD
$!
$ IF F$EXTRACT(0,14,IN_RECORD) .EQS. "-SET &INDATE ="
$ THEN
$ OUTFILE_REC = "-SET &INDATE = " + "''''" + RUN_DATE + "''''" + ";"
$ WRITE OUTPUT_FILE OUTFILE_REC
$ ELSE
$ WRITE OUTPUT_FILE IN_RECORD
$ ENDIF
$!
$ GOTO READ_MORE
$!
$END_READ:
$!
$ CLOSE OUTPUT_FILE
$ CLOSE INPUT_FILE
$ RENAME/LOG SI$FEX:(FOCEXEC name).TMP SI$FEX:(FOCEXEC name).FEX
$!
$ DELETE SI$FEX:*.FTM;*/LOG
$ DELETE SI$FEX:*.MAS;*/LOG
$ DELETE SI$FEX:PLAY*.WP;*/LOG
$ DEFINE FOC$DIR2 SI$DATA, SI$MFD
$ SET DEFAULT SI$FEX
$ FOCUS
EXEC (FOCEXEC name)
FIN
$ CONVERT/APPEND SI$FEX:PLAY.FTM SI$DATA:AIB2FL.DAT
$ MAIL/SUBJECT="(FOCEXEC name) - PARKING HOLD UPDATE" PLAY2.WP [recipient-name]
$ EXIT
FOCUS program :
JOIN CLEAR *
-*
SET PAGE=NOPAGE
SET LINES=999999
FILEDEF PLAY DISK PLAY.FTM APPEND
FILEDEF AMFL010 DISK SI$DATA:AMFILE.DAT
-*
-SET &INDATE = '20001214';
-*
-* Create The Batch Header
-*
-SET &HDRKEY = '$$$MSC908 PARK HOLD UPD YBO';
-INCLUDE (SIS Batch Header).SEG
-*
-* Get all current parking ticket entries
-*
DEFINE FILE BDFILE
TR_DATE/A8 = EDIT(TRAN_DT);
END
TABLE FILE BDFILE
SUM TRAN_AMT BY STU_ID
ON TABLE HOLD AS BDTMP1
WHERE SUBCODE EQ '(subcode for parking ticket)';
WHERE TR_DATE EQ '&INDATE';
END
-*
-* Get all students that have at least one parking hold flag.
-*
TABLE FILE AMFL010
PRINT REASON BY STU_ID
ON TABLE HOLD AS AMTEMP1
WHERE REASON EQ '4A';
END
-*
-* Remove duplicates
-*
DEFINE FILE AMTEMP1
THS_REC/A1=IF STU_ID NE LAST STU_ID THEN 'Y' ELSE 'N';
END
TABLE FILE AMTEMP1
PRINT REASON BY STU_ID
ON TABLE HOLD AS AMTEMP2
WHERE THS_REC EQ 'Y';
END
-*
-* Merge the two above lists to find those students that need to have
-* the parking hold flag activated.
-*
MATCH FILE BDTMP1
PRINT TRAN_AMT BY STU_ID
WHERE TRAN_AMT GT 0;
RUN
FILE AMTEMP2
PRINT REASON BY STU_ID
AFTER MATCH HOLD OLD-NOT-NEW
END
-RUN
-*
-* Create batch transactions to update screen 448 accordingly.
-*
DEFINE FILE HOLD
DEC_HOLD_DT/A8='&INDATE';
FMT_HOLD_DT/A8=EDIT(DEC_HOLD_DT,'$$$$99')|EDIT(DEC_HOLD_DT,'$$$$$$99')|
EDIT(DEC_HOLD_DT,'9999');
-*
OUT_RECORD1/A40=('16A'|STU_ID|' R'|FMT_HOLD_DT|'BO 4AG');
OUT_RECORD2/A40=('16A'|STU_ID|' T'|FMT_HOLD_DT|'BO 4AG');
END
TABLE FILE HOLD
PRINT OUT_RECORD1
ON TABLE SAVE AS PLAY
END
-*
TABLE FILE HOLD
PRINT OUT_RECORD2
ON TABLE SAVE AS PLAY
END
-*
-* Create list of impacted students to send to the Business Office.
-*
JOIN STU_ID IN HOLD TO STU_ID IN AAFILE AS J1
TABLE FILE HOLD
PRINT STU_NAME BY STU_ID AS 'Student,Number'
ON TABLE SAVE AS PLAY2 FORMAT WP
END
JOIN CLEAR *
This page hosted by
Get your own Free Homepage