Blame test/mpi/f90/spawn/namepubf90.f90

Packit Service c5cf8c
! This file created from f77/spawn/namepubf.f with f77tof90
Packit Service c5cf8c
! -*- Mode: Fortran; -*- 
Packit Service c5cf8c
!
Packit Service c5cf8c
! (C) 2003 by Argonne National Laboratory.
Packit Service c5cf8c
!     See COPYRIGHT in top-level directory.
Packit Service c5cf8c
!
Packit Service c5cf8c
      program main
Packit Service c5cf8c
      use mpi
Packit Service c5cf8c
      integer errs
Packit Service c5cf8c
      character*(MPI_MAX_PORT_NAME) port_name
Packit Service c5cf8c
      character*(MPI_MAX_PORT_NAME) port_name_out
Packit Service c5cf8c
      character*(256) serv_name
Packit Service c5cf8c
      integer merr, mclass
Packit Service c5cf8c
      character*(MPI_MAX_ERROR_STRING) errmsg
Packit Service c5cf8c
      integer msglen, rank
Packit Service c5cf8c
      integer ierr
Packit Service c5cf8c
Packit Service c5cf8c
      errs = 0
Packit Service c5cf8c
      call MTest_Init( ierr )
Packit Service c5cf8c
      call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr )
Packit Service c5cf8c
Packit Service c5cf8c
!       Note that according to the MPI standard, port_name must
Packit Service c5cf8c
!       have been created by MPI_Open_port.  For current testing
Packit Service c5cf8c
!       purposes, we'll use a fake name.  This test should eventually use
Packit Service c5cf8c
!       a valid name from Open_port 
Packit Service c5cf8c
Packit Service c5cf8c
      port_name = 'otherhost:122'
Packit Service c5cf8c
      serv_name = 'MyTest'
Packit Service c5cf8c
      
Packit Service c5cf8c
      call MPI_Comm_set_errhandler( MPI_COMM_WORLD, MPI_ERRORS_RETURN, &
Packit Service c5cf8c
      &     ierr )
Packit Service c5cf8c
Packit Service c5cf8c
      if (rank .eq. 0) then
Packit Service c5cf8c
         merr = -1
Packit Service c5cf8c
         call MPI_Publish_name( serv_name, MPI_INFO_NULL, port_name, &
Packit Service c5cf8c
      &        merr )
Packit Service c5cf8c
         if (merr .ne. MPI_SUCCESS) then
Packit Service c5cf8c
            errs = errs + 1
Packit Service c5cf8c
            call MPI_Error_string( merr, errmsg, msglen, ierr )
Packit Service c5cf8c
            print *, "Error in Publish_name ", errmsg(1:msglen)
Packit Service c5cf8c
         endif
Packit Service c5cf8c
Packit Service c5cf8c
         call MPI_Barrier(MPI_COMM_WORLD, ierr )
Packit Service c5cf8c
         call MPI_Barrier(MPI_COMM_WORLD, ierr )
Packit Service c5cf8c
        
Packit Service c5cf8c
         merr = -1
Packit Service c5cf8c
         call MPI_Unpublish_name( serv_name, MPI_INFO_NULL, port_name, &
Packit Service c5cf8c
      &        merr)
Packit Service c5cf8c
         if (merr .ne. MPI_SUCCESS) then
Packit Service c5cf8c
            errs = errs + 1
Packit Service c5cf8c
            call MPI_Error_string( merr, errmsg, msglen, ierr )
Packit Service c5cf8c
            print *,  "Error in Unpublish name ", errmsg(1:msglen)
Packit Service c5cf8c
         endif
Packit Service c5cf8c
      else
Packit Service c5cf8c
         call MPI_Barrier(MPI_COMM_WORLD, ierr )
Packit Service c5cf8c
         merr = -1
Packit Service c5cf8c
         call MPI_Lookup_name( serv_name, MPI_INFO_NULL, port_name_out, &
Packit Service c5cf8c
      &        merr)
Packit Service c5cf8c
         if (merr .ne. MPI_SUCCESS) then
Packit Service c5cf8c
            errs = errs + 1
Packit Service c5cf8c
            call MPI_Error_string( merr, errmsg, msglen, ierr )
Packit Service c5cf8c
            print *, "Error in Lookup name", errmsg(1:msglen)
Packit Service c5cf8c
         else 
Packit Service c5cf8c
            if (port_name .ne. port_name_out) then
Packit Service c5cf8c
                errs = errs + 1
Packit Service c5cf8c
                print *, "Lookup name returned the wrong value (", &
Packit Service c5cf8c
      &               port_name_out, "), expected (", port_name, ")" 
Packit Service c5cf8c
             endif
Packit Service c5cf8c
          endif
Packit Service c5cf8c
Packit Service c5cf8c
        call MPI_Barrier(MPI_COMM_WORLD, ierr )
Packit Service c5cf8c
      endif
Packit Service c5cf8c
Packit Service c5cf8c
      call MPI_Barrier(MPI_COMM_WORLD, ierr )
Packit Service c5cf8c
    
Packit Service c5cf8c
      merr = -1
Packit Service c5cf8c
      call MPI_Lookup_name( serv_name, MPI_INFO_NULL, port_name_out, &
Packit Service c5cf8c
      &     merr )
Packit Service c5cf8c
      if (merr .eq. MPI_SUCCESS) then
Packit Service c5cf8c
         errs = errs + 1
Packit Service c5cf8c
         print *, "Lookup name returned name after it was unpublished"
Packit Service c5cf8c
      else
Packit Service c5cf8c
!       Must be class MPI_ERR_NAME 
Packit Service c5cf8c
         call MPI_Error_class( merr, mclass, ierr )
Packit Service c5cf8c
        if (mclass .ne. MPI_ERR_NAME) then
Packit Service c5cf8c
            errs = errs + 1
Packit Service c5cf8c
            call MPI_Error_string( merr, errmsg, msglen, ierr )
Packit Service c5cf8c
            print *,    "Lookup name returned the wrong error class &
Packit Service c5cf8c
      &           (",mclass,"), msg ", errmsg
Packit Service c5cf8c
Packit Service c5cf8c
         endif
Packit Service c5cf8c
      endif
Packit Service c5cf8c
      
Packit Service c5cf8c
      call MTest_Finalize( errs )
Packit Service c5cf8c
      end