*IF DEF,C99_1A                                                             PDEFMR.2      

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