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
-*
-* CREATE THE BATCH HEADER
-*
-SET &HDRKEY = '$$$MSC903 UPD 011 BC FLD YBO';
-INCLUDE (SIS Batch Header).SEG
-*
-* Retrieve bad check counter information.
-*
TABLE FILE AAFILE
PRINT CURRENT_BAL BY STU_ID BY HIGHEST BAD_CHECK_CNTR
WHERE BAD_CHECK_CNTR GE 3;
ON TABLE HOLD AS AATEMP1
END
-*
-* Remove duplicates
-*
DEFINE FILE AATEMP1
THS_REC/A1=IF STU_ID NE LAST STU_ID THEN 'Y' ELSE 'N';
END
TABLE FILE AATEMP1
PRINT BAD_CHECK_CNTR BY STU_ID
WHERE THS_REC EQ 'Y';
ON TABLE HOLD AS AATEMP2
END
-*
-* Get all students who are on cash-only basis, but do not
-* have a corresponding flag set on screen 11.
-*
MATCH FILE AAFILE
PRINT INFO_FLAG_21 BY STU_ID
WHERE INFO_FLAG_21 EQ '';
RUN
FILE AATEMP2
PRINT BAD_CHECK_CNTR BY STU_ID
AFTER MATCH HOLD OLD-AND-NEW
END
-RUN
-*
-* Create batch transactions to update screen 11 accordingly.
-*
DEFINE FILE HOLD
OUT_RECORD/A80=('10B'|STU_ID|' Y');
END
TABLE FILE HOLD
PRINT OUT_RECORD
ON TABLE SAVE AS PLAY
END
JOIN CLEAR *
This page hosted by
Get your own Free Homepage