! --------------------------------------------------- ! ! ------------- XMLIO SERVER MAIN TEST ------------- ! ! --------------------------------------------------- ! MODULE XTYPE IMPLICIT NONE ! Ne jamais modifier les valeurs internes de ce type dans le code fortran. TYPE XHandle INTEGER :: dtype INTEGER :: daddr END TYPE XHandle TYPE XDate INTEGER :: year, month, day, hour, minute, second END TYPE XDate TYPE XDuration REAL(kind = 4) :: year, month, day, hour, minute, second END TYPE XDuration ! enum XDType INTEGER, PARAMETER :: NOTYPE = 0 INTEGER, PARAMETER :: DTREATMENT = 1, DDATE = 2, CALENDAR = 3, ECONTEXT = 4 INTEGER, PARAMETER :: EAXIS = 5 , EDOMAIN = 6 , EFIELD = 7 , EFILE = 8 , EGRID = 9 INTEGER, PARAMETER :: GAXIS = 10, GDOMAIN = 11, GFIELD = 12, GFILE = 13, GGRID = 14 ! enum XFileType INTEGER, PARAMETER :: NETCDF4 = 0 ! Autres constantes TYPE(XHandle) , PARAMETER :: NULLHANDLE = XHandle(0, 0) TYPE(XDuration), PARAMETER :: NONEDUR = XDuration(0., 0., 0., 0., 0., 0.) END MODULE XTYPE MODULE IXHANDLE INTERFACE SUBROUTINE xios_handle_create(ret, dtype, idt) USE XTYPE TYPE(XHandle), INTENT(OUT) :: ret INTEGER , INTENT(IN) :: dtype CHARACTER*(*), INTENT(IN) :: idt END SUBROUTINE xios_handle_create END INTERFACE END MODULE IXHANDLE MODULE IXML IMPLICIT NONE INTERFACE SUBROUTINE xios_xml_Parse_File(filename) CHARACTER*(*), INTENT(IN) :: filename END SUBROUTINE xios_xml_Parse_File SUBROUTINE xios_xml_Parse_String(xmlcontent) CHARACTER*(*), INTENT(IN) :: xmlcontent END SUBROUTINE xios_xml_Parse_String END INTERFACE END MODULE IXML MODULE ICONTEXT IMPLICIT NONE INTERFACE SUBROUTINE xios_context_set_current(context, withswap) USE XTYPE TYPE(XHandle), INTENT(IN) :: context LOGICAL, OPTIONAL, INTENT(IN) :: withswap END SUBROUTINE xios_context_set_current END INTERFACE END MODULE ICONTEXT MODULE IDATATREATMENT IMPLICIT NONE INTERFACE SUBROUTINE xios_dtreatment_new(dt, context) USE XTYPE TYPE(XHandle), INTENT(OUT) :: dt TYPE(XHandle), INTENT(IN) :: context END SUBROUTINE xios_dtreatment_new SUBROUTINE xios_dtreatment_create_files_and_headers(dt, ftype) USE XTYPE TYPE(XHandle), INTENT(IN) :: dt INTEGER , INTENT(IN) :: ftype END SUBROUTINE xios_dtreatment_create_files_and_headers END INTERFACE END MODULE IDATATREATMENT PROGRAM MAIN USE XTYPE USE IXHANDLE USE IXML USE ICONTEXT USE IDATATREATMENT IMPLICIT NONE TYPE(XHandle) :: context1 = NULLHANDLE TYPE(XHandle) :: dtreat = NULLHANDLE ! Parsing du document xml depuis un fichier situé sur le disque. CALL xios_xml_Parse_File("/local/XMLIOSERVER_DEV/dev_rv/test/iodef_simple_test.xml") ! Création d'un handle sur le contexte dans lequel on souhaite travailler, càd 'context1' ici. CALL xios_handle_create(context1, ECONTEXT, "context1") iF ((context1%dtype == 0) .AND. (context1%daddr == 0)) THEN PRINT *, "Impossible de créer un handle sur l'élément context1 !" STOP END IF ! ----------- Début du traitement ----------- ! CALL xios_context_set_current(context1, .TRUE.) ! Création et initialisation d'une instance de traitement des données dans 'context1'. CALL xios_dtreatment_new(dtreat, context1) iF ((dtreat%dtype == 0) .AND. (dtreat%daddr == 0)) THEN PRINT *, "Impossible d'initialiser l'instance de traitement !" STOP END IF ! Création des fichiers et des entêtes dans le contexte. CALL xios_dtreatment_create_files_and_headers(dtreat, NETCDF4) END PROGRAM MAIN