copyright (C) 2001 MSC-RPN COMM %%%MC2%%% ***s/r *subroutine casfc,1 implicit none * *author M.Desgagne November 2001 * *revision * integer fnom,fstouv,fstinf,fstinl,fstprm,fstluk, $ fstecr,fstfrm,fclos,fstopl,fstsel,fstlis,longueur external fnom,fstouv,fstinf,fstinl,fstprm,fstluk, $ fstecr,fstfrm,fclos,fstopl,fstsel,fstlis,longueur * character*1 typ_S, grd_S character*2 var_S, nomvar, nvar character*8 lab_S, lste_S(2) character*16 ladate integer iun1,iun2 parameter (iun1 = 51, iun2 = 52) integer dte, det, ipas, p1, p2, p3, g1, g2, g3, g4, bit, $ dty, swa, lng, dlf, ubc, ex1, ex2, ex3, ip3_ts,ip3 integer i,j,ni,nj,nk,err,p1_4,p1_5,key,key1,key2,ni1,nj1 integer, parameter :: nmax=4000 real, dimension (:), allocatable :: w1 integer nlis,lislon,header parameter (nlis = 1024) integer liste (nlis),fstinl,datev data header /4/ character*4 listevar(4) data listevar /'I9','I7','I0','TM'/ * *-------------------------------------------------------------------- * call convip ( p1_4, 4., 3, 1, lab_S, .false. ) call convip ( p1_5, 5., 3, 1, lab_S, .false. ) * read(5,'(a)') ladate call datp2f
(datev,ladate) * if (fnom(iun2,'sfc_from_previous_run','RND+OLD',0).ge.0) then if (fstouv(iun2,'RND').lt.0) then write (6,8001) 'sfc_from_previous_run' stop endif else write (6,8000) 'sfc_from_previous_run' stop endif * err = fnom(iun1,'sfc_for_newrun','RND',0) err = fstouv(iun1,'RND') * do j=1,4 nomvar = listevar(j) err = fstinl (iun2,ni,nj,nk,datev,' ',-1,-1,-1,' ',nomvar, $ liste,lislon,nlis) if (lislon.gt.0) then allocate (w1(ni*nj+header)) do i=1,lislon err = fstluk( w1, liste(i), ni,nj,nk) print*, 'ello ',err err = fstprm( liste(i), dte, det, ipas, ni, nj, nk, bit, $ dty, p1, p2, p3, typ_S, var_S, lab_S, grd_S, $ g1, g2, g3, g4, swa, lng,dlf,ubc,ex1,ex2,ex3) print*, 'ello2 ',err err = fstecr( w1, w1, -bit, iun1, dte, det, ipas, ni, nj, $ 1, p1, p2, p3, typ_S, nomvar, lab_S, $ grd_S, g1, g2, g3, g4, dty, .true.) print*, 'ello3 ',err end do deallocate (w1) endif end do * key = fstinf (iun2,ni,nj,nk,datev,' ',p1_4,-1,-1,' ','SD') if (key.ge.0) then allocate (w1(ni*nj+header)) err = fstluk( w1, key, ni,nj,nk) err = fstprm( key, dte, det, ipas, ni, nj, nk, bit, $ dty, p1, p2, p3, typ_S, var_S, lab_S, grd_S, $ g1, g2, g3, g4, swa, lng,dlf,ubc,ex1,ex2,ex3) err = fstecr( w1, w1, -bit, iun1, dte, det, ipas, ni, nj, $ 1, 0, p2, p3, typ_S, 'SD', lab_S, $ grd_S, g1, g2, g3, g4, dty, .true.) deallocate (w1) endif * key = fstinf (iun2,ni,nj,nk,datev,' ',p1_5,-1,-1,' ','AL') if (key.ge.0) then allocate (w1(ni*nj+header)) err = fstluk( w1, key, ni,nj,nk) err = fstprm( key, dte, det, ipas, ni, nj, nk, bit, $ dty, p1, p2, p3, typ_S, var_S, lab_S, grd_S, $ g1, g2, g3, g4, swa, lng,dlf,ubc,ex1,ex2,ex3) err = fstecr( w1, w1, -bit, iun1, dte, det, ipas, ni, nj, $ 1, 0, p2, p3, typ_S, 'AL', lab_S, $ grd_S, g1, g2, g3, g4, dty, .true.) deallocate (w1) endif * key = fstinf (iun2,ni,nj,nk,datev,' ',-1,-1,-1,' ','GL') if (key.ge.0) then allocate (w1(ni*nj+header)) err = fstluk( w1, key, ni,nj,nk) err = fstprm( key, dte, det, ipas, ni, nj, nk, bit, $ dty, p1, p2, p3, typ_S, var_S, lab_S, grd_S, $ g1, g2, g3, g4, swa, lng,dlf,ubc,ex1,ex2,ex3) err = fstecr( w1, w1, -bit, iun1, dte, det, ipas, ni, nj, $ 1, 0, p2, p3, typ_S, 'LG', lab_S, $ grd_S, g1, g2, g3, g4, dty, .true.) deallocate (w1) endif * key1 = fstinf (iun2,ni1,nj,nk,-1,' ',g1,g2,g3,' ','>>') key2 = fstinf (iun2,ni,nj1,nk,-1,' ',g1,g2,g3,' ','^^') if ((key1.ge.0).and.(key2.ge.0)) then allocate (w1(max(ni1,nj1)+header)) err = fstprm( key1, dte, det, ipas, ni, nj, nk, bit, $ dty, p1, p2, p3, typ_S, var_S, lab_S, grd_S, $ g1, g2, g3, g4, swa, lng,dlf,ubc,ex1,ex2,ex3) err = fstluk( w1, key1, ni,nj,nk) err = fstecr( w1, w1, -bit, iun1, dte, det, ipas, ni1, 1, $ 1, p1, p2, p3, typ_S, '>>', lab_S, $ grd_S, g1, g2, g3, g4, dty, .true.) err = fstluk( w1, key2, ni,nj,nk) err = fstecr( w1, w1, -bit, iun1, dte, det, ipas, ni, nj1, $ 1, p1, p2, p3, typ_S, '^^', lab_S, $ grd_S, g1, g2, g3, g4, dty, .true.) deallocate (w1) endif * err = fstfrm(iun1) err = fclos(iun1) err = fstfrm(iun2) err = fclos(iun2) * 8000 format (/' Unable to fnom: ',a/) 8001 format (/' Unable to fstouv: ',a/) * *--------------------------------------------------------------------- * return end ***s/r datp2f
subroutine datp2f (fstdate,mc2date) 12 implicit none * integer fstdate character* (*) mc2date ** integer yy,mo,dd,hh,mm,ss,dat2,dat3,newdate,err character*4 cyy character*2 cmo,cdd,chh,cmm,css *------------------------------------------------------------------- cyy=mc2date(1:4) cmo=mc2date(5:6) cdd=mc2date(7:8) chh=mc2date(10:11) cmm=mc2date(12:13) css=mc2date(14:15) * read(cyy,'(I4)') yy read(cmo,'(I2)') mo read(cdd,'(I2)') dd read(chh,'(I2)') hh read(cmm,'(I2)') mm read(css,'(I2)') ss * dat2= yy*10000 + mo*100 + dd dat3= hh*1000000 + mm*10000 + ss*100 err = newdate(fstdate,dat2,dat3,3) *------------------------------------------------------------------- return end