*"表題 時間平均 GTOOL3(GPTAVG)
*
*"履歴 90/09/15 沼口  敦
*
*
*********************************************************************
*"         << 時間平均への足し込み >>
*********************************************************************
      SUBROUTINE GPTAVG
     I         ( HHEAD , GDATA ,
     I           HEDIT , HETTL ,
     M           HHEADW, WDATA ,
     O           HHEADO, GDATAO )
*
      CHARACTER  HHEAD  ( * )*(*)        !" ヘッダー(入力)
      REAL       GDATA  ( * )            !" データ(入力)
      CHARACTER  HEDIT       *(*)        !" 編集略記号
      CHARACTER  HETTL       *(*)        !" 編集タイトル
      CHARACTER  HHEADW ( * )*(*)        !" ヘッダー(ワーク)
      REAL       WDATA  ( * )            !" ウェイトカウンター
      CHARACTER  HHEADO ( * )*(*)        !" ヘッダー(出力)
      REAL       GDATAO ( * )            !" データ(出力)
*
#ifdef SYS_IBMS
      INCLUDE    (GZSIZE)                !" NCC, NDC
#else
#include         "gzsize.F"              !" NCC, NDC
#endif
      CHARACTER  HUTIM       *(NCC)
      CHARACTER  HTIME       *(NCC)
      CHARACTER  HETTLD      *(NCC)
      CHARACTER  HRSMRK      *(NCC)
      CHARACTER  HITEM       *(NCC)
*
      DATA       HRSMRK / '%%RESET:GPTAVG%%' /
      SAVE       HRSMRK
*
*"         < 1. 大きさの取得 >
*
      CALL GUSMIS ( HHEAD )
*
      CALL GUQSIZ
     I         ( HHEAD ,
     O           IXSTR , IXEND , IXDIM ,
     O           IYSTR , IYEND , IYDIM ,
     O           IZSTR , IZEND , IZDIM  )
*
      CALL GUSZCK ( HHEADW, IXDIM*IYDIM*IZDIM )
      CALL GUSZCK ( HHEADO, IXDIM*IYDIM*IZDIM )
*
*"         < 2. 初期設定 >
*
      CALL GHCGET ( HHEADO, 'ITEM', HITEM )
      IF ( HITEM .EQ. HRSMRK ) THEN
         CALL GUVINT( GDATAO, WDATA, IXDIM*IYDIM*IZDIM )
*
         CALL GHCOPY ( HHEAD, HHEADO )
*
         CALL GUQTIM ( HHEAD , RT    , HUTIM  )
         NHU = LENC( HUTIM )
         CALL CHVAL  ( 'D'   , RT    , HTIME  )
         NHT = LENC( HTIME )
         HETTLD = HTIME(1:NHT)//HUTIM(1:NHU)//'-'
*
         IF      ( HEDIT .EQ. ' ' ) THEN
            CALL GHEADD ( HHEADO, 'TM' , HETTLD )
         ELSE IF ( HEDIT .NE. 'NUL' ) THEN
            CALL GHEADD ( HHEADO, HEDIT, HETTL  )
         ENDIF
      ENDIF
*
*"         < 3. データを入れる >
*
      CALL GHPGET( HHEAD, 'TDUR', ITDUR  )
*
      CALL  GUVDIN
     M    ( GDATAO, WDATA ,
     I      IXDIM*IYDIM*IZDIM, 1   ,
     I      GDATA , REAL(ITDUR)     )
*
      CALL GHPGET( HHEAD , 'TIME' , ITIME )
      CALL GHPSET( HHEADO, 'TIME' , ITIME )
      CALL GHCGET( HHEAD , 'DATE' , HTIME )
      CALL GHCSET( HHEADO, 'DATE' , HTIME )
*
      RETURN
*====================================================================
*"         << 時間平均のリセット >>
*====================================================================
      ENTRY       GPTAVR
     O          ( HHEADO )
*
      CALL GHCSET( HHEADO, 'ITEM' , HRSMRK )
*
      RETURN
      END
*********************************************************************
*"         << 時間平均の算出 >>
*********************************************************************
      SUBROUTINE GPTAVO
     I         ( HHEADW, WDATA  ,
     M           HHEADO, GDATAO  )
*
      CHARACTER  HHEADW ( * )*(*)        !" ヘッダー(ワーク)
      REAL       WDATA  ( * )            !" ウェイトカウンター
      CHARACTER  HHEADO ( * )*(*)        !" ヘッダー(出力)
      REAL       GDATAO ( * )            !" データ(出力)
*
*"         < 1. 大きさの取得 >
*
      CALL GUSMIS ( HHEADO )
*
      CALL GUQSIZ
     I         ( HHEADO,
     O           IXSTR , IXEND , IXDIM ,
     O           IYSTR , IYEND , IYDIM ,
     O           IZSTR , IZEND , IZDIM  )
*
*"         < 2. 平均算出 >
*
      CALL GUVOUT
     M     ( GDATAO,
     I       WDATA , IXDIM*IYDIM*IZDIM )
*
*"         < 3. ヘッダー書き換え >
*
      TDUR = RMAX( WDATA , IXDIM*IYDIM*IZDIM, 1 )
      CALL GHPSET( HHEADO, 'TDUR', INT(TDUR)  )
*
      RETURN
      END
