Index: /LMDZ4/trunk/libf/phylmd/inc_cpl.h
===================================================================
--- /LMDZ4/trunk/libf/phylmd/inc_cpl.h	(revision 625)
+++ /LMDZ4/trunk/libf/phylmd/inc_cpl.h	(revision 626)
@@ -18,6 +18,8 @@
       INTEGER jpread, jpwrit
       PARAMETER (jpread=0, jpwrit=1)
+#ifndef CPP_PSMILE
       CHARACTER*8 cl_writ(jpmaxfld), cl_read(jpmaxfld)
       CHARACTER*8 cl_f_writ(jpmaxfld), cl_f_read(jpmaxfld)
       COMMON / comcpl / cl_writ, cl_read, cl_f_writ, cl_f_read
+#endif
 !     -------------------------------------------------------------------
Index: /LMDZ4/trunk/libf/phylmd/oasis.psmile
===================================================================
--- /LMDZ4/trunk/libf/phylmd/oasis.psmile	(revision 625)
+++ /LMDZ4/trunk/libf/phylmd/oasis.psmile	(revision 626)
@@ -22,8 +22,8 @@
    integer, dimension(jpfldo2a), save              :: in_var_id
    integer, dimension(jpflda2o1+jpflda2o2), save  :: il_out_var_id
-   CHARACTER (len=8), dimension(jpmaxfld), save   :: cl_writ, cl_read
+   CHARACTER (len=8), dimension(jpmaxfld), public, save   :: cl_writ, cl_read
    CHARACTER (len=8), dimension(jpmaxfld), save   :: cl_f_writ, cl_f_read
 
-CONTAINS
+  CONTAINS
 
 !****
@@ -60,9 +60,7 @@
 !
    integer                                  :: comp_id
-   integer                                  :: ierror
+   integer                                  :: ierror, il_commlocal
    integer                                  :: il_part_id
    integer, dimension(:), allocatable       :: ig_paral
-   integer, dimension(jpfldo2a)             :: in_var_id
-   integer, dimension(jpflda2o1+jpflda2o2)  :: il_out_var_id
    integer, dimension(2)                    :: il_var_nodims
    integer, dimension(4)                    :: il_var_actual_shape
@@ -105,4 +103,7 @@
    ENDIF
 
+! PSMILe attribution of local communicator
+!
+   call prism_get_localcomm_proto (il_commlocal, ierror)
 !
 ! and domain decomposition
@@ -110,8 +111,10 @@
 ! monoproc case
 !
-   allocate(ig_paral(3))
-   ig_paral(1) = 0
-   ig_paral(2) = 0
-   ig_paral(3) = im * jm
+   allocate(ig_paral(5))
+   ig_paral (1) = 2
+   ig_paral (2) = 0
+   ig_paral (3) = im
+   ig_paral (4) = jm
+   ig_paral (5) = im
 
    call prism_def_partition_proto (il_part_id, ig_paral, ierror)
@@ -131,22 +134,25 @@
 !         must be the same as (1) of the field  definition in namcouple:
 !
-   cl_writ(1)='COSHFICE'
-   cl_writ(2)='COSHFOCE'
-   cl_writ(3)='CONSFICE'
-   cl_writ(4)='CONSFOCE'
-   cl_writ(5)='CODFLXDT'
-   cl_writ(6)='COTFSICE'
-   cl_writ(7)='COTFSOCE'
-   cl_writ(8)='COTOLPSU'
-   cl_writ(9)='COTOSPSU'
-   cl_writ(10)='CORUNCOA'
-   cl_writ(11)='CORIVFLU'
-   cl_writ(12)='COCALVIN'
-   cl_writ(13)='COTAUXXU'
-   cl_writ(14)='COTAUYYU'
-   cl_writ(15)='COTAUZZU'
-   cl_writ(16)='COTAUXXV'
-   cl_writ(17)='COTAUYYV'
-   cl_writ(18)='COTAUZZV'
+      cl_writ(1)='COTAUXXU'
+      cl_writ(2)='COTAUYYU'
+      cl_writ(3)='COTAUZZU'
+      cl_writ(4)='COTAUXXV'
+      cl_writ(5)='COTAUYYV'
+      cl_writ(6)='COTAUZZV'
+c -- LOOP
+      cl_writ(7)='COWINDSP'
+c -- LOOP
+      cl_writ(8)='COSHFICE'
+      cl_writ(9)='COSHFOCE'
+      cl_writ(10)='CONSFICE'
+      cl_writ(11)='CONSFOCE'
+      cl_writ(12)='CODFLXDT'
+      cl_writ(13)='COTFSICE'
+      cl_writ(14)='COTFSOCE'
+      cl_writ(15)='COTOLPSU'
+      cl_writ(16)='COTOSPSU'
+      cl_writ(17)='CORUNCOA'
+      cl_writ(18)='CORIVFLU'
+      cl_writ(19)='COCALVIN'
 !
 !     Define symbolic name for fields exchanged from coupler to atmosphere,
@@ -240,5 +246,8 @@
 
    call prism_get_proto(in_var_id(1), kt, sst, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Recvd .and. &
+ &     ierror.ne.PRISM_FromRest &
+ &     .and. ierror.ne.PRISM_Input .and. ierror.ne.PRISM_RecvOut &
+ &     .and. ierror.ne.PRISM_FromRestOut) THEN
      WRITE (nuout,*)  cl_read(1), kt   
      abort_message=' Probleme dans prism_get_proto '
@@ -246,5 +255,8 @@
    endif
    call prism_get_proto(in_var_id(2), kt, gla, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Recvd .and. &
+ &     ierror.ne.PRISM_FromRest &
+ &     .and. ierror.ne.PRISM_Input .and. ierror.ne.PRISM_RecvOut &
+ &     .and. ierror.ne.PRISM_FromRestOut) THEN
      WRITE (nuout,*)  cl_read(2), kt   
      abort_message=' Probleme dans prism_get_proto '
@@ -252,5 +264,8 @@
    endif
    call prism_get_proto(in_var_id(3), kt, albedo, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Recvd .and. &
+ &     ierror.ne.PRISM_FromRest &
+ &     .and. ierror.ne.PRISM_Input .and. ierror.ne.PRISM_RecvOut &
+ &     .and. ierror.ne.PRISM_FromRestOut) THEN
      WRITE (nuout,*)  cl_read(3), kt   
      abort_message=' Probleme dans prism_get_proto '
@@ -258,5 +273,8 @@
    endif
    call prism_get_proto(in_var_id(4), kt, tice, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Recvd .and. &
+ &     ierror.ne.PRISM_FromRest &
+ &     .and. ierror.ne.PRISM_Input .and. ierror.ne.PRISM_RecvOut &
+ &     .and. ierror.ne.PRISM_FromRestOut) THEN
      WRITE (nuout,*)  cl_read(4), kt   
      abort_message=' Probleme dans prism_get_proto '
@@ -271,4 +289,7 @@
  &    fnsicedt, evice, evwat, lpre, spre, dirunoff, rivrunoff, & 
  &    calving, tauxx_u, tauyy_u, tauzz_u, tauxx_v, tauyy_v, tauzz_v &
+c -- LOOP
+     $    windsp,
+c -- LOOP
  &    , last) 
 ! ======================================================================
@@ -292,4 +313,5 @@
    real, dimension(im, jm) :: tauxx_u, tauxx_v, tauyy_u
    real, dimension(im, jm) :: tauyy_v, tauzz_u, tauzz_v
+   real, dimension(im, jm) :: windsp
    logical               :: last
 !
@@ -307,109 +329,153 @@
       WRITE(nuout,*)
 
-   call prism_put_proto(il_out_var_id(1), kt, fsolice, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
+   call prism_put_proto(il_out_var_id(8), kt, fsolice, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
+     WRITE (nuout,*)  cl_writ(8), kt   
+     abort_message=' Probleme dans prism_put_proto '
+     call abort_gcm(modname,abort_message,1)
+   endif
+   call prism_put_proto(il_out_var_id(9), kt, fsolwat, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
+     WRITE (nuout,*)  cl_writ(9), kt   
+     abort_message=' Probleme dans prism_put_proto '
+     call abort_gcm(modname,abort_message,1)
+   endif
+   call prism_put_proto(il_out_var_id(10), kt, fnsolice, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
+     WRITE (nuout,*)  cl_writ(10), kt   
+     abort_message=' Probleme dans prism_put_proto '
+     call abort_gcm(modname,abort_message,1)
+   endif
+   call prism_put_proto(il_out_var_id(11), kt, fnsolwat, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
+     WRITE (nuout,*)  cl_writ(11), kt   
+     abort_message=' Probleme dans prism_put_proto '
+     call abort_gcm(modname,abort_message,1)
+   endif
+   call prism_put_proto(il_out_var_id(12), kt, fnsicedt, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
+     WRITE (nuout,*)  cl_writ(12), kt   
+     abort_message=' Probleme dans prism_put_proto '
+     call abort_gcm(modname,abort_message,1)
+   endif
+   call prism_put_proto(il_out_var_id(13), kt, evice, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
+     WRITE (nuout,*)  cl_writ(13), kt   
+     abort_message=' Probleme dans prism_put_proto '
+     call abort_gcm(modname,abort_message,1)
+   endif
+   call prism_put_proto(il_out_var_id(14), kt, evwat, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
+     WRITE (nuout,*)  cl_writ(14), kt   
+     abort_message=' Probleme dans prism_put_proto '
+     call abort_gcm(modname,abort_message,1)
+   endif
+   call prism_put_proto(il_out_var_id(15), kt, lpre, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
+     WRITE (nuout,*)  cl_writ(15), kt   
+     abort_message=' Probleme dans prism_put_proto '
+     call abort_gcm(modname,abort_message,1)
+   endif
+   call prism_put_proto(il_out_var_id(16), kt, spre, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
+     WRITE (nuout,*)  cl_writ(16), kt   
+     abort_message=' Probleme dans prism_put_proto '
+     call abort_gcm(modname,abort_message,1)
+   endif
+   call prism_put_proto(il_out_var_id(17), kt, dirunoff, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
+     WRITE (nuout,*)  cl_writ(17), kt   
+     abort_message=' Probleme dans prism_put_proto '
+     call abort_gcm(modname,abort_message,1)
+   endif
+   call prism_put_proto(il_out_var_id(18), kt, rivrunoff, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
+     WRITE (nuout,*)  cl_writ(18), kt   
+     abort_message=' Probleme dans prism_put_proto '
+     call abort_gcm(modname,abort_message,1)
+   endif
+   call prism_put_proto(il_out_var_id(19), kt, calving, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
+     WRITE (nuout,*)  cl_writ(19), kt   
+     abort_message=' Probleme dans prism_put_proto '
+     call abort_gcm(modname,abort_message,1)
+   endif
+   call prism_put_proto(il_out_var_id(1), kt, tauxx_u, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
      WRITE (nuout,*)  cl_writ(1), kt   
      abort_message=' Probleme dans prism_put_proto '
      call abort_gcm(modname,abort_message,1)
    endif
-   call prism_put_proto(il_out_var_id(2), kt, fsolwat, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
+   call prism_put_proto(il_out_var_id(2), kt, tauyy_u, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
      WRITE (nuout,*)  cl_writ(2), kt   
      abort_message=' Probleme dans prism_put_proto '
      call abort_gcm(modname,abort_message,1)
    endif
-   call prism_put_proto(il_out_var_id(3), kt, fnsolice, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
+   call prism_put_proto(il_out_var_id(3), kt, tauzz_u, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
      WRITE (nuout,*)  cl_writ(3), kt   
      abort_message=' Probleme dans prism_put_proto '
      call abort_gcm(modname,abort_message,1)
    endif
-   call prism_put_proto(il_out_var_id(4), kt, fnsolwat, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
+   call prism_put_proto(il_out_var_id(4), kt, tauxx_v, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
      WRITE (nuout,*)  cl_writ(4), kt   
      abort_message=' Probleme dans prism_put_proto '
      call abort_gcm(modname,abort_message,1)
    endif
-   call prism_put_proto(il_out_var_id(5), kt, fnsicedt, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
+   call prism_put_proto(il_out_var_id(5), kt, tauyy_v, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
      WRITE (nuout,*)  cl_writ(5), kt   
      abort_message=' Probleme dans prism_put_proto '
      call abort_gcm(modname,abort_message,1)
    endif
-   call prism_put_proto(il_out_var_id(6), kt, evice, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
+   call prism_put_proto(il_out_var_id(6), kt, tauzz_v, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
      WRITE (nuout,*)  cl_writ(6), kt   
      abort_message=' Probleme dans prism_put_proto '
      call abort_gcm(modname,abort_message,1)
    endif
-   call prism_put_proto(il_out_var_id(7), kt, evwat, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
+   call prism_put_proto(il_out_var_id(7), kt, windsp, ierror)
+   IF (ierror .ne. PRISM_Ok .and. ierror.ne.PRISM_Sent .and. ierror.ne.PRISM_ToRest &
+ &     .and. ierror.ne.PRISM_LocTrans .and. ierror.ne.PRISM_Output .and. &
+ &     ierror.ne.PRISM_SentOut .and. ierror.ne.PRISM_ToRestOut) THEN
      WRITE (nuout,*)  cl_writ(7), kt   
-     abort_message=' Probleme dans prism_put_proto '
-     call abort_gcm(modname,abort_message,1)
-   endif
-   call prism_put_proto(il_out_var_id(8), kt, lpre, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
-     WRITE (nuout,*)  cl_writ(8), kt   
-     abort_message=' Probleme dans prism_put_proto '
-     call abort_gcm(modname,abort_message,1)
-   endif
-   call prism_put_proto(il_out_var_id(9), kt, spre, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
-     WRITE (nuout,*)  cl_writ(9), kt   
-     abort_message=' Probleme dans prism_put_proto '
-     call abort_gcm(modname,abort_message,1)
-   endif
-   call prism_put_proto(il_out_var_id(10), kt, dirunoff, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
-     WRITE (nuout,*)  cl_writ(10), kt   
-     abort_message=' Probleme dans prism_put_proto '
-     call abort_gcm(modname,abort_message,1)
-   endif
-   call prism_put_proto(il_out_var_id(11), kt, rivrunoff, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
-     WRITE (nuout,*)  cl_writ(11), kt   
-     abort_message=' Probleme dans prism_put_proto '
-     call abort_gcm(modname,abort_message,1)
-   endif
-   call prism_put_proto(il_out_var_id(12), kt, calving, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
-     WRITE (nuout,*)  cl_writ(12), kt   
-     abort_message=' Probleme dans prism_put_proto '
-     call abort_gcm(modname,abort_message,1)
-   endif
-   call prism_put_proto(il_out_var_id(13), kt, tauxx_u, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
-     WRITE (nuout,*)  cl_writ(13), kt   
-     abort_message=' Probleme dans prism_put_proto '
-     call abort_gcm(modname,abort_message,1)
-   endif
-   call prism_put_proto(il_out_var_id(14), kt, tauyy_u, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
-     WRITE (nuout,*)  cl_writ(14), kt   
-     abort_message=' Probleme dans prism_put_proto '
-     call abort_gcm(modname,abort_message,1)
-   endif
-   call prism_put_proto(il_out_var_id(15), kt, tauzz_u, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
-     WRITE (nuout,*)  cl_writ(15), kt   
-     abort_message=' Probleme dans prism_put_proto '
-     call abort_gcm(modname,abort_message,1)
-   endif
-   call prism_put_proto(il_out_var_id(16), kt, tauxx_v, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
-     WRITE (nuout,*)  cl_writ(16), kt   
-     abort_message=' Probleme dans prism_put_proto '
-     call abort_gcm(modname,abort_message,1)
-   endif
-   call prism_put_proto(il_out_var_id(17), kt, tauyy_v, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
-     WRITE (nuout,*)  cl_writ(17), kt   
-     abort_message=' Probleme dans prism_put_proto '
-     call abort_gcm(modname,abort_message,1)
-   endif
-   call prism_put_proto(il_out_var_id(18), kt, tauzz_v, ierror)
-   IF (ierror .ne. PRISM_Ok) THEN
-     WRITE (nuout,*)  cl_writ(18), kt   
      abort_message=' Probleme dans prism_put_proto '
      call abort_gcm(modname,abort_message,1)
@@ -419,5 +485,4 @@
      call prism_terminate_proto(ierror)
      IF (ierror .ne. PRISM_Ok) THEN
-       WRITE (nuout,*)  cl_writ(18), kt   
        abort_message=' Probleme dans prism_terminate_proto '
        call abort_gcm(modname,abort_message,1)
