PageRenderTime 30ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/OPENFVS_DIR_RESTRUCT_TEST_BRANCH/src/base/filopn.f

http://open-fvs.googlecode.com/
FORTRAN Legacy | 237 lines | 171 code | 17 blank | 49 comment | 16 complexity | 9b8441bd1b7a1d62283a1c1b38d7436d MD5 | raw file
  1. SUBROUTINE FILOPN
  2. IMPLICIT NONE
  3. C--------
  4. C **FILOPN--BASE DATE OF LAST REVISION: 01/22/2012
  5. C----------
  6. C
  7. C THIS ROUTINE OPENS THE FILES FOR THE PROGNOSIS MODEL.
  8. C TO PROMPT FOR FILE NAMES, SET LPT TRUE,
  9. C IF PROMPTS ARE NOT WANTED, SET LPT FALSE.
  10. C
  11. COMMONS
  12. C
  13. C
  14. INCLUDE 'PRGPRM.F77'
  15. C
  16. C
  17. INCLUDE 'CONTRL.F77'
  18. C
  19. C
  20. INCLUDE 'ECON.F77'
  21. C
  22. C
  23. COMMONS
  24. C
  25. INTEGER LENKEY,KODE,I,LENNAM,ISTLNB
  26. CHARACTER*250 KEYFIL
  27. CHARACTER*250 CNAME
  28. CHARACTER VVER*7,REV*10
  29. LOGICAL LOPEN
  30. LOGICAL LPT
  31. DATA LPT/.TRUE./
  32. C----------
  33. C KEYWORD and OUTPUT FILES.
  34. C----------
  35. KWDFIL=' '
  36. call getkeywrd(KWDFIL,len(KWDFIL))
  37. KWDFIL=ADJUSTL(TRIM(KWDFIL))
  38. if (KWDFIL.ne.' ') then
  39. inquire(unit=iread,opened=LOPEN)
  40. if (LOPEN) close(unit=iread)
  41. call getrestartcode (i)
  42. if (i.eq.0) open(unit=IREAD,file=KWDFIL,status="old",err=101)
  43. lenkey=index(KWDFIL,".k")
  44. if (lenkey == 0) lenkey=index(KWDFIL,".K")
  45. if (lenkey == 0) lenkey=len_trim(KWDFIL)
  46. cname = KWDFIL(1:lenkey-1)//".out"
  47. inquire(unit=JOSTND,opened=LOPEN)
  48. if (LOPEN) close(unit=JOSTND)
  49. if (i.eq.0) then
  50. open(unit=JOSTND,file=trim(cname),status="replace",
  51. - err=102)
  52. else
  53. open(unit=JOSTND,file=trim(cname),status="unknown",
  54. - position="append",err=102)
  55. endif
  56. CALL KEYFN(KWDFIL)
  57. CALL DBSVKFN(KWDFIL)
  58. c open the scratch file (should be removed sometime)
  59. open(unit=JOTREE,status="scratch",form="unformatted")
  60. return
  61. 101 continue
  62. print *,"File open error on: ",trim(KWDFIL)
  63. call setfvsRtnCode(1)
  64. return
  65. 102 continue
  66. print *,"File open error on: ",trim(cname)
  67. call setfvsRtnCode(1)
  68. return
  69. endif
  70. IF (LPT) THEN
  71. C----------
  72. C GET VARIANT NAME AND REVISION DATE.
  73. C NOTE: CR VARIANT WILL ALWAYS BE SM (SOUTHWEST MIXED CONIFERS
  74. C (DEFAULT)) AT THIS POINT BECAUSE KEYWORDS HAVE NOT BEEN READ.
  75. C----------
  76. CALL VARVER (VVER)
  77. CALL REVISE (VVER,REV)
  78. IF(VVER(:2).EQ.'SM') THEN
  79. WRITE(*,1) REV
  80. 1 FORMAT(/T20,'CR FVS VARIANT -- RV:',A10/)
  81. ELSE
  82. WRITE(*,2) VVER(:2),REV
  83. 2 FORMAT(/T20,A2,' FVS VARIANT -- RV:',A10/)
  84. ENDIF
  85. C
  86. WRITE (*,'('' ENTER KEYWORD FILE NAME ('',I2.2,
  87. > ''): '')') IREAD
  88. C
  89. ENDIF
  90. C
  91. READ (*,'(A)',END=100) KWDFIL
  92. CALL UNBLNK(KWDFIL,LENKEY)
  93. IF (LENKEY.LE.0) THEN
  94. WRITE (*,'('' A KEYWORD FILE NAME IS REQUIRED'')')
  95. CALL RCDSET (3,.FALSE.)
  96. RETURN
  97. ENDIF
  98. CALL MYOPEN (IREAD,KWDFIL,3,150,0,1,1,0,KODE)
  99. IF (KODE.GT.0) THEN
  100. WRITE (*,'('' OPEN FAILED FOR '',A)')
  101. > KWDFIL(1:LENKEY)
  102. WRITE (*,'('' A KEYWORD FILE IS REQUIRED'')')
  103. CALL RCDSET (3,.FALSE.)
  104. RETURN
  105. ENDIF
  106. C----------
  107. C DBS EXTENSION NEEDS THIS FILENAME WITH EXTENSION FOR CASES TABLE
  108. C----------
  109. CALL DBSVKFN(KWDFIL)
  110. C----------
  111. C MAIN OUTPUT FILE NEEDS KEYFILE NAME WITH EXTENSION. KEYFN ENTRY
  112. C IS IN KEYRDR ROUTINE
  113. C----------
  114. CALL KEYFN(KWDFIL)
  115. C ----------
  116. C FIND THE LAST PERIOD IN THE FILENAME AND SET THE REST OF THE
  117. C KEYWORD FILE NAME TO BLANKS
  118. C----------
  119. DO I= LENKEY, 1, -1
  120. IF (KWDFIL(I:I) .EQ. '.') THEN
  121. KEYFIL=KWDFIL
  122. KWDFIL(I:)=' '
  123. GO TO 10
  124. END IF
  125. END DO
  126. 10 CONTINUE
  127. C----------
  128. C TREE DATA FILE.
  129. C----------
  130. IF (LPT) THEN
  131. WRITE (*,'('' ENTER TREE DATA FILE NAME ('',I2.2,
  132. > ''): '')') ISTDAT
  133. ENDIF
  134. READ (*,'(A)',END=100) CNAME
  135. CALL UNBLNK(CNAME,LENNAM)
  136. IF (LENNAM.GT.0) THEN
  137. CALL MYOPEN (ISTDAT,CNAME,1,150,0,1,1,0,KODE)
  138. IF (KODE.GT.0) WRITE (*,'('' OPEN FAILED FOR '',A)') CNAME
  139. ENDIF
  140. C----------
  141. C PRINT FILE.
  142. C----------
  143. IF (LPT) THEN
  144. WRITE (*,'('' ENTER MAIN OUTPUT FILE NAME ('',I2.2,
  145. > ''): '')') JOSTND
  146. ENDIF
  147. READ (*,'(A)',END=100) CNAME
  148. CALL UNBLNK(CNAME,LENNAM)
  149. IF (LENNAM.LE.0) CNAME=KWDFIL(:ISTLNB(KWDFIL))//'.out'
  150. CALL MYOPEN (JOSTND,CNAME,5,133,0,1,1,1,KODE)
  151. IF (KODE.GT.0) THEN
  152. WRITE (*,'('' OPEN FAILED FOR '',A)') CNAME
  153. WRITE (*,'('' ALL OUTPUT IS SENT TO STANDARD OUT'')')
  154. JOSTND=6
  155. ENDIF
  156. C----------
  157. C TREELIST OUTPUT.
  158. C----------
  159. IF (LPT) THEN
  160. WRITE (*,'('' ENTER TREELIST OUTPUT FILE NAME ('',
  161. > I2.2,''): '')') JOLIST
  162. ENDIF
  163. READ (*,'(A)',END=100) CNAME
  164. CALL UNBLNK(CNAME,LENNAM)
  165. IF (LENNAM.LE.0) CNAME=KWDFIL(:ISTLNB(KWDFIL))//'.trl'
  166. CALL UNBLNK(CNAME,LENNAM)
  167. CALL MYOPEN (JOLIST,CNAME,5,133,0,1,1,1,KODE)
  168. IF (KODE.GT.0) WRITE (*,'('' OPEN FAILED FOR '',A)') CNAME
  169. C----------
  170. C SUMMARY OUTPUT FILE.
  171. C----------
  172. IF (LPT) THEN
  173. WRITE (*,'('' ENTER SUMMARY OUTPUT FILE NAME ('',
  174. > I2.2,''): '')') JOSUM
  175. ENDIF
  176. READ (*,'(A)',END=100) CNAME
  177. CALL UNBLNK(CNAME,LENNAM)
  178. IF (LENNAM.LE.0) CNAME=KWDFIL(:ISTLNB(KWDFIL))//'.sum'
  179. CALL UNBLNK(CNAME,LENNAM)
  180. CALL MYOPEN (JOSUM,CNAME,5,133,0,1,1,0,KODE)
  181. IF (KODE.GT.0) WRITE (*,'('' OPEN FAILED FOR '',A)') CNAME
  182. C----------
  183. C AUXILIARY FILE (CHEAPOII) FILE
  184. C----------
  185. IF (LPT) THEN
  186. WRITE (*,'('' ENTER CHEAPOII/CALBSTAT '',
  187. > ''OUTPUT FILE NAME ('',I2.2,''): '')') JOSUME
  188. ENDIF
  189. READ (*,'(A)',END=100) CNAME
  190. CALL UNBLNK(CNAME,LENNAM)
  191. IF (LENNAM.LE.0) CNAME=KWDFIL(:ISTLNB(KWDFIL))//'.chp'
  192. CALL MYOPEN (JOSUME,CNAME,5,91,0,1,1,0,KODE)
  193. IF (KODE.GT.0) WRITE (*,'('' OPEN FAILED FOR '',A)') CNAME
  194. C----------
  195. C OPEN THE SAMPLE TREE SCRATCH FILE.
  196. C----------
  197. CNAME=' '
  198. CALL MYOPEN (JOTREE,CNAME,4,512, 0,2,1,0,KODE)
  199. IF (KODE.GT.0) WRITE (*,'('' OPEN FAILED FOR '',I4)') JOTREE
  200. 100 CONTINUE
  201. C
  202. RETURN
  203. ENTRY FILClose
  204. CALL DBSCLOSE(.TRUE.,.TRUE.)
  205. inquire(unit=iread,opened=LOPEN)
  206. if (LOPEN) close(unit=iread)
  207. if (JOSTND.ne.6) then
  208. inquire(unit=JOSTND,opened=LOPEN)
  209. if (LOPEN) close(unit=JOSTND)
  210. endif
  211. inquire(unit=ISTDAT,opened=LOPEN)
  212. if (LOPEN) close(unit=ISTDAT)
  213. inquire(unit=JOTREE,opened=LOPEN)
  214. if (LOPEN) close(unit=JOTREE)
  215. inquire(unit=JOSUM,opened=LOPEN)
  216. if (LOPEN) close(unit=JOSUM)
  217. inquire(unit=JOLIST,opened=LOPEN)
  218. if (LOPEN) close(unit=JOLIST)
  219. END