Typical DCL Command Procedure to run the program :
$ DELETE SI$FEX:*.FTM;*/LOG
$ DELETE SI$FEX:*.MAS;*/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
$ EXIT
FOCUS program :
JOIN CLEAR *
-*
SET PAGE=NOPAGE
SET LINES=999999
FILEDEF PLAY DISK PLAY.FTM APPEND
FILEDEF AMFL010 DISK SI$DATA:AMFILE.DAT
-*
-* CREATE THE BATCH HEADER
-*
-SET &HDRKEY = '$$$MSC907 011 REM BOH FLDYBO';
-INCLUDE (SIS Batch Header).SEG
-*
-* Get all students that have the Business Office hold indicator
-* set on screen 11.
-*
TABLE FILE AAFILE
PRINT INFO_FLAG_22 BY STU_ID
WHERE INFO_FLAG_22 EQ 'Y';
ON TABLE HOLD AS AATEMP1
END
-*
-* Get all students that have at least one Business Office hold flag.
-*
DEFINE FILE AMFL010
REASON_CD/A1=EDIT(REASON,'9');
END
TABLE FILE AMFL010
PRINT REASON BY STU_ID
ON TABLE HOLD AS AMTEMP3
WHERE REASON_CD EQ '4';
END
-*
-* Remove duplicates
-*
DEFINE FILE AMTEMP3
THS_REC/A1=IF STU_ID NE LAST STU_ID THEN 'Y' ELSE 'N';
END
TABLE FILE AMTEMP3
PRINT REASON BY STU_ID
ON TABLE HOLD AS AMTEMP4
WHERE THS_REC EQ 'Y';
END
-*
-* Merge the two above lists to find those students that have had the
-* Business Office hold flag removed.
-*
MATCH FILE AATEMP1
PRINT INFO_FLAG_22 BY STU_ID
RUN
FILE AMTEMP4
PRINT REASON BY STU_ID
AFTER MATCH HOLD OLD-NOT-NEW
END
-RUN
-*
-* Create batch transactions to update screen 11 accordingly.
-*
DEFINE FILE HOLD
OUT_RECORD/A80=('10B'|STU_ID|' *');
END
TABLE FILE HOLD
PRINT OUT_RECORD
ON TABLE SAVE AS PLAY
END
JOIN CLEAR *
This page hosted by
Get your own Free Homepage