*IF DEF,C99_1A                                                             PDEFMW.2      

      SUBROUTINE PIPE_Define_Model_Write ( cdfwrite, cdpwrite, kinfo)       1,1PDEFMW.3      
C****                                                                      PDEFMW.4      
C               *****************************                              PDEFMW.5      
C               * OASIS ROUTINE  -  LEVEL C *                              PDEFMW.6      
C               * -------------     ------- *                              PDEFMW.7      
C               *****************************                              PDEFMW.8      
C                                                                          PDEFMW.9      
C**** *PIPE_Define*  - Initialize coupled mode communication for           PDEFMW.10     
c                      coupler                                             PDEFMW.11     
C                                                                          PDEFMW.12     
C     Purpose:                                                             PDEFMW.13     
C     -------                                                              PDEFMW.14     
C     Initialize coupler - models communication using named                PDEFMW.15     
c                          pipes(fifo).                                    PDEFMW.16     
C                                                                          PDEFMW.17     
C**   Interface:                                                           PDEFMW.18     
C     ---------                                                            PDEFMW.19     
C       *CALL*  *PIPE_Define (cdfwrite, cdpwrite, kinfo)*                  PDEFMW.20     
C                                                                          PDEFMW.21     
C     Input:                                                               PDEFMW.22     
C     -----                                                                PDEFMW.23     
C     cdfwrite : alias filename for write pipe (char string)               PDEFMW.24     
C     cdpwrite : symbolic writing pipe name (char string)                  PDEFMW.25     
C                                                                          PDEFMW.26     
C     Output:                                                              PDEFMW.27     
C     ------                                                               PDEFMW.28     
C                kinfo    : error status (integer)                         PDEFMW.29     
C                                                                          PDEFMW.30     
C     Workspace:                                                           PDEFMW.31     
C     ---------                                                            PDEFMW.32     
C     None                                                                 PDEFMW.33     
C                                                                          PDEFMW.34     
C     Externals:                                                           PDEFMW.35     
C     ---------                                                            PDEFMW.36     
C     assign, empty, mknod                                                 PDEFMW.37     
C                                                                          PDEFMW.38     
C     Reference:                                                           PDEFMW.39     
C     ---------                                                            PDEFMW.40     
C     See OASIS manual (1995)                                              PDEFMW.41     
C                                                                          PDEFMW.42     
C     History:                                                             PDEFMW.43     
C     -------                                                              PDEFMW.44     
C       Version   Programmer     Date      Description                     PDEFMW.45     
C       -------   ----------     ----      -----------                     PDEFMW.46     
C       2.0       L. Terray      95/09/01  created                         PDEFMW.47     
C                                                                          PDEFMW.48     
C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%      PDEFMW.49     
C                                                                          PDEFMW.50     
C                                                                          PDEFMW.51     
C* ---------------------------- Argument declarations ---------------      PDEFMW.52     
C                                                                          PDEFMW.53     
      CHARACTER*8 cdfwrite                                                 PDEFMW.54     
      CHARACTER*8 cdpwrite                                                 PDEFMW.55     
C                                                                          PDEFMW.56     
C* ---------------------------- Local declarations ------------------      PDEFMW.57     
C                                                                          PDEFMW.58     
      CHARACTER*80 clcmd                                                   PDEFMW.59     
      INTEGER mknod                                                        PDEFMW.60     
      integer nulou                                                        PDEFMW.61     
      data nulou /6/                                                       PDEFMW.62     
C                                                                          PDEFMW.63     
C* ---------------------------- Poema verses ------------------------      PDEFMW.64     
C                                                                          PDEFMW.65     
C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%      PDEFMW.66     
C                                                                          PDEFMW.67     
C*    1. Initializations                                                   PDEFMW.68     
C        ---------------                                                   PDEFMW.69     
C                                                                          PDEFMW.70     
                                                                           PDEFMW.71     
C                                                                          PDEFMW.72     
C* Zeroes error codes                                                      PDEFMW.73     
C                                                                          PDEFMW.74     
      ierror = 0                                                           PDEFMW.75     
      icumul = 0                                                           PDEFMW.76     
C                                                                          PDEFMW.77     
C                                                                          PDEFMW.78     
C*    2. Create pipes to exchange fields coupler and remote models         PDEFMW.79     
C        ---------------------------------------------------------         PDEFMW.80     
C                                                                          PDEFMW.81     
C                                                                          PDEFMW.82     
C* Assign business for writing                                             PDEFMW.83     
C                                                                          PDEFMW.84     
      WRITE (UNIT = clcmd,FMT ='                                           PDEFMW.85     
     $  (''assign -s u -a '',A8,                                           PDEFMW.86     
     $  '' f:'',A8 )') cdpwrite, cdfwrite                                  PDEFMW.87     
      CALL assign(clcmd, ierror)                                           PDEFMW.88     
      CALL empty(clcmd,80)                                                 PDEFMW.89     
C                                                                          PDEFMW.90     
C* Find error if any                                                       PDEFMW.91     
C                                                                          PDEFMW.92     
      IF (ierror .EQ. 0) THEN                                              PDEFMW.93     
        write(nulou,*) 'Assign command done for pipe file',                PDEFMW.94     
     &    cdpwrite                                                         PDEFMW.95     
      ELSE                                                                 PDEFMW.96     
        write(nulou,*)'Problem with assign command for pipe file',         PDEFMW.97     
     $    cdpwrite                                                         PDEFMW.98     
        write(nulou,*) 'The error code number is', ierror                  PDEFMW.99     
        icumul = icumul + ierror                                           PDEFMW.100    
      ENDIF                                                                PDEFMW.101    
C                                                                          PDEFMW.102    
C* Get error code                                                          PDEFMW.103    
C                                                                          PDEFMW.104    
      IF (icumul .NE. 0) kinfo = icumul                                    PDEFMW.105    
C                                                                          PDEFMW.106    
C* Mknod business                                                          PDEFMW.107    
C                                                                          PDEFMW.108    
C ---> mode 4480: named pipe with rw permission for user                   PDEFMW.109    
C      decimal value of octal 0010600 (see man mknod)                      PDEFMW.110    
C                                                                          PDEFMW.111    
C* Writing pipes                                                           PDEFMW.112    
C                                                                          PDEFMW.113    
      ierror = mknod (cdpwrite, 4480, 0)                                   PDEFMW.114    
C                                                                          PDEFMW.115    
C* Find error if any                                                       PDEFMW.116    
C                                                                          PDEFMW.117    
      IF (ierror .EQ. 0) THEN                                              PDEFMW.118    
        write(nulou,*) 'Mknod command done for pipe', cdpwrite             PDEFMW.119    
      ELSE                                                                 PDEFMW.120    
                                                                           PDEFMW.121    
        write(nulou,*) 'Mknod command useless for pipe', cdpwrite          PDEFMW.122    
        write(nulou,*) 'File exists. The return code number is',           PDEFMW.123    
     &    ierror                                                           PDEFMW.124    
      ENDIF                                                                PDEFMW.125    
C                                                                          PDEFMW.126    
C                                                                          PDEFMW.127    
C*    3. End of routine                                                    PDEFMW.128    
C        --------------                                                    PDEFMW.129    
C                                                                          PDEFMW.130    
                                                                           PDEFMW.131    
      RETURN                                                               PDEFMW.132    
      END                                                                  PDEFMW.133    
                                                                           PDEFMW.134    
*ENDIF                                                                     PDEFMW.135