input.f 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. SUBROUTINE INPUTDATA(FILENAME,NOBS,TES,EMPL,EMPG,PROD,
  2. & REGIONAME,DEBUG,METHOD,DELTA,LABELS,CODES,SORT)
  3. IMPLICIT NONE
  4. INTEGER NOBS,DEBUG
  5. CHARACTER*25 FILENAME
  6. CHARACTER*20 REGIONAME
  7. CHARACTER*40 LABELS(NOBS)
  8. CHARACTER*5 CODES(NOBS)
  9. CHARACTER*5 METHOD
  10. CHARACTER*6 SORT
  11. REAL*8 TES(NOBS,NOBS),EMPL(NOBS),EMPG(NOBS),PROD(NOBS)
  12. REAL*8 DELTA
  13. REAL*8 EMPLTOT,EMPGTOT
  14. CHARACTER*40 LINE
  15. CHARACTER*10 FMT
  16. INTEGER N,I,J
  17. C LECTURE DES DONNÉES
  18. OPEN(UNIT=1,FILE=FILENAME)
  19. 1 READ(1,*) LINE
  20. N=SCAN(LINE,':',.FALSE.)
  21. IF(N.EQ.0) GOTO 1
  22. LINE=LINE(1:N-1)
  23. IF(LINE.EQ.'NOBS') THEN
  24. READ(1,*) NOBS
  25. ELSEIF(LINE.EQ.'TES') THEN
  26. READ(1,*) ((TES(I,J),J=1,NOBS),I=1,NOBS)
  27. ELSEIF(LINE.EQ.'EMP') THEN
  28. DO I=1,NOBS
  29. READ(1,*) CODES(I),EMPL(I),EMPG(I),PROD(I)
  30. ENDDO
  31. ELSEIF(LINE.EQ.'EMP-PROP') THEN
  32. READ(1,*) EMPLTOT,EMPGTOT
  33. DO I=1,NOBS
  34. READ(1,*) CODES(I),EMPL(I),EMPG(I),PROD(I)
  35. EMPL(I)=EMPLTOT*EMPL(I)/100.D0
  36. EMPG(I)=EMPGTOT*EMPG(I)/100.D0
  37. ENDDO
  38. ELSEIF(LINE.EQ.'DELTA') THEN
  39. READ(1,*) DELTA
  40. ELSEIF(LINE.EQ.'LABELS') THEN
  41. DO I=1,NOBS
  42. READ(1,'(A40)') LABELS(I)
  43. ENDDO
  44. ELSEIF(LINE.EQ.'METHOD') THEN
  45. READ(1,*) METHOD
  46. ELSEIF(LINE.EQ.'SORTING')THEN
  47. READ(1,*) SORT
  48. ELSEIF(LINE.EQ.'NAME') THEN
  49. READ(1,*) REGIONAME
  50. ELSEIF(LINE.EQ.'DEBUG')THEN
  51. READ(1,*) DEBUG
  52. ELSEIF(LINE.EQ.'END') THEN
  53. GOTO 100
  54. ENDIF
  55. GOTO 1
  56. 100 CONTINUE
  57. CLOSE(1)
  58. IF(DEBUG.EQ.1) THEN
  59. WRITE(FMT,'("("I0,"F12.3)")') NOBS
  60. PRINT*,'NOBS=',NOBS
  61. PRINT*,'CODES: ',(CODES(I),I=1,NOBS)
  62. PRINT*, 'EMPL'
  63. WRITE(6,FMT),(EMPL(I),I=1,NOBS)
  64. PRINT*,'EMPG'
  65. WRITE(6,FMT),(EMPG(I),I=1,NOBS)
  66. WRITE(FMT,'("("I0,"F9.3)")') NOBS
  67. PRINT*,'TES'
  68. DO I=1,NOBS
  69. WRITE(*,FMT),(TES(I,J),J=1,NOBS)
  70. ENDDO
  71. PRINT*,'PROD'
  72. WRITE(6,FMT),(PROD(I),I=1,NOBS)
  73. ENDIF
  74. RETURN
  75. ENDSUBROUTINE