home *** CD-ROM | disk | FTP | other *** search
- * NON-LINEAR RELATION CHAIN DEMONSTRATION.
- * July 22, 1987 GREGORY J. SCOTT 409-833-6226 (w) 838-2195 (h)
- PUBLIC CLIPPER
- SET TALK OFF
- SET SAFETY OFF
- SET HEADINGS ON
- CLOSE databases
-
- SELECT A
- USE ATIME && fields: DATE, JOB_NUM, ID, HOURS, PAY
- INDEX ON JOB_NUM+ID+DTOC(DATE) TO ATIME
- SELECT B
- USE BROSTER && fields: ID, CLASS
- INDEX ON ID TO BROSTER
- SELECT C
- USE CJOBS && fields: JOB_NUM, RATECODE
- INDEX ON JOB_NUM TO CJOBS
- SELECT D
- USE DJOBRATE && fields: JOBRATE, CLASS, PAYRATE
- INDEX ON JOBRATE+CLASS TO DJOBRATE
-
- IF CLIPPER
- SELECT ATIME
- SET RELATION TO ID INTO BROSTER,;
- TO JOB_NUM INTO CJOBS
- SELECT C
- SET RELATION TO CJOBS->RATECODE+BROSTER->CLASS INTO DJOBRATE
- ELSE
- SELECT A
- SET RELATION TO ID INTO BROSTER
- LIST STRU TO PRINTER
- LIST TO PRINTER
- SELECT B
- SET RELATION TO ATIME->JOB_NUM INTO CJOBS
- LIST STRU TO PRINTER
- LIST TO PRINTER
- SELECT C
- SET RELATION TO CJOBS->RATECODE+BROSTER->CLASS INTO DJOBRATE
- LIST STRU TO PRINTER
- LIST TO PRINTER
- SELECT D
- LIST STRU TO PRINTER
- LIST TO PRINTER
- ENDIF
-
- SET ALTERNATE TO RELATION.TXT
- SET ALTERNATE ON
-
-
- SELE A
-
- REPLACE ALL PAY WITH 0 && UNDO CALCULATIONS IF PROGRAM IS RERUN.
- GOTO TOP
- ? "LIST DATABASE CONTENTS TO DEMONSTRATE RELATION IS WORKING."
- ? "date job id hours pay c r payrate"
- DO WHILE .NOT. EOF()
- ? DATE, JOB_NUM, ID, HOURS, PAY, B->CLASS, C->RATECODE, D->PAYRATE
- SKIP 1
- ENDDO
-
- REPLACE ALL PAY WITH HOURS*DJOBRATE->PAYRATE
-
- GOTO TOP
- ? "LIST DATABASE CONTENTS TO DEMONSTRATE CROSS-FILE REPLACE"
- ? "date job id hours pay c r payrate"
- DO WHILE .NOT. EOF()
- ? DATE, JOB_NUM, ID, HOURS, PAY, B->CLASS, C->RATECODE, D->PAYRATE
- SKIP 1
- ENDDO
-
- GOTO TOP
- INDEX ON BROSTER->CLASS TO ATIMECLS
- GOTO TOP
- ? "LIST DATABASE TO DEMONSTRATE CROSS-FILE INDEX ORDER"
- ? "date job id hours pay c r payrate"
- DO WHILE .NOT. EOF()
- ? DATE, JOB_NUM, ID, HOURS, PAY, B->CLASS, C->RATECODE, D->PAYRATE
- SKIP 1
- ENDDO
-
- GOTO TOP
- IF CLIPPER
- TOTAL TO ECLASSUM ON BROSTER->CLASS FIELDS HOURS
- ELSE
- TOTAL TO ECLASSUM ON BROSTER->CLASS
- ENDIF
- SELE E
- USE ECLASSUM
- ? "LIST TOTAL ON FILE TO DEMONSTRATE CROSS-FILE TOTAL ON"
- LIST
-
- SELE D && A POSSIBLY MORE DIFFICULT CROSS-FILE REPLACE
- GOTO TOP
- REPLACE ALL PAYRATE WITH 0
- LIST
- SELE A
- REPLACE ALL D->PAYRATE WITH PAY/HOURS
- SELE D
- LIST && IT IS DUBIOUS IF THIS WORKS AT ALL IN CLIPPER.
- * IT DOES WORK WELL IN DBASE!
-
- SET ALTERNATE TO
- TYPE RELATION.TXT TO PRINT