home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / dbutil.zip / DBASEGRF.CMD < prev    next >
OS/2 REXX Batch file  |  1987-02-14  |  5KB  |  186 lines

  1. *--------------------------------------------------------
  2. *  Screen graphics command module (bar graph)           |
  3. *  Universal terminal version                           |
  4. *  John Hathaway    3/1/83                              |
  5. *--------------------------------------------------------
  6. RELEASE ALL
  7. SET TALK OFF
  8. ERASE
  9. *--------------------------------------------------------
  10. *       new DBF file ?                                  |
  11. *--------------------------------------------------------
  12. ? 'DBASE SCREEN GRAPHICS COMMAND PROGRAM'
  13. ?
  14. ACCEPT 'USE LOGGED IN DATA BASE? (Y/N)' TO YS
  15. IF !(YS)<>'Y'
  16.     ACCEPT 'ENTER DATA BASE NAME' TO name
  17.     USE &name
  18. ENDIF
  19. ERASE
  20. RELEASE YS
  21. *--------------------------------------------------------
  22. * setup field variables and data base read conditions   |
  23. *--------------------------------------------------------
  24. ? 'ENTER FIELD VARIABLES AND CONDITIONS BELOW'
  25. ?
  26. ACCEPT '   FIELD X' TO vx
  27. ACCEPT '   FIELD Y' TO vy
  28. ACCEPT 'CONDITIONS' TO C
  29. ?
  30. ?
  31. ACCEPT 'GRAPH TYPE ( <S>catter or <B>ar )' TO bars
  32. IF !(bars)='B'
  33. ACCEPT 'LABEL FIELD' TO label
  34. ENDIF
  35. ERASE
  36. ?'DETERMINING MINIMUM AND MAXIMUM DATA POINTS ...'
  37. ?
  38. STORE -10000 TO xmax
  39. STORE 10000 TO xmin
  40. STORE -10000 TO ymax
  41. STORE 10000 TO ymin
  42. STORE 1 TO num
  43. STORE 0 TO sume
  44. GOTO TOP
  45. DO WHILE .NOT. EOF
  46. *--------------------change following line for cursor up and remove '*'
  47. *   DISPLAY OFF 'RECORD #:',#,CHR(11)
  48.   IF &C
  49.     IF &vx<=xmin
  50.         STORE &vx TO xmin
  51.     ELSE
  52.     IF &vx>=xmax
  53.         STORE &vx TO xmax
  54.     ENDIF
  55.     ENDIF
  56.     IF &vy<=ymin
  57.         STORE &vy TO ymin
  58.     ELSE
  59.     IF &vy>=ymax
  60.         STORE &vy TO ymax
  61.     ENDIF
  62.     ENDIF
  63.     STORE num+1 TO num
  64.     STORE sume+&vy TO sume
  65.   ENDIF
  66.     SKIP+1
  67. ENDDO
  68. *-------------------------------------------------------
  69. * display minimum and maximum - allow alternate entries|
  70. *-------------------------------------------------------
  71. ERASE
  72. @ 2,10 SAY 'AXIS SETUP SCREEN'
  73. @ 5,10 SAY 'NUMBER:'
  74. @ 5,20 SAY STR(num,6,0)
  75. @ 7,10 SAY 'AVERAGE:'
  76. @ 7,20 SAY STR(sume/num,8,2)
  77. @ 8,10 SAY '------------------'
  78. @ 10,10 SAY 'LOWER X' GET xmin
  79. @ 11,10 SAY 'UPPER X' GET xmax
  80. @ 13,10 SAY 'LOWER Y' GET ymin
  81. @ 14,10 SAY 'UPPER Y' GET ymax
  82. IF NUM>15
  83. @ 17,5 SAY 'Too many points for BAR GRAPH. Switching to SCATTERPLOT.'
  84. STORE 'S' TO BARS
  85. ENDIF
  86. READ
  87. *--------------------------------------------------------
  88. *          determine axis scaling factors               |
  89. *--------------------------------------------------------
  90. STORE xmax-xmin TO xdif
  91. STORE xdif/5 TO xinc
  92. STORE ymax-ymin TO ydif
  93. STORE ydif/4 TO yinc
  94. STORE 1 TO X
  95. STORE 1 TO Y
  96. STORE 1 TO A
  97. ERASE
  98. *--------------------------------------------------------
  99. *                    draw Y axis                        |
  100. *--------------------------------------------------------
  101. STORE ymax TO B
  102. STORE '    ' TO D
  103. DO WHILE A<23
  104.     STORE (A-2)/5 TO F
  105.     IF ymax>10
  106.         STORE STR(B-F*yinc,3) TO D
  107.     ELSE
  108.         STORE STR(B-F*yinc,3,1) TO D
  109.     ENDIF
  110.     IF A=2 .OR. A=7 .OR. A=12 .OR. A=17 .OR. A=22
  111.         @ A,1 SAY D
  112.         @ A,4 SAY '+'
  113.     ELSE
  114.         @ A,4 SAY '|'
  115.     ENDIF
  116.     STORE A+1 TO A
  117. ENDDO
  118. *--------------------------------------------------------
  119. *                       draw X axis                     |
  120. *--------------------------------------------------------
  121. STORE 0 TO A
  122. @ 22,4 SAY '+--------------+--------------+--------------+--------------+--------------+'
  123. STORE 15 TO N5
  124. DO WHILE A<6
  125.     IF A=5
  126.         STORE 14.4 TO N5
  127.     ENDIF  
  128.     STORE xmin+A*xinc TO B
  129.     @ 23,A*N5+2 SAY STR(B,4,1)
  130.     STORE A+1 TO A
  131. ENDDO
  132. @ 1,50 SAY 'Y AXIS ='
  133. @ 1,58 SAY vy
  134. @ 1,30 SAY 'X AXIS ='
  135. @ 1,38 SAY vx
  136. *--------------------------------------------------------
  137. *               read file and plot data                 |
  138. *--------------------------------------------------------
  139. GOTO TOP
  140. DO WHILE .NOT. EOF
  141.     IF &C 
  142.         STORE (&vx-xmin)/xdif*75 TO X1
  143.         STORE (&vy-ymin)/ydif*20 TO Y1
  144.         STORE 22-Y1 TO JJ
  145.       IF !(bars)='B'
  146.         @ JJ,X1+3 SAY '*'
  147.         @ JJ,X1+4 SAY '*'
  148.         @ JJ,X1+5 SAY '*'
  149.         STORE JJ+1 TO JJ
  150.         DO WHILE JJ<22
  151.             @ JJ,X1+3 SAY '|'
  152.             @ JJ,X1+5 SAY '|'
  153.             STORE JJ+1 TO JJ
  154.         ENDDO
  155. *--------------------------------------------------------
  156. *    plot labels vertically inside bars                 |
  157. *--------------------------------------------------------
  158.         STORE 1 TO L
  159.         IF TYPE(&label)='N'
  160.            STORE STR(&label,4) TO Tlabel
  161.         ELSE
  162.            STORE TRIM(&label) TO Tlabel
  163.         ENDIF
  164.         DO WHILE L<=LEN(Tlabel)
  165.             @ 21-LEN(Tlabel)+L,X1+4 SAY $(Tlabel,L,1)
  166.             STORE L+1 TO L
  167.         ENDDO
  168. *------------------------------------ scatter plot
  169.       ELSE
  170.         @ JJ,X1+4 SAY '*'
  171.       ENDIF
  172.     ENDIF
  173.     SKIP+1
  174. ENDDO
  175. RELEASE ALL
  176. *--------------------------------------------------------
  177. *     jump up here to avoid rolling the screen up       |
  178. *--------------------------------------------------------
  179. STORE '  ' TO YS
  180. @ 1,70 SAY 'RET' GET YS
  181. READ
  182. RETURN
  183.  
  184.      |
  185. *--------------------------------------------------------
  186. ST