SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/XRD38/support/abor1.F90
Go to the documentation of this file.
00001 SUBROUTINE ABOR1(CDTEXT)
00002 
00003 USE PARKIND1  ,ONLY : JPIM     ,JPRB
00004 USE YOMLUN_IFSAUX, ONLY : NULOUT,NULERR
00005 USE MPL_MODULE, ONLY : MPL_ABORT, MPL_RANK, MPL_NUMPROC
00006 USE SDL_MOD, ONLY : SDL_TRACEBACK, SDL_SRLABORT
00007 
00008 IMPLICIT NONE
00009 
00010 CHARACTER(LEN=*), INTENT(IN) :: CDTEXT
00011 INTEGER(KIND=JPIM) :: ILEN
00012 
00013 ILEN=LEN(CDTEXT)
00014 IF (NULOUT >= 0) WRITE(NULOUT,'(1X,A)') 'ABOR1 CALLED'
00015 
00016 IF(ILEN <= 512) THEN
00017   IF (NULOUT >= 0) WRITE(NULOUT,'(1X,A)') CDTEXT
00018   IF (NULERR >= 0) WRITE(NULERR,'(1X,A,1X,I3,1X,A)') 'ABORT! ',MPL_RANK,CDTEXT
00019 ELSE
00020   IF (NULERR >= 0) WRITE(NULERR,'(1X,A,1X,I3,1X,A)') 'ABORT! ',MPL_RANK,&
00021    & 'ABOR1 CALLED WITHOUT TEXT STRING'  
00022 ENDIF
00023 
00024 IF (NULOUT >= 0) THEN
00025   CALL FLUSH(NULOUT)
00026   IF (NULOUT /= 0 .and. NULOUT /= 6) CLOSE(NULOUT)
00027 ENDIF
00028 
00029 IF (MPL_NUMPROC > 1) THEN
00030   IF(ILEN <= 512) THEN
00031     CALL MPL_ABORT(CDTEXT)
00032   ELSE
00033     CALL MPL_ABORT
00034   ENDIF
00035 ELSE
00036   CALL SDL_TRACEBACK
00037   CALL FLUSH(0)
00038   CALL SDL_SRLABORT
00039 ENDIF
00040 
00041 END SUBROUTINE ABOR1
00042 
00043 SUBROUTINE ABOR1FL(CDFILE, KLINENUM, CDTEXT)
00044 USE PARKIND1  ,ONLY : JPIM
00045 USE YOMLUN_IFSAUX, ONLY : NULOUT,NULERR
00046 IMPLICIT NONE
00047 CHARACTER(LEN=*), INTENT(IN) :: CDFILE,CDTEXT
00048 INTEGER(KIND=JPIM), INTENT(IN) :: KLINENUM
00049 IF (LEN(CDFILE) > 0 .AND. KLINENUM > 0 .AND. NULERR >= 0) THEN
00050  1000 FORMAT(1X,A,A,":",I6.6)
00051   WRITE(NULERR,1000) 'ABOR1FL HAS BEEN CALLED AT ',CDFILE,KLINENUM
00052   CALL FLUSH(NULERR)
00053 ENDIF
00054 CALL ABOR1(CDTEXT)
00055 END SUBROUTINE ABOR1FL