C OPENMM SOURCE JC220346 13/12/16 21:16:05 7884 C SORMAT SOURCE JC220346 12/06/18 21:15:25 7403 ************************************************************************ * NOM : openmm.eso * DESCRIPTION : Ouverture d'un fichier au format MATRIX MARKET (.mm) * REFERENCES : - The Matrix Market Exchange Formats: Initial Design, * Boisvert R. F., Pozo R., Remington K. A. (Dec 1996) * - The Rutherford-Boeing Sparse Matrix Collection, * Duff I. S., Grimes R. G., Lewis G. L. (Sep 1997) ************************************************************************ * HISTORIQUE : 4/12/2012 : JCARDO : création de la subroutine * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS DE COMPLÉTER LES COMMENTAIRES * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * APPELÉ PAR : sormat.eso ************************************************************************ SUBROUTINE OPENMM(CHNOMF,CHTYPE,CHTITR, & IVA1,IVA2,IVA3, & CVA1) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) EXTERNAL LONG -INC CCOPTIO CHARACTER*(*) CHNOMF,CHTYPE,CHTITR,CVA1 CHARACTER*8 CHA8 * ==================== * OUVERTURE DU FICHIER * ==================== OPEN(UNIT = IOPER , & STATUS = 'UNKNOWN' , & FILE = CHNOMF(1:LONG(CHNOMF))//'.'// & CHTYPE(1:LONG(CHTYPE))//'.mm', & IOSTAT = IOS , & FORM = 'FORMATTED' ) * ==================== * ÉCRITURE DE L'ENTETE * ==================== * Ligne d'entête (OBLIGATOIRE) WRITE(UNIT=IOPER,FMT='(A,A)') .'%%MatrixMarket ',CVA1 * Nom du programme (commentaire facultatif) WRITE(UNIT=IOPER,FMT='("%",/,A,/,A)') .'% PROGRAMME', .'% CASTEM/SORMAT' * Utilisateur (commentaire facultatif) CALL GIBNAM(CHA8) CALL NETCHA(CHA8) WRITE(UNIT=IOPER,FMT='("%",/,A,/,A)') .'% UTILISATEUR', .'% '//CHA8(1:LONG(CHA8)) * Date (commentaire facultatif) CALL GIBDAT(IJOUR,IMOIS,IANNEE) IANNEE=MOD(IANNEE,100)+2000 WRITE(UNIT=IOPER,FMT='("%",/,A,/,A,I2.2,A1,I2.2,A1,I4)') .'% DATE', .'% ',IJOUR,'/',IMOIS,'/',IANNEE * Type de contenu WRITE(UNIT=IOPER,FMT='("%",/,A)') .'% CONTENU' WRITE(UNIT=IOPER,FMT='(A,A)') .'% ',CHTYPE(1:LONG(CHTYPE)) * Titre (commentaire facultatif) WRITE(UNIT=IOPER,FMT='("%",/,A)') .'% TITRE' LC=LONG(CHTITR) IF (LC.GT.0) THEN WRITE(UNIT=IOPER,FMT='(A,A)') . '% ',CHTITR(1:LC) ELSE WRITE(UNIT=IOPER,FMT='(A,A)') . '% ',CHNOMF(1:LONG(CHNOMF)) ENDIF * Nb de lignes et de colonnes + nb de valeurs non nulles si besoin IF (IVA3.EQ.0) THEN WRITE(IOPER,FMT='(I6,1X,I6)') IVA1,IVA2 ELSE WRITE(IOPER,FMT='(I6,2(1X,I6))') IVA1,IVA2,IVA3 ENDIF RETURN END