home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / utils / miscutil.zip / DBRELATE.ZIP / RELATION.PRG < prev    next >
Text File  |  1987-07-22  |  3KB  |  104 lines

  1. * NON-LINEAR RELATION CHAIN DEMONSTRATION.
  2. * July 22, 1987 GREGORY J. SCOTT  409-833-6226 (w)   838-2195 (h)
  3. PUBLIC CLIPPER
  4. SET TALK OFF
  5. SET SAFETY OFF
  6. SET HEADINGS ON
  7. CLOSE databases
  8.  
  9. SELECT A                   
  10. USE ATIME               && fields:  DATE, JOB_NUM, ID, HOURS, PAY
  11. INDEX ON JOB_NUM+ID+DTOC(DATE) TO ATIME
  12. SELECT B                   
  13. USE BROSTER                                 && fields:  ID, CLASS
  14. INDEX ON ID TO BROSTER
  15. SELECT C                   
  16. USE CJOBS                           && fields:  JOB_NUM, RATECODE
  17. INDEX ON JOB_NUM TO CJOBS
  18. SELECT D                   
  19. USE DJOBRATE                   && fields: JOBRATE, CLASS, PAYRATE
  20. INDEX ON JOBRATE+CLASS TO DJOBRATE
  21.  
  22. IF CLIPPER
  23.    SELECT ATIME
  24.    SET RELATION TO ID      INTO BROSTER,;
  25.                 TO JOB_NUM INTO CJOBS
  26.    SELECT C
  27.    SET RELATION TO CJOBS->RATECODE+BROSTER->CLASS INTO DJOBRATE
  28. ELSE 
  29.    SELECT A
  30.    SET RELATION TO ID   INTO BROSTER
  31.    LIST STRU TO PRINTER
  32.    LIST TO PRINTER
  33.    SELECT B
  34.    SET RELATION TO ATIME->JOB_NUM   INTO CJOBS
  35.    LIST STRU TO PRINTER
  36.    LIST TO PRINTER
  37.    SELECT C
  38.    SET RELATION TO CJOBS->RATECODE+BROSTER->CLASS INTO DJOBRATE
  39.    LIST STRU TO PRINTER
  40.    LIST TO PRINTER
  41.    SELECT D
  42.    LIST STRU TO PRINTER
  43.    LIST TO PRINTER
  44. ENDIF
  45.  
  46. SET ALTERNATE TO RELATION.TXT
  47. SET ALTERNATE ON
  48.  
  49.  
  50. SELE A
  51.  
  52. REPLACE ALL PAY WITH 0  && UNDO CALCULATIONS IF PROGRAM IS RERUN.
  53. GOTO TOP
  54. ? "LIST DATABASE CONTENTS TO DEMONSTRATE RELATION IS WORKING."
  55. ? "date     job   id   hours   pay c r payrate"
  56. DO WHILE .NOT. EOF()
  57.    ? DATE, JOB_NUM, ID, HOURS, PAY, B->CLASS, C->RATECODE, D->PAYRATE
  58.    SKIP 1
  59. ENDDO
  60.  
  61. REPLACE ALL PAY WITH HOURS*DJOBRATE->PAYRATE
  62.  
  63. GOTO TOP
  64. ? "LIST DATABASE CONTENTS TO DEMONSTRATE CROSS-FILE REPLACE"
  65. ? "date     job   id   hours   pay c r payrate"
  66. DO WHILE .NOT. EOF()
  67.    ? DATE, JOB_NUM, ID, HOURS, PAY, B->CLASS, C->RATECODE, D->PAYRATE
  68.    SKIP 1
  69. ENDDO
  70.  
  71. GOTO TOP
  72. INDEX ON BROSTER->CLASS TO ATIMECLS
  73. GOTO TOP
  74. ? "LIST DATABASE TO DEMONSTRATE CROSS-FILE INDEX ORDER"
  75. ? "date     job   id   hours   pay c r payrate"
  76. DO WHILE .NOT. EOF()
  77.    ? DATE, JOB_NUM, ID, HOURS, PAY, B->CLASS, C->RATECODE, D->PAYRATE
  78.    SKIP 1
  79. ENDDO
  80.  
  81. GOTO TOP
  82. IF CLIPPER
  83.    TOTAL TO ECLASSUM ON BROSTER->CLASS FIELDS HOURS
  84. ELSE
  85.    TOTAL TO ECLASSUM ON BROSTER->CLASS 
  86. ENDIF
  87. SELE E
  88. USE ECLASSUM
  89. ? "LIST TOTAL ON FILE TO DEMONSTRATE CROSS-FILE TOTAL ON"
  90. LIST 
  91.  
  92. SELE D   && A POSSIBLY MORE DIFFICULT CROSS-FILE REPLACE
  93. GOTO TOP
  94. REPLACE ALL PAYRATE WITH 0
  95. LIST
  96. SELE A
  97. REPLACE ALL D->PAYRATE WITH PAY/HOURS
  98. SELE D
  99. LIST  && IT IS DUBIOUS IF THIS WORKS AT ALL IN CLIPPER. 
  100. *        IT DOES WORK WELL IN DBASE!
  101.  
  102. SET ALTERNATE TO
  103. TYPE RELATION.TXT TO PRINT
  104.