diff --git a/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 b/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 index fd61b55334a27bbacf204e6573a567eb5d979735..cc67f8565f93815f7847fafcb1345e7191bc3545 100644 --- a/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 +++ b/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 @@ -99,7 +99,7 @@ program LFI2CDF !Treat several LFI files and merge into 1 NC file !Determine first level (eg needed to find suffix of the variable name) - read( hinfile(len(hinfile)-6:len(hinfile)-4) , "(I3)" ) first_level + read( hinfile(len(hinfile)-2:len(hinfile)) , "(I3)" ) first_level nb_levels = options(OPTMERGE)%ivalue current_level = first_level last_level = first_level + nb_levels - 1 @@ -134,7 +134,7 @@ program LFI2CDF !Treat several NC files and merge into 1 NC file !Determine first level (eg needed to find suffix of the variable name) - read( hinfile(len(hinfile)-5:len(hinfile)-3) , "(I3)" ) first_level + read( hinfile(len(hinfile)-2:len(hinfile)) , "(I3)" ) first_level nb_levels = options(OPTMERGE)%ivalue current_level = first_level last_level = first_level + nb_levels - 1 diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_options.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_options.f90 index 06105bee02cfc61cfdfea667477ce93f3c5d724b..56fc9afce37ee11100860cc3ee7a8b601e16a7e2 100644 --- a/LIBTOOLS/tools/lfi2cdf/src/mode_options.f90 +++ b/LIBTOOLS/tools/lfi2cdf/src/mode_options.f90 @@ -82,10 +82,13 @@ subroutine read_commandline(options,hinfile,houtfile,runmode) houtfile = options(OPTOUTPUT)%cvalue + call remove_suffix(hinfile) + call remove_suffix(houtfile) + !Remove level in the filename if merging LFI splitted files and output name not set by option if (.NOT.options(OPTOUTPUT)%set) then if (options(OPTMERGE)%set) then - houtfile=hinfile(1:len(hinfile)-9) + houtfile=hinfile(1:len(hinfile)-5) end if end if @@ -260,6 +263,31 @@ subroutine check_options(options,infile,runmode) end subroutine check_options + +subroutine remove_suffix(hfile) +character(len=:),allocatable,intent(inout) :: hfile + +integer :: idx1, idx2 +character(len=:),allocatable :: yfile + +idx1 = index(hfile,'.lfi',back=.true.) +idx2 = index(hfile,'.nc', back=.true.) + +if (idx1>0) then + yfile=hfile(1:idx1-1) +else if (idx2>0) then + yfile=hfile(1:idx2-1) +else + yfile=trim(hfile) +endif + +deallocate(hfile) +hfile = trim(yfile) +deallocate(yfile) + +end subroutine remove_suffix + + subroutine help() implicit none diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 index 7a5ec9a237b444abe9da467d51ea352ad5f37c5e..49b9fd935620c1d2cb1948f8858bcf27b4889679 100644 --- a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 +++ b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 @@ -1291,7 +1291,7 @@ stop ! infiles%nbfiles = infiles%nbfiles + 1 idx = infiles%nbfiles - CALL IO_FILE_ADD2LIST(INFILES%TFILES(idx)%TFILE,HINFILE(1:LEN_TRIM(HINFILE)-4),'UNKNOWN','READ', & + CALL IO_FILE_ADD2LIST(INFILES%TFILES(idx)%TFILE,HINFILE,'UNKNOWN','READ', & HFORMAT='LFI',KLFIVERB=0) CALL IO_FILE_OPEN_ll(INFILES%TFILES(idx)%TFILE) infiles%files(idx)%lun_id = INFILES%TFILES(idx)%TFILE%NLFIFLU @@ -1362,7 +1362,7 @@ stop idx = outfiles%nbfiles CALL IO_FILE_ADD2LIST(OUTFILES%TFILES(idx)%TFILE,HOUTFILE,'UNKNOWN','WRITE', & - HFORMAT='NETCDF4') + HFORMAT='NETCDF4',OOLD=.TRUE.) CALL IO_FILE_OPEN_ll(OUTFILES%TFILES(idx)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG) outfiles%files(idx)%lun_id = OUTFILES%TFILES(idx)%TFILE%NNCID outfiles%files(idx)%format = NETCDF_FORMAT @@ -1387,8 +1387,8 @@ stop ! outfiles%nbfiles = outfiles%nbfiles + 1 idx = outfiles%nbfiles - CALL IO_FILE_ADD2LIST(OUTFILES%TFILES(idx)%TFILE,TRIM(houtfile)//'.lfi','UNKNOWN','WRITE', & - HFORMAT='LFI',KLFIVERB=0) + CALL IO_FILE_ADD2LIST(OUTFILES%TFILES(idx)%TFILE,houtfile,'UNKNOWN','WRITE', & + HFORMAT='LFI',KLFIVERB=0,OOLD=.TRUE.) LIOCDF4 = .FALSE. !Necessary to open correctly the LFI file CALL IO_FILE_OPEN_ll(OUTFILES%TFILES(idx)%TFILE) LIOCDF4 = .TRUE. @@ -1420,7 +1420,7 @@ stop ilu = infiles%files(1)%lun_id !We assume only 1 infile write(suffix,'(I3.3)') current_level - filename=hinfile(1:len(hinfile)-7)//suffix//'.lfi' + filename=hinfile(1:len(hinfile)-4)//suffix CALL LFIOUV(iresp,ilu,ltrue,filename,'OLD',lfalse,lfalse,iverb,inap,nbvar) infiles%files(1)%opened = .TRUE. @@ -1440,7 +1440,7 @@ stop ALLOCATE(character(len=len(hinfile)) :: filename) write(suffix,'(I3.3)') current_level - filename=hinfile(1:len(hinfile)-6)//suffix//'.nc' + filename=hinfile(1:len(hinfile)-4)//suffix status = NF90_OPEN(filename,NF90_NOWRITE,infiles%files(1)%lun_id) IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__) infiles%files(1)%opened = .TRUE. @@ -1472,7 +1472,7 @@ stop IF (.NOT.tpreclist(ji)%tbw) CYCLE outfiles%files(idx)%var_id = ji - filename = trim(houtfile)//'.'//trim(tpreclist(ji)%name)//'.nc' + filename = trim(houtfile)//'.'//trim(tpreclist(ji)%name) CALL IO_FILE_ADD2LIST(OUTFILES%TFILES(idx)%TFILE,filename,'UNKNOWN','WRITE', & HFORMAT='NETCDF4') CALL IO_FILE_OPEN_ll(OUTFILES%TFILES(idx)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG)