C XTX       SOURCE    FANDEUR   11/04/12    21:16:22     6938
      SUBROUTINE XTX

      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)

*_______________________________________________________________________
*
*         OPERATEUR XTX : EFFECTUE LA NORME XT.X
*
*   ON RETIRE DU CHPOINT LES MULT. DE LAGRANGE .
*
*   SYNTAXE :  Y = XTX X ;
*              Y = XTX FLO1 CHEL1 Y CHEL2 ;
*                        FLO1 FLO2 FLOTTANT CHEL1 CHEL2 MCHAML
*                                                   OU  CHPOINT
*                        CHEL1 CHEL2 MCHAML OU CHPOINT
*                       EFFECTUE LA NORME DE LA COMBINAISON LINEAIRE
*      Y : FLOTTANT
*      X : OBJET DE TYPE CHPOINT
*
*   PASSAGE AUX NOUVEAUX CHAMELEM PAR JM CAMPENON LE 02/91
*
*_______________________________________________________________________
*

-INC PPARAM
-INC CCOPTIO
*
      DFLO1 = 0.
      DFLO2 = 0.
      XDRET = 0.
*
      CALL LIROBJ('MCHAML',IPCHE1,0,IRETOU)
      IF(IRETOU.EQ.0) GOTO 1000
*
*     CAS DE LA SYNTAXE :  XTX FLO1 CHE1 FLO2 CHE2 ;
*
      CALL LIROBJ('MCHAML',IPCHE2,0,IRETOU)
*
      IF (IRETOU.EQ.0) THEN
*
*     CAS Y1 = XTX CHEL1 ;
        CALL XTX2(IPCHE1,XDRET,IRET)
*
      ELSE
        CALL LIRREE(DFLO1,1,IRETOU)
        IF(IERR.NE.0) RETURN
*
        CALL LIRREE(DFLO2,1,IRETOU)
        IF(IERR.NE.0) RETURN
*
        CALL XTX4(IPCHE1,IPCHE2,DFLO1,DFLO2,XDRET,IRET)
*
      ENDIF
      GOTO 5000
*
*
*     LECTURE D UN CHPOINT
*
 1000 CONTINUE
      CALL LIROBJ('CHPOINT ',ICH1,1,IRETOU)
      IF(IERR.NE.0) RETURN
*
*      CAS DE LA SYNTAXE Y1 = XTX FLO1 CHP1 FL2 CHP2
*
      CALL LIROBJ('CHPOINT ',ICH2,0,IRETOU)
*
*      CAS NORMAL Y1 = XTX CHP1 ;
*
      IF(IRETOU.EQ.0) THEN
        CALL XTX1(ICH1,XDRET)
        IRET = 1

      ELSE
        CALL LIRREE(DFLO1,1,IRETOU)
        IF (IERR.NE.0) RETURN
        CALL LIRREE(DFLO2,1,IRETOU)
        IF (IERR.NE.0) RETURN
*
        CALL XTX3(ICH1,ICH2,DFLO1,DFLO2,XDRET,IRET)
*
      ENDIF
C*    GOTO 5000
*
 5000 CONTINUE
      IF (IRET.NE.0) CALL ECRREE(XDRET)

      RETURN
      END



