home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol269 / scatgrm.for < prev    next >
Encoding:
Text File  |  1986-05-22  |  4.4 KB  |  153 lines

  1. C [SCATGRM.FOR of JUGCPM Vol.12]
  2. C
  3. C     ** SCATTER DIAGRAM BY GRAPH0 **  [╗▌╠▀╜▐] 
  4. C        Yoshio MONMA       84-04-12
  5. C
  6. C        This program has been written in FORTRAN-80 and the output
  7. C     printer has been assumed to be EPSON's RP-80.  The input data 
  8. C     must be in FORT0X.DAT (X=6-10).  So, you have to prepare the 
  9. C     data file as follows:
  10. C
  11. C             REN FORT0X.DAT=SCATGRM.DAT
  12. C     or
  13. C             PIP FORT0X.DAT=SCATGRM.DAT
  14. C
  15. C        Also note that the data file (FORT0X.DAT) must be placed on 
  16. C     the same disk with the .COM file.
  17. C
  18. C     * Reference *
  19. C       T. Haga & S. Hashimoto: "Fundamentals of Programming for 
  20. C       Statistical Analysis" (─│╣▓╢▓╛╖ PROGRAM ╔ ╖┐),
  21. C       JUSE (╞»╢╖▐┌▌), 1980.
  22. C
  23. C     * LIST OF INPUT DATA *
  24. C       (I5)      INPT                            (CON)
  25. C       (2I5)     N,KDTA                          (DK)
  26. C       (15A4)    TITLE                           (DK)
  27. C       (2A8)     XAXIS,YAXIS                     (DK)
  28. C       (15A4)    VFRMT                           (DK)
  29. C       (VFRMT)   X(I),Y(I) <N pairs>             (DK)
  30. C       (4F10.2)  XMIN,XMAX,YMIN,YMAX             (DK)
  31. C       (2I5)     N,KDTA <Next data set>          (DK)
  32. C
  33.       PROGRAM    SCATGRM
  34. C
  35.       INTEGER*1  ESC,BIGM
  36.       REAL*4     TITLE(15),VFRMT(15),X(300),Y(300)
  37.       REAL*8     XAXIS,YAXIS
  38. C
  39.       DATA       ESC,BIGM/Z'1B',Z'4D'/
  40. C
  41. C                Set RP-80 Printer in Elite Size
  42.       WRITE(2,200) ESC,BIGM
  43.   200   FORMAT(1H ,2A1)
  44.       WRITE(1,100) 
  45.   100   FORMAT(1H0,11X,'** SCATTER DIAGRAM BY GRAPH0 (SCATGRM) ** '/)
  46. C
  47.    10 WRITE(1,110)
  48.   110  FORMAT(1H ,5X,'Input data file [FORT0X.DAT], 6<=X=<10: ')
  49.       READ(1,500) INPT
  50.   500   FORMAT(2I5)
  51.       IF ((INPT.NE.0).AND.(INPT.LT.6.OR.INPT.GT.10)) GOTO 10
  52.    20 READ(INPT,500) N,KDTA
  53.       IF (N.NE.0) GOTO 25
  54.       WRITE(2,250)
  55.       STOP
  56. C
  57.    25 READ(INPT,510) TITLE
  58.   510   FORMAT(1X,15A4)
  59.       READ(INPT,520) XAXIS,YAXIS
  60.   520   FORMAT(1X,2A8)
  61.       WRITE(2,100)
  62.       WRITE(2,210) TITLE
  63.   210   FORMAT(1H ,10X,15A4/)
  64.       WRITE(2,220) INPT,N,KDTA
  65.   220   FORMAT(1H ,10X,'INPT =',I2,', N =',I3,', KDTA =',I2)
  66. C
  67.       READ(INPT,510) VFRMT
  68.       WRITE(1,120) N
  69.   120 FORMAT(1H0,5X,'Data Size =',I3,', Reading data from DK...')
  70.       DO 30 I=1,N
  71.         READ(INPT,VFRMT) X(I),Y(I)
  72.    30 CONTINUE
  73.       IF (KDTA.EQ.1)          GOTO 50
  74.       WRITE(2,230)
  75.   230   FORMAT(1H0,10X,'* INPUT DATA *'/15X,'I',6X,'X(I)',11X,'Y(I)'/)
  76.       DO 40 I=1,N
  77.         WRITE(2,240) I,X(I),Y(I)
  78.   240     FORMAT(1H ,I15,1P2E15.5)
  79.    40 CONTINUE
  80. C
  81.    50 READ(INPT,530) XMIN,XMAX,YMIN,YMAX
  82.   530   FORMAT(4F10.2)
  83. C
  84.       IF (KDTA.NE.1) WRITE(2,250) TITLE
  85.   250   FORMAT(1H1/11X,15A4)
  86.       WRITE(1,130)
  87.   130   FORMAT(1H0,5X,'Call GRAPH0')
  88.       CALL GRAPH0(XAXIS,YAXIS,X,Y,N,XMIN,XMAX,YMIN,YMAX)
  89.                               GOTO 20
  90.       END
  91. C
  92.       SUBROUTINE  GRAPH0(XAXIS,YAXIS,X,Y,N,XMIN,XMAX,YMIN,YMAX)
  93. C
  94. C  ** PLOT OF SCATTER DIAGRAM **
  95. C
  96. C     * Reference *
  97. C       T. Haga & S. Hashimoto: "Fundamentals of Programming for 
  98. C       Statistical Analysis" (─│╣▓╢▓╛╖ PROGRAM ╔ ╖┐),
  99. C       JUSE (╞»╢╖▐┌▌), 1980.
  100. C
  101.       INTEGER*1  H(37,73)
  102.       DIMENSION  X(1),Y(1),SCALE(9)
  103.       REAL*8     XAXIS,YAXIS
  104. C
  105.       DATA       II,JJ,LL/37,73,9/
  106. C     
  107.       DX = (XMAX-XMIN)/(JJ-1)
  108.       DY = (YMAX-YMIN)/(II-1)
  109.       DO 20 I=1,II
  110.         DO 10 J=1,JJ
  111.           H(I,J) = ' '
  112.    10   CONTINUE
  113.    20 CONTINUE
  114. C
  115.       IF (XMAX*XMIN.GE.0.0) GOTO 40
  116.       J = -XMIN/DX+1.5
  117.       DO 30 I=1,II
  118.         H(I,J) = Z'96'
  119.    30 CONTINUE
  120.    40 IF (YMAX*YMIN.GE.0.0) GOTO 60
  121.       I = YMAX/DY+1.5
  122.       DO 50 J=1,JJ
  123.         H(I,J) = Z'95'
  124.    50 CONTINUE
  125.    60 DO 70 K=1,N
  126.         I = (YMAX-Y(K))/DY+1.5
  127.         J = (X(K)-XMIN)/DX+1.5
  128.         H(I,J) = Z'EC'
  129.    70 CONTINUE
  130.       SCALE(1) = XMIN
  131.       DO 80 L=2,LL
  132.         SCALE(L) = SCALE(L-1)+LL*DX
  133.    80 CONTINUE
  134.       WRITE(2,600) XAXIS,YAXIS
  135.       WRITE(2,610) SCALE 
  136.       WRITE(2,620)
  137.       DO 100 I=1,II
  138.    90     WRITE(2,630) YMAX,(H(I,J),J=1,JJ),YMAX
  139.         YMAX = YMAX-DY
  140.   100 CONTINUE
  141.       WRITE(2,620)
  142.       WRITE(2,610) SCALE
  143.       WRITE(2,640)
  144. C
  145.   600 FORMAT(1H0,10X,'XAXIS = ',A8,', YAXIS = ',A8/)
  146.   610 FORMAT(1H ,6X,9F9.3)
  147.   620 FORMAT(1H ,11X,1H:,8('........:'))
  148.   630 FORMAT(1H ,F9.3,' -',73A1,1H-,F9.3)
  149.   640 FORMAT(1H0)
  150. C
  151.       RETURN
  152.       END
  153.