⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gf_unpack1.f

📁 计算线性趋势 回归系数 主要用于气象站点值的线性趋势计算
💻 F
字号:
      subroutine gf_unpack1(cgrib,lcgrib,iofst,ids,idslen,ierr)!$$$  SUBPROGRAM DOCUMENTATION BLOCK!                .      .    .                                       .! SUBPROGRAM:    gf_unpack1 !   PRGMMR: Gilbert         ORG: W/NP11    DATE: 2000-05-26!! ABSTRACT: This subroutine unpacks Section 1 (Identification Section)!   starting at octet 6 of that Section.  !! PROGRAM HISTORY LOG:! 2000-05-26  Gilbert! 2002-01-24  Gilbert  - Changed to dynamically allocate arrays!                        and to pass pointers to those arrays through!                        the argument list.!! USAGE:    CALL gf_unpack1(cgrib,lcgrib,iofst,ids,idslen,ierr)!   INPUT ARGUMENT LIST:!     cgrib    - Character array containing Section 1 of the GRIB2 message!     lcgrib   - Length (in bytes) of GRIB message array cgrib.!     iofst    - Bit offset of the beginning of Section 1.!!   OUTPUT ARGUMENT LIST:      !     iofst    - Bit offset at the end of Section 1, returned.!     ids      - Pointer to integer array containing information read from !                Section 1, the Identification section.!            ids(1)  = Identification of originating Centre!                                 ( see Common Code Table C-1 )!            ids(2)  = Identification of originating Sub-centre!            ids(3)  = GRIB Master Tables Version Number!                                 ( see Code Table 1.0 )!            ids(4)  = GRIB Local Tables Version Number!                                 ( see Code Table 1.1 )!            ids(5)  = Significance of Reference Time (Code Table 1.2)!            ids(6)  = Year ( 4 digits )!            ids(7)  = Month!            ids(8)  = Day!            ids(9)  = Hour!            ids(10)  = Minute!            ids(11)  = Second!            ids(12)  = Production status of processed data!                                 ( see Code Table 1.3 )!            ids(13)  = Type of processed data ( see Code Table 1.4 )!     idslen   - Number of elements in ids().!     ierr     - Error return code.!                0 = no error!                6 = memory allocation error!! REMARKS: !! ATTRIBUTES:!   LANGUAGE: Fortran 90!   MACHINE:  IBM SP!!$$$      character(len=1),intent(in) :: cgrib(lcgrib)      integer,intent(in) :: lcgrib      integer,intent(inout) :: iofst      integer,pointer,dimension(:) :: ids      integer,intent(out) :: ierr,idslen      integer,dimension(:) :: mapid(13)      data mapid /2,2,1,1,1,2,1,1,1,1,1,1,1/      ierr=0      idslen=13      nullify(ids)      call gbyte(cgrib,lensec,iofst,32)        ! Get Length of Section      iofst=iofst+32      iofst=iofst+8     ! skip section number      !      !   Unpack each value into array ids from the      !   the appropriate number of octets, which are specified in      !   corresponding entries in array mapid.      !      istat=0      allocate(ids(idslen),stat=istat)      if (istat.ne.0) then         ierr=6         nullify(ids)         return      endif            do i=1,idslen        nbits=mapid(i)*8        call gbyte(cgrib,ids(i),iofst,nbits)        iofst=iofst+nbits      enddo            return    ! End of Section 1 processing      end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -