Ignore:
Timestamp:
10/14/10 14:52:38 (14 years ago)
Author:
hozdoba
Message:

suite interface cpp<->fortran

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_V2/dev/dev_rv/src/XMLIO/main.f90

    r131 r132  
    33! --------------------------------------------------- ! 
    44 
    5 MODULE XML 
     5MODULE XTYPE 
     6   IMPLICIT NONE 
     7 
     8   ! Ne jamais modifier les valeurs internes de ce type dans le code fortran. 
     9   TYPE XHandle 
     10      INTEGER :: dtype 
     11      INTEGER :: daddr 
     12   END TYPE XHandle 
     13 
     14   TYPE XDate 
     15      INTEGER :: year, month, day, hour, minute, second 
     16   END TYPE XDate 
     17 
     18   TYPE XDuration 
     19      REAL(kind = 4) :: year, month, day, hour, minute, second 
     20   END TYPE XDuration 
     21 
     22   ! enum XDType 
     23   INTEGER, PARAMETER  :: NOTYPE = 0 
     24   INTEGER, PARAMETER  :: DTREATMENT = 1, DDATE = 2, CALENDAR = 3, ECONTEXT = 4 
     25   INTEGER, PARAMETER  :: EAXIS = 5 , EDOMAIN = 6 , EFIELD = 7 , EFILE = 8 , EGRID = 9 
     26   INTEGER, PARAMETER  :: GAXIS = 10, GDOMAIN = 11, GFIELD = 12, GFILE = 13, GGRID = 14 
     27 
     28   ! enum XFileType 
     29   INTEGER, PARAMETER  :: NETCDF4 = 0 
     30 
     31   ! Autres constantes 
     32   TYPE(XHandle)  , PARAMETER :: NULLHANDLE = XHandle(0, 0) 
     33   TYPE(XDuration), PARAMETER :: NONEDUR    = XDuration(0., 0., 0., 0., 0., 0.) 
     34 
     35END MODULE XTYPE 
     36 
     37MODULE IXHANDLE 
     38 
     39   INTERFACE 
     40 
     41      SUBROUTINE xios_handle_create(ret, dtype, idt) 
     42         USE XTYPE 
     43         TYPE(XHandle), INTENT(OUT) :: ret 
     44         INTEGER      , INTENT(IN)  :: dtype 
     45         CHARACTER*(*), INTENT(IN)  :: idt 
     46      END SUBROUTINE xios_handle_create 
     47 
     48   END INTERFACE 
     49 
     50END MODULE IXHANDLE 
     51 
     52MODULE IXML 
     53   IMPLICIT NONE 
    654   INTERFACE 
    755 
     
    1563 
    1664   END INTERFACE 
    17 END MODULE XML 
     65END MODULE IXML 
     66 
     67MODULE IDATATREATMENT 
     68   IMPLICIT NONE 
     69   INTERFACE 
     70 
     71      SUBROUTINE xios_dtreatment_new(dt, context) 
     72         USE XTYPE 
     73         TYPE(XHandle), INTENT(OUT) :: dt 
     74         TYPE(XHandle), INTENT(IN)  :: context 
     75      END SUBROUTINE xios_dtreatment_new 
     76 
     77      SUBROUTINE xios_dtreatment_create_files_and_headers(dt, ftype) 
     78         USE XTYPE 
     79         TYPE(XHandle), INTENT(IN) :: dt 
     80         INTEGER      , INTENT(IN) :: ftype 
     81      END SUBROUTINE xios_dtreatment_create_files_and_headers 
     82 
     83   END INTERFACE 
     84END MODULE IDATATREATMENT 
    1885 
    1986PROGRAM MAIN 
    20    USE XML 
     87   USE XTYPE 
     88   USE IXHANDLE 
     89   USE IXML 
     90   USE IDATATREATMENT 
     91 
    2192   IMPLICIT NONE 
    2293 
    23    CHARACTER(LEN = 100):: filename 
     94   TYPE(XHandle) :: context1 = NULLHANDLE 
     95   TYPE(XHandle) :: dtreat   = NULLHANDLE 
    2496 
    25    filename = "/local/XMLIOSERVER_DEV/dev_rv/test/iodef_simple_test.xml" 
     97   ! Parsing du document xml depuis un fichier situé sur le disque. 
     98   CALL xios_xml_Parse_File("/local/XMLIOSERVER_DEV/dev_rv/test/iodef_simple_test.xml") 
    2699 
    27    CALL xios_xml_Parse_File(filename) 
     100   ! Création d'un handle sur le contexte dans lequel on souhaite travailler, càd 'context1' ici. 
     101   CALL xios_handle_create(context1, ECONTEXT, "context1") 
     102   iF ((context1%dtype == 0) .AND. (context1%daddr == 0)) THEN 
     103      PRINT *, "Impossible de créer un handle sur l'élément context1 !" 
     104      STOP 
     105   END IF 
     106 
     107   ! ----------- Début du traitement ----------- ! 
     108 
     109   ! Création et initialisation d'une instance de traitement des données dans 'context1'. 
     110   CALL xios_dtreatment_new(dtreat, context1) 
     111   iF ((dtreat%dtype == 0) .AND. (dtreat%daddr == 0)) THEN 
     112      PRINT *, "Impossible d'initialiser l'instance de traitement !" 
     113      STOP 
     114   END IF 
     115 
     116   ! Création des fichiers et des entêtes dans le contexte. 
     117   CALL xios_dtreatment_create_files_and_headers(dtreat, NETCDF4) 
    28118 
    29119END PROGRAM MAIN 
Note: See TracChangeset for help on using the changeset viewer.