*"表題 データ同士の差 GTOOL3(GPFSUB)
*
*"履歴 90/08/19 沼口  敦
*
*
*********************************************************************
*"         << データ同士の差 >>
*********************************************************************
      SUBROUTINE GPFSUB
     I         ( HHEAD1, GDATA1,
     I           HHEAD2, GDATA2,
     I           HEDIT , HETTL ,
     O           HHEADO, GDATAO  )
*
      CHARACTER  HHEAD1 ( * )*(*)        !" ヘッダー(入力1)
      REAL       GDATA1 ( * )            !" データ(入力1)
      CHARACTER  HHEAD2 ( * )*(*)        !" ヘッダー(入力2)
      REAL       GDATA2 ( * )            !" データ(入力2)
      CHARACTER  HEDIT       *(*)        !" 編集略記号
      CHARACTER  HETTL       *(*)        !" 編集タイトル
      CHARACTER  HHEADO ( * )*(*)        !" ヘッダー(出力)
      REAL       GDATAO ( * )            !" データ(出力)
*
*"         < 1. 軸のチェック >
*
      CALL GUSMIS ( HHEAD1 )
*
      CALL GUAXCK
     I         ( HHEAD1, HHEAD2,
     O           ICHK            )
      IF ( ICHK .NE. 0 ) THEN
         CALL MSGDMP('W', 'GPFSUB', 'AXES DO NOT AGREE.' )
      ENDIF
*
*"         < 2. 大きさの取得 >
*
      CALL GUCSIZ
     I         ( HHEAD1, HHEAD2,
     O           IXSTR1, IXDIM1, IXSTR2, IXDIM2,
     O           IYSTR1, IYDIM1, IYSTR2, IYDIM2,
     O           IZSTR1, IZDIM1, IZSTR2, IZDIM2,
     O           IXSTRC, IXENDC, IXDIMC,
     O           IYSTRC, IYENDC, IYDIMC,
     O           IZSTRC, IZENDC, IZDIMC          )
*
      CALL GUSZCK ( HHEADO, IXDIM1*IYDIM1*IZDIM1 )
*
*"         < 3. データ演算 >
*
      CALL GHPGET ( HHEAD1, 'MISS', VMISS )
      CALL RSET   ( GDATAO, IXDIM1*IYDIM1*IZDIM1, 1, VMISS )
*
      DO 3100 IZ = IZSTRC, IZENDC
         DO 3110 IY = IYSTRC, IYENDC
            CALL VRSUB
     I     ( GDATA1( IXDIM1*IYDIM1*(IZ-IZSTR1)
     I                    + IXDIM1*(IY-IYSTR1) + IXSTRC-IXSTR1+1 ),
     I       GDATA2( IXDIM2*IYDIM2*(IZ-IZSTR2)
     I                    + IXDIM2*(IY-IYSTR2) + IXSTRC-IXSTR2+1 ),
     O       GDATAO( IXDIM1*IYDIM1*(IZ-IZSTR1)
     O                    + IXDIM1*(IY-IYSTR1) + IXSTRC-IXSTR1+1 ),
     I       IXDIMC, 1  , 1  , 1                                   )
 3110    CONTINUE
 3100 CONTINUE
*
*"         < 4. ヘッダー変更 >
*
      CALL GHCOPY ( HHEAD1, HHEADO )
*
      IF (  ( HEDIT .NE. ' ' ).AND.( HEDIT .NE.'NUL' )  ) THEN
         CALL GHEADD ( HHEADO, HEDIT, HETTL )
      ENDIF
*
      RETURN
      END
*********************************************************************
*"         << データ同士の差 >>
*********************************************************************
      SUBROUTINE GMFSUB
     M         ( HHEAD1, GDATA1,
     I           HHEAD2, GDATA2,
     I           HEDIT , HETTL  )
*
      CHARACTER  HHEAD1 ( * )*(*)        !" ヘッダー(入力1)
      REAL       GDATA1 ( * )            !" データ(入力1)
      CHARACTER  HHEAD2 ( * )*(*)        !" ヘッダー(入力2)
      REAL       GDATA2 ( * )            !" データ(入力2)
      CHARACTER  HEDIT       *(*)        !" 編集略記号
      CHARACTER  HETTL       *(*)        !" 編集タイトル
*
      COMMON     /GMWORK/ GDATAW
      REAL       GDATAW ( 1 )            !" データ(ワーク)
#ifdef SYS_IBMS
      INCLUDE    (GZSIZE)                !" NCC, NDC
#else
#include         "gzsize.F"              !" NCC, NDC
#endif
      CHARACTER  HHEADW ( NDC )*(NCC)    !" ヘッダー(ワーク)
*
      CALL       GMCSIZ ( HHEADW )
      CALL       GPFSUB
     I         ( HHEAD1, GDATA1,
     I           HHEAD2, GDATA2,
     I           HEDIT , HETTL ,
     O           HHEADW, GDATAW  )
*
      CALL       GPFSET
     I         ( HHEADW, GDATAW,
     I           ' '   , ' '   ,
     O           HHEAD1, GDATA1  )
*
      RETURN
      END
