/[MITgcm]/MITgcm/eesupp/src/open_copy_data_file.F
ViewVC logotype

Annotation of /MITgcm/eesupp/src/open_copy_data_file.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (hide annotations) (download)
Mon Dec 13 04:24:25 2010 UTC (13 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint64, checkpoint63, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62z, checkpoint62y, checkpoint62x
Changes since 1.2: +19 -15 lines
call S/R NML_CHANGE_SYNTAX instead of NML_SET_TERMINATOR

1 jmc 1.3 C $Header: /u/gcmpack/MITgcm/eesupp/src/open_copy_data_file.F,v 1.2 2009/07/13 21:41:57 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "CPP_EEOPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: OPEN_COPY_DATA_FILE
8     C !INTERFACE:
9     SUBROUTINE OPEN_COPY_DATA_FILE(
10     I data_file, caller_sub,
11     O iUnit,
12     I myThid )
13     C !DESCRIPTION: \bv
14     C *==========================================================*
15     C | SUBROUTINE OPEN_COPY_DATA_FILE
16     C | o Routine to open and copy a data.* file to STDOUT
17     C | and return the open unit in iUnit
18     C *==========================================================*
19     C \ev
20    
21     C !USES:
22     IMPLICIT NONE
23     C === Global variables ===
24     #include "SIZE.h"
25     #include "EEPARAMS.h"
26    
27     C !INPUT/OUTPUT PARAMETERS:
28     C === Routine arguments ===
29 jmc 1.3 C data_file :: parameter file to open and copy
30     C caller_sub :: name of subroutine which is calling this S/R
31     C iUnit :: IO unit of parameter-file copy (already opened)
32     C myThid :: my Thread Id number
33 jmc 1.1 CHARACTER*(*) data_file
34     CHARACTER*(*) caller_sub
35     INTEGER iUnit
36     INTEGER myThid
37    
38 jmc 1.2 C !FUNCTIONS:
39     INTEGER ILNBLNK
40     EXTERNAL ILNBLNK
41    
42 jmc 1.1 C !LOCAL VARIABLES:
43     C === Local variables ===
44 jmc 1.3 C msgBuf :: Informational/error message buffer
45 jmc 1.1 CHARACTER*(MAX_LEN_MBUF) msgBuf
46     CHARACTER*(MAX_LEN_PREC) record
47 jmc 1.2 #if defined (TARGET_BGL) || defined (TARGET_CRAYXT)
48     CHARACTER*(MAX_LEN_FNAM) scratchFile1
49     CHARACTER*(MAX_LEN_FNAM) scratchFile2
50     #endif
51 jmc 1.1 INTEGER errIO,IL
52     LOGICAL exst
53     CEOP
54    
55     _BEGIN_MASTER(myThid)
56    
57     C-- Open the parameter file
58     INQUIRE( FILE=data_file, EXIST=exst )
59     IF (exst) THEN
60     WRITE(msgbuf,'(A,A)')
61     & ' OPEN_COPY_DATA_FILE: opening file ',data_file
62     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
63 jmc 1.3 & SQUEEZE_RIGHT, myThid )
64 jmc 1.1 ELSE
65     WRITE(msgBuf,'(A,A,A)')
66     & 'File ',data_file,' does not exist!'
67 jmc 1.3 CALL PRINT_ERROR( msgBuf, myThid )
68 jmc 1.1 WRITE(msgBuf,'(A,A)') 'S/R CALLED BY ',caller_sub
69 jmc 1.3 CALL PRINT_ERROR( msgBuf, myThid )
70 jmc 1.1 STOP 'ABNORMAL END: S/R OPEN_COPY_DATA_FILE'
71     ENDIF
72    
73     #if defined (TARGET_BGL) || defined (TARGET_CRAYXT)
74 jmc 1.2 WRITE(scratchFile1,'(A,I4.4)') 'scratch1.', myProcId
75     WRITE(scratchFile2,'(A,I4.4)') 'scratch2.', myProcId
76     OPEN(UNIT=scrUnit1, FILE=scratchFile1, STATUS='UNKNOWN')
77     OPEN(UNIT=scrUnit2, FILE=scratchFile2, STATUS='UNKNOWN')
78 jmc 1.1 #else
79     OPEN(UNIT=scrUnit1,STATUS='SCRATCH')
80     OPEN(UNIT=scrUnit2,STATUS='SCRATCH')
81     #endif
82     OPEN(UNIT=modelDataUnit,FILE=data_file,STATUS='OLD',
83     & IOSTAT=errIO)
84     IF ( errIO .LT. 0 ) THEN
85     WRITE(msgBuf,'(A,A)')
86 jmc 1.3 & 'Unable to open parameter file: ',data_file
87     CALL PRINT_ERROR( msgBuf, myThid )
88 jmc 1.1 WRITE(msgBuf,'(A,A)') 'S/R CALLED BY ',caller_sub
89 jmc 1.3 CALL PRINT_ERROR( msgBuf, myThid )
90 jmc 1.1 STOP 'ABNORMAL END: S/R OPEN_COPY_DATA_FILE'
91     ENDIF
92    
93     DO WHILE ( .TRUE. )
94     READ(modelDataUnit,FMT='(A)',END=1001) RECORD
95     IL = MAX(ILNBLNK(RECORD),1)
96     IF ( RECORD(1:1) .NE. commentCharacter ) THEN
97 jmc 1.3 c CALL NML_SET_TERMINATOR( RECORD )
98     CALL NML_CHANGE_SYNTAX( RECORD, data_file, myThid )
99 jmc 1.1 WRITE(UNIT=scrUnit1,FMT='(A)') RECORD(:IL)
100     ENDIF
101     WRITE(UNIT=scrUnit2,FMT='(A)') RECORD(:IL)
102     ENDDO
103     1001 CONTINUE
104     CLOSE(modelDataUnit)
105    
106     C-- Report contents of model parameter file
107     WRITE(msgBuf,'(A)')
108     &'// ======================================================='
109     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
110 jmc 1.3 & SQUEEZE_RIGHT, myThid )
111 jmc 1.1 WRITE(msgBuf,'(A,A,A)') '// Parameter file "',data_file,'"'
112     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
113 jmc 1.3 & SQUEEZE_RIGHT, myThid )
114 jmc 1.1 WRITE(msgBuf,'(A)')
115     &'// ======================================================='
116     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
117 jmc 1.3 & SQUEEZE_RIGHT, myThid )
118 jmc 1.1 iUnit = scrUnit2
119     REWIND(iUnit)
120     DO WHILE ( .TRUE. )
121     READ(UNIT=iUnit,FMT='(A)',END=2001) RECORD
122     IL = MAX(ILNBLNK(RECORD),1)
123     WRITE(msgBuf,'(A,A)') '>',RECORD(:IL)
124     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
125 jmc 1.3 & SQUEEZE_RIGHT, myThid )
126 jmc 1.1 ENDDO
127     2001 CONTINUE
128     CLOSE(iUnit)
129     WRITE(msgBuf,'(A)') ' '
130     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
131 jmc 1.3 & SQUEEZE_RIGHT, myThid )
132 jmc 1.1
133     C-- Return open unit to caller
134     iUnit = scrUnit1
135     REWIND(iUnit)
136    
137     _END_MASTER(myThid)
138    
139     RETURN
140     END

  ViewVC Help
Powered by ViewVC 1.1.22