Typical DCL Command Procedure to set up the program :
$ OPEN/READ INPUT_FILE SI$FOCUS:(FOCEXEC name)PRM.DAT
$ READ INPUT_FILE BEG_DATE
$ CLOSE INPUT_FILE
$ EXEC_REC = "EXEC (FOCEXEC name) COMP_DATE=" + BEG_DATE
$ OPEN/READ INPUT_FILE SI$FOCUS:(FOCEXEC name).COM
$ OPEN/WRITE OUTPUT_FILE SI$FOCUS:(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 EXEC_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:(FOCEXEC name).TMP SI$FOCUS:(FOCEXEC name).COM;/LOG
$!
$!   Compute and write date to use next time
$!
$ NEW_DAY = F$CVTIME(,,"DAY")
$ NEW_MONTH = F$CVTIME(,,"MONTH")
$ NEW_YEAR = F$EXTRACT(2,2,F$CVTIME(,,"YEAR"))
$ NEW_DATE = NEW_YEAR + NEW_MONTH + NEW_DAY
$ OPEN/WRITE OUTPUT_FILE SI$FOCUS:(FOCEXEC name)PRM.DAT
$ OUTFILE_REC = NEW_DATE
$ WRITE OUTPUT_FILE OUTFILE_REC
$ CLOSE OUTPUT_FILE
$!
$ @SI$FOCUS:(FOCEXEC name).COM
$ EXIT
Typical DCL Command Procedure to actually run the program :
$ DELETE/LOG SI$FOCUS:*.FTM;*/LOG
$ DELETE/LOG SI$FOCUS:*.MAS;*/LOG
$ DEFINE FOC$DIR1 SI$DATA
$ SET DEFAULT SI$FOCUS
$ FOCUS
EXEC (FOCEXEC name) COMP_DATE=(Date to check in YYMMDD format)
FIN
$ SET DEFAULT Z$PRT
$ MAIL/SUBJ="CASHIER CHECKOUT REPORT" TEMPFILE.DOC (Specified e-mail address)
$ RENAME TEMPFILE.DOC (FOCEXEC name).PRT /LOG
$ EXIT
FOCUS program :
-*  THIS FOCEXEC WILL GENERATE THE CASHIER CHECKOUT REPORT FOR THE  
-*  PREVIOUS WEEK.
-*    VARIABLES USED:
-*      COMP_DATE   : THE BEGINNING DATE TO LOOK AT CASHIER ACTIVITY.
-*
JOIN CLEAR *
OFFLINE CLOSE
FILEDEF OFFLINE DISK Z$PRT:TEMPFILE.DOC
DEFINE FILE BMFILE
YEAR_BM/A2=EDIT(CASH_DT, '99$$$$');
MONTH_BM/A2=EDIT(CASH_DT, '$$99$$');
DAY_BM/A2=EDIT(CASH_DT, '$$$$99');
NEW_DATE_BM/A8=(MONTH_BM|'/'|DAY_BM|'/'|YEAR_BM);
MINUS_AMT_REC/P11.2C=-(AMT_RCVD_BM);
END
TABLE FILE BMFILE
SUM CHG_RETD AS 'Debit' MINUS_AMT_REC AS 'Credit' CASH_AMT AS 'Balance'
BY NEW_DATE_BM AS 'Date' 
BY CASH_SBCD 
BY CASH_ID 
BY CASH_OPER_ID 
IF CASH_DT GE '&COMP_DATE'
IF CASH_SBCD EQ '(Cash subcodes)' 
END
JOIN CLEAR *

 

This page hosted by Get your own Free Homepage

Hosted by www.Geocities.ws

1