home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug104.arc / DBASEGRF.CMD < prev    next >
OS/2 REXX Batch file  |  1979-12-31  |  5KB  |  369 lines

  1. *--------------------------------------------------------
  2.  
  3. *  Screen graphics command module (bar graph)           |
  4.  
  5. *  Universal terminal version                           |
  6.  
  7. *  John Hathaway    3/1/83                              |
  8.  
  9. *--------------------------------------------------------
  10.  
  11. RELEASE ALL
  12.  
  13. SET TALK OFF
  14.  
  15. ERASE
  16.  
  17. *--------------------------------------------------------
  18.  
  19. *       new DBF file ?                                  |
  20.  
  21. *--------------------------------------------------------
  22.  
  23. ? 'DBASE SCREEN GRAPHICS COMMAND PROGRAM'
  24.  
  25. ?
  26.  
  27. ACCEPT 'USE LOGGED IN DATA BASE? (Y/N)' TO YS
  28.  
  29. IF !(YS)<>'Y'
  30.  
  31.     ACCEPT 'ENTER DATA BASE NAME' TO name
  32.  
  33.     USE &name
  34.  
  35. ENDIF
  36.  
  37. ERASE
  38.  
  39. RELEASE YS
  40.  
  41. *--------------------------------------------------------
  42.  
  43. * setup field variables and data base read conditions   |
  44.  
  45. *--------------------------------------------------------
  46.  
  47. ? 'ENTER FIELD VARIABLES AND CONDITIONS BELOW'
  48.  
  49. ?
  50.  
  51. ACCEPT '   FIELD X' TO vx
  52.  
  53. ACCEPT '   FIELD Y' TO vy
  54.  
  55. ACCEPT 'CONDITIONS' TO C
  56.  
  57. ?
  58.  
  59. ?
  60.  
  61. ACCEPT 'GRAPH TYPE ( <S>catter or <B>ar )' TO bars
  62.  
  63. IF !(bars)='B'
  64.  
  65. ACCEPT 'LABEL FIELD' TO label
  66.  
  67. ENDIF
  68.  
  69. ERASE
  70.  
  71. ?'DETERMINING MINIMUM AND MAXIMUM DATA POINTS ...'
  72.  
  73. ?
  74.  
  75. STORE -10000 TO xmax
  76.  
  77. STORE 10000 TO xmin
  78.  
  79. STORE -10000 TO ymax
  80.  
  81. STORE 10000 TO ymin
  82.  
  83. STORE 1 TO num
  84.  
  85. STORE 0 TO sume
  86.  
  87. GOTO TOP
  88.  
  89. DO WHILE .NOT. EOF
  90.  
  91. *--------------------change following line for cursor up and remove '*'
  92.  
  93. *   DISPLAY OFF 'RECORD #:',#,CHR(11)
  94.  
  95.   IF &C
  96.  
  97.     IF &vx<=xmin
  98.  
  99.         STORE &vx TO xmin
  100.  
  101.     ELSE
  102.  
  103.     IF &vx>=xmax
  104.  
  105.         STORE &vx TO xmax
  106.  
  107.     ENDIF
  108.  
  109.     ENDIF
  110.  
  111.     IF &vy<=ymin
  112.  
  113.         STORE &vy TO ymin
  114.  
  115.     ELSE
  116.  
  117.     IF &vy>=ymax
  118.  
  119.         STORE &vy TO ymax
  120.  
  121.     ENDIF
  122.  
  123.     ENDIF
  124.  
  125.     STORE num+1 TO num
  126.  
  127.     STORE sume+&vy TO sume
  128.  
  129.   ENDIF
  130.  
  131.     SKIP+1
  132.  
  133. ENDDO
  134.  
  135. *-------------------------------------------------------
  136.  
  137. * display minimum and maximum - allow alternate entries|
  138.  
  139. *-------------------------------------------------------
  140.  
  141. ERASE
  142.  
  143. @ 2,10 SAY 'AXIS SETUP SCREEN'
  144.  
  145. @ 5,10 SAY 'NUMBER:'
  146.  
  147. @ 5,20 SAY STR(num,6,0)
  148.  
  149. @ 7,10 SAY 'AVERAGE:'
  150.  
  151. @ 7,20 SAY STR(sume/num,8,2)
  152.  
  153. @ 8,10 SAY '------------------'
  154.  
  155. @ 10,10 SAY 'LOWER X' GET xmin
  156.  
  157. @ 11,10 SAY 'UPPER X' GET xmax
  158.  
  159. @ 13,10 SAY 'LOWER Y' GET ymin
  160.  
  161. @ 14,10 SAY 'UPPER Y' GET ymax
  162.  
  163. IF NUM>15
  164.  
  165. @ 17,5 SAY 'Too many points for BAR GRAPH. Switching to SCATTERPLOT.'
  166.  
  167. STORE 'S' TO BARS
  168.  
  169. ENDIF
  170.  
  171. READ
  172.  
  173. *--------------------------------------------------------
  174.  
  175. *          determine axis scaling factors               |
  176.  
  177. *--------------------------------------------------------
  178.  
  179. STORE xmax-xmin TO xdif
  180.  
  181. STORE xdif/5 TO xinc
  182.  
  183. STORE ymax-ymin TO ydif
  184.  
  185. STORE ydif/4 TO yinc
  186.  
  187. STORE 1 TO X
  188.  
  189. STORE 1 TO Y
  190.  
  191. STORE 1 TO A
  192.  
  193. ERASE
  194.  
  195. *--------------------------------------------------------
  196.  
  197. *                    draw Y axis                        |
  198.  
  199. *--------------------------------------------------------
  200.  
  201. STORE ymax TO B
  202.  
  203. STORE '    ' TO D
  204.  
  205. DO WHILE A<23
  206.  
  207.     STORE (A-2)/5 TO F
  208.  
  209.     IF ymax>10
  210.  
  211.         STORE STR(B-F*yinc,3) TO D
  212.  
  213.     ELSE
  214.  
  215.         STORE STR(B-F*yinc,3,1) TO D
  216.  
  217.     ENDIF
  218.  
  219.     IF A=2 .OR. A=7 .OR. A=12 .OR. A=17 .OR. A=22
  220.  
  221.         @ A,1 SAY D
  222.  
  223.         @ A,4 SAY '+'
  224.  
  225.     ELSE
  226.  
  227.         @ A,4 SAY '|'
  228.  
  229.     ENDIF
  230.  
  231.     STORE A+1 TO A
  232.  
  233. ENDDO
  234.  
  235. *--------------------------------------------------------
  236.  
  237. *                       draw X axis                     |
  238.  
  239. *--------------------------------------------------------
  240.  
  241. STORE 0 TO A
  242.  
  243. @ 22,4 SAY '+--------------+--------------+--------------+--------------+--------------+'
  244.  
  245. STORE 15 TO N5
  246.  
  247. DO WHILE A<6
  248.  
  249.     IF A=5
  250.  
  251.         STORE 14.4 TO N5
  252.  
  253.     ENDIF  
  254.  
  255.     STORE xmin+A*xinc TO B
  256.  
  257.     @ 23,A*N5+2 SAY STR(B,4,1)
  258.  
  259.     STORE A+1 TO A
  260.  
  261. ENDDO
  262.  
  263. @ 1,50 SAY 'Y AXIS ='
  264.  
  265. @ 1,58 SAY vy
  266.  
  267. @ 1,30 SAY 'X AXIS ='
  268.  
  269. @ 1,38 SAY vx
  270.  
  271. *--------------------------------------------------------
  272.  
  273. *               read file and plot data                 |
  274.  
  275. *--------------------------------------------------------
  276.  
  277. GOTO TOP
  278.  
  279. DO WHILE .NOT. EOF
  280.  
  281.     IF &C 
  282.  
  283.         STORE (&vx-xmin)/xdif*75 TO X1
  284.  
  285.         STORE (&vy-ymin)/ydif*20 TO Y1
  286.  
  287.         STORE 22-Y1 TO JJ
  288.  
  289.       IF !(bars)='B'
  290.  
  291.         @ JJ,X1+3 SAY '*'
  292.  
  293.         @ JJ,X1+4 SAY '*'
  294.  
  295.         @ JJ,X1+5 SAY '*'
  296.  
  297.         STORE JJ+1 TO JJ
  298.  
  299.         DO WHILE JJ<22
  300.  
  301.             @ JJ,X1+3 SAY '|'
  302.  
  303.             @ JJ,X1+5 SAY '|'
  304.  
  305.             STORE JJ+1 TO JJ
  306.  
  307.         ENDDO
  308.  
  309. *--------------------------------------------------------
  310.  
  311. *    plot labels vertically inside bars                 |
  312.  
  313. *--------------------------------------------------------
  314.  
  315.         STORE 1 TO L
  316.  
  317.         IF TYPE(&label)='N'
  318.  
  319.            STORE STR(&label,4) TO Tlabel
  320.  
  321.         ELSE
  322.  
  323.            STORE TRIM(&label) TO Tlabel
  324.  
  325.         ENDIF
  326.  
  327.         DO WHILE L<=LEN(Tlabel)
  328.  
  329.             @ 21-LEN(Tlabel)+L,X1+4 SAY $(Tlabel,L,1)
  330.  
  331.             STORE L+1 TO L
  332.  
  333.         ENDDO
  334.  
  335. *------------------------------------ scatter plot
  336.  
  337.       ELSE
  338.  
  339.         @ JJ,X1+4 SAY '*'
  340.  
  341.       ENDIF
  342.  
  343.     ENDIF
  344.  
  345.     SKIP+1
  346.  
  347. ENDDO
  348.  
  349. RELEASE ALL
  350.  
  351. *--------------------------------------------------------
  352.  
  353. *     jump up here to avoid rolling the screen up       |
  354.  
  355. *--------------------------------------------------------
  356.  
  357. STORE '  ' TO YS
  358.  
  359. @ 1,70 SAY 'RET' GET YS
  360.  
  361. READ
  362.  
  363. RETURN
  364.  
  365.  
  366.  
  367. 
  368.  
  369. *----------