Télécharger openmm.eso

Retour à la liste

Numérotation des lignes :

  1. C OPENMM SOURCE JC220346 16/03/24 21:15:12 8866
  2. C SORMAT SOURCE JC220346 12/06/18 21:15:25 7403
  3. ************************************************************************
  4. * NOM : openmm.eso
  5. * DESCRIPTION : Ouverture d'un fichier au format MATRIX MARKET (.mm)
  6. * REFERENCES : - The Matrix Market Exchange Formats: Initial Design,
  7. * Boisvert R. F., Pozo R., Remington K. A. (Dec 1996)
  8. * - The Rutherford-Boeing Sparse Matrix Collection,
  9. * Duff I. S., Grimes R. G., Lewis G. L. (Sep 1997)
  10. ************************************************************************
  11. * HISTORIQUE : 4/12/2012 : JCARDO : création de la subroutine
  12. * HISTORIQUE :
  13. * HISTORIQUE :
  14. ************************************************************************
  15. * Prière de PRENDRE LE TEMPS DE COMPLÉTER LES COMMENTAIRES
  16. * en cas de modification de ce sous-programme afin de faciliter
  17. * la maintenance !
  18. ************************************************************************
  19. * APPELÉ PAR : sormat.eso
  20. ************************************************************************
  21.  
  22. SUBROUTINE OPENMM(CHNOMF,CHTYPE,CHTITR,
  23. & IVA1,IVA2,IVA3,
  24. & CVA1)
  25.  
  26. IMPLICIT INTEGER(I-N)
  27. IMPLICIT REAL*8(A-H,O-Z)
  28.  
  29. EXTERNAL LONG
  30.  
  31.  
  32. -INC PPARAM
  33. -INC CCOPTIO
  34.  
  35. CHARACTER*(*) CHNOMF,CHTYPE,CHTITR,CVA1
  36. CHARACTER*8 CHA8
  37.  
  38.  
  39. * ====================
  40. * OUVERTURE DU FICHIER
  41. * ====================
  42.  
  43. OPEN(UNIT = IOPER ,
  44. & STATUS = 'UNKNOWN' ,
  45. & FILE = CHNOMF(1:LONG(CHNOMF))//'.'//
  46. & CHTYPE(1:LONG(CHTYPE))//'.mm',
  47. & IOSTAT = IOS ,
  48. & FORM = 'FORMATTED' )
  49.  
  50.  
  51. * ====================
  52. * ÉCRITURE DE L'ENTETE
  53. * ====================
  54.  
  55. * Ligne d'entête (OBLIGATOIRE)
  56. WRITE(UNIT=IOPER,FMT='(A,A)')
  57. .'%%MatrixMarket ',CVA1
  58.  
  59. * Nom du programme (commentaire facultatif)
  60. WRITE(UNIT=IOPER,FMT='("%",/,A,/,A)')
  61. .'% PROGRAMME',
  62. .'% CASTEM/SORMAT'
  63.  
  64. * Utilisateur (commentaire facultatif)
  65. CALL GIBNAM(CHA8)
  66. CALL NETCHA(CHA8)
  67. WRITE(UNIT=IOPER,FMT='("%",/,A,/,A)')
  68. .'% UTILISATEUR',
  69. .'% '//CHA8(1:LONG(CHA8))
  70.  
  71. * Date (commentaire facultatif)
  72. CALL GIBDAT(IJOUR,IMOIS,IANNEE)
  73. IANNEE=MOD(IANNEE,100)+2000
  74. WRITE(UNIT=IOPER,FMT='("%",/,A,/,A,I2.2,A1,I2.2,A1,I4)')
  75. .'% DATE',
  76. .'% ',IJOUR,'/',IMOIS,'/',IANNEE
  77.  
  78. * Type de contenu
  79. WRITE(UNIT=IOPER,FMT='("%",/,A)')
  80. .'% CONTENU'
  81. WRITE(UNIT=IOPER,FMT='(A,A)')
  82. .'% ',CHTYPE(1:LONG(CHTYPE))
  83.  
  84. * Titre (commentaire facultatif)
  85. WRITE(UNIT=IOPER,FMT='("%",/,A)')
  86. .'% TITRE'
  87. LC=LONG(CHTITR)
  88. IF (LC.GT.0) THEN
  89. WRITE(UNIT=IOPER,FMT='(A,A)')
  90. . '% ',CHTITR(1:LC)
  91. ELSE
  92. WRITE(UNIT=IOPER,FMT='(A,A)')
  93. . '% ',CHNOMF(1:LONG(CHNOMF))
  94. ENDIF
  95.  
  96. * Nb de lignes et de colonnes + nb de valeurs non nulles si besoin
  97. IF (IVA3.EQ.0) THEN
  98. WRITE(IOPER,FMT='(I12,1X,I12)') IVA1,IVA2
  99. ELSE
  100. WRITE(IOPER,FMT='(I12,2(1X,I12))') IVA1,IVA2,IVA3
  101. ENDIF
  102.  
  103.  
  104.  
  105. RETURN
  106.  
  107. END
  108.  
  109.  
  110.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales