53 CHARACTER(LEN=*),
INTENT(IN) :: FILENAME
54 INTEGER,
INTENT(OUT) :: FILE_ID
56 CHARACTER(LEN=MAXLENFILE) :: INDEX_FILENAME
57 INTEGER :: FILENAME_SIZE,IERR
59 CALL get_free_id(file_id)
63 index_filename=filename
64 filename_size=len_trim(index_filename)
65 index_filename(filename_size-5:filename_size) =
'INDEX ' 67 INQUIRE(file=index_filename,opened=isopen)
69 INQUIRE(file=index_filename,number=file_id)
71 OPEN(unit=file_id,file=trim(index_filename),action=
'READWRITE' 72 & ,form=
'UNFORMATTED', access=
'STREAM',iostat=ierr)
75 & trim(index_filename)//
': '//
76 &
'OPEN_INDEX_FILE:OPEN' 85 &(idx_id,openmode,mesh_number,offset_begin,offset_end)
106 INTEGER,
INTENT(IN) :: IDX_ID
107 CHARACTER(LEN=9),
INTENT(IN) :: OPENMODE
108 INTEGER,
INTENT(IN) :: MESH_NUMBER
109 INTEGER(KIND=K8),
INTENT(OUT) :: OFFSET_BEGIN
110 INTEGER(KIND=K8),
INTENT(OUT) :: OFFSET_END
112 INTEGER(KIND=K8) :: POS
119 IF(openmode(1:5)==
'WRITE')
THEN 120 IF(mesh_number==1)
THEN 123 pos=(mesh_number-2)*8*2+1
124 READ(idx_id,pos=pos)offset_begin,offset_end
125 offset_begin=offset_end
128 ELSE IF(openmode(1:4)==
'READ')
THEN 129 pos=(mesh_number-1)*8*2+1
130 READ(idx_id,pos=pos)offset_begin,offset_end
137 &(idx_id,mesh_number,offset_begin,offset_end)
155 INTEGER,
INTENT(IN) :: IDX_ID
156 INTEGER,
INTENT(IN) :: MESH_NUMBER
157 INTEGER(KIND=K8),
INTENT(IN) :: OFFSET_BEGIN
158 INTEGER(KIND=K8),
INTENT(IN) :: OFFSET_END
160 INTEGER(KIND=K8) :: POS
161 pos=(mesh_number-1)*8*2+1
162 WRITE(unit=idx_id,pos=pos)offset_begin,offset_end
168 &(idx_id,openmode,mesh_number,offset_begin,offset_end)
189 INTEGER,
INTENT(IN) :: IDX_ID
190 CHARACTER(LEN=9),
INTENT(IN) :: OPENMODE
191 INTEGER,
INTENT(IN) :: MESH_NUMBER
192 INTEGER,
INTENT(OUT) :: OFFSET_BEGIN
193 INTEGER,
INTENT(OUT) :: OFFSET_END
195 INTEGER(KIND=K8) :: POS
202 IF(openmode(1:5)==
'WRITE')
THEN 203 IF(mesh_number==1)
THEN 206 pos=(mesh_number-2)*4*2+1
207 READ(idx_id,pos=pos)offset_begin,offset_end
208 offset_begin=offset_end
211 ELSE IF(openmode(1:4)==
'READ')
THEN 212 pos=(mesh_number-1)*4*2+1
213 READ(idx_id,pos=pos)offset_begin,offset_end
220 &(idx_id,mesh_number,offset_begin,offset_end)
238 INTEGER,
INTENT(IN) :: IDX_ID
239 INTEGER,
INTENT(IN) :: MESH_NUMBER
240 INTEGER,
INTENT(IN) :: OFFSET_BEGIN
241 INTEGER,
INTENT(IN) :: OFFSET_END
243 INTEGER(KIND=K8) :: POS
244 pos=(mesh_number-1)*4*2+1
245 WRITE(unit=idx_id,pos=pos)offset_begin,offset_end
YOANN AUDOUIN 10/05/2018 Initial version
subroutine read_index32(IDX_ID, OPENMODE, MESH_NUMBER, OFFSET_BEGIN, OFFSET_END)
subroutine read_index64(IDX_ID, OPENMODE, MESH_NUMBER, OFFSET_BEGIN, OFFSET_END)
subroutine write_index32(IDX_ID, MESH_NUMBER, OFFSET_BEGIN, OFFSET_END)
character(len=200) error_message
subroutine write_index64(IDX_ID, MESH_NUMBER, OFFSET_BEGIN, OFFSET_END)
subroutine open_index(FILENAME, FILE_ID)