*
* $Id$
*
* $Log$
* Revision 1.1  1996/02/26 17:16:22  mclareni
* Initial revision
*
*
#include "comis/pilot.h"
*CMZ :  1.12/05 20/03/92  16.04.18  by  Rene Brun
*-- Author : V.Berezhnoi
      INTEGER FUNCTION CSKIOV(CHIOV,JCHIOV,LCHIOV)
***--------------------------------------------
*    it is interp. command input/output variable
***--------------------------------------------
*IOV IT
      CHARACTER *(*)CHIOV
#include "comis/cspar.inc"
#include "comis/mdpool.inc"
#include "comis/comis.inc"
#include "comis/cspnts.inc"
#include "comis/cssysd.inc"
#include "comis/csfmt.inc"
#include "comis/csfres.inc"
#include "comis/csdpvs.inc"
      INTEGER IEQD(6),IEQD1(4),IEQD2(2),IDPRS(2)
      EQUIVALENCE (IEQD,D),(IEQD1,D1),(IEQD2,D2),(IDPRS,DCSRES)
      INTEGER CSIOIV,CSIORV,CSIODV,CSIOXV,CSIOCV
      CSKIOV=1
  151 IT=KD1(IPC)
      IPC=IPC+2
      IF(IFMT.EQ.-1)THEN
        IF(KEYRW.EQ.2)THEN
*         unformatted output
          IF(IT.EQ.3)THEN
            J=MIWORD(IA(ITA)+1)
            LENV=MOD(MIWORD(IA(ITA)),KON3)
            L=(LENV+3)/NBYTPW
            CALL CSUBAD(L)
            I=IUBS+LULIST
            J1=MJCHAR(IQ(I))
            CALL CCOPYS(J,J1,LENV)
            LULIST=LULIST+L
          ELSEIF(IT.EQ.5 .OR. IT.EQ.7)THEN
            JW=IA(ITA)
            CALL CSUBAD(2)
            I=IUBS+LULIST
            IQ(I)=IA(JW-JTOPA)
            IQ(I+1)=IA(JW-JTOPA+1)
            LULIST=LULIST+2
          ELSE
            JW=IA(ITA)
            CALL CSUBAD(1)
            I=IUBS+LULIST
            IQ(I)=IA(JW-JTOPA)
            LULIST=LULIST+1
          ENDIF
        ELSE
*         unformatted input
          I=1
          IF(IT.EQ.3)THEN
            J=MIWORD(IA(ITA)+1)
#if defined(CERNLIB_APOLLO)
            J=RSHFT(J,2)
#endif
#if defined(CERNLIB_UNIX)
            J=ISHFT(J,-2)
#endif
#if defined(CERNLIB_VAX)||defined(CERNLIB_IBM)
            J=J/NBYTPW
#endif
            LENV=MOD(MIWORD(IA(ITA)),KON3)
            L=(LENV+3)/NBYTPW
          ELSEIF(IT.EQ.5 .OR. IT.EQ.7)THEN
            J=IA(ITA)
            L=2
          ELSE
            J=IA(ITA)
            L=1
          ENDIF
          IF(IUBTOP.GT.2)THEN
            JJ=IUBUF(IUBTOP-2)+IUBUF(IUBTOP-1)
            IF(JJ.EQ.J)THEN
              IUBUF(IUBTOP-1)=IUBUF(IUBTOP-1)+L
            ELSE
              IF(IUBTOP+2.GT.256)THEN
                IFMTST=7
                I=0
       PRINT *,' CSUI: too long unformatted input list(>128)'
              ELSE
                IUBUF(IUBTOP)=J
                IUBUF(IUBTOP+1)=L
                IUBTOP=IUBTOP+2
              ENDIF
            ENDIF
          ELSE
            IUBUF(IUBTOP)=J
            IUBUF(IUBTOP+1)=L
            IUBTOP=IUBTOP+2
          ENDIF
          LULIST=LULIST+L
        ENDIF
        GO TO 1516
      ENDIF
      GO TO (1511,1512,1513,1511,1515,1511,1517),IT
C     I/O INTEGER VAR.
 1511 JW=IA(ITA)
      IIOV=IA(JW-JTOPA)
      I=CSIOIV(IIOV)
      IF (KEYRW.EQ.1) IA(JW-JTOPA)=IIOV
      GO TO 1516
C     I/O REAL VAR.
 1512 JW=IA(ITA)
      RIOV=RA(JW-JTOPA)
      I=CSIORV(RIOV)
      IF (KEYRW.EQ.1) RA(JW-JTOPA)=RIOV
      GO TO 1516
C     I/O CHAR VAR.
 1513 J=MIWORD(IA(ITA)+1)
      LENV=MOD(MIWORD(IA(ITA)),KON3)
      L=MIN0(LENV,LCHIOV)
      CALL CCOPYS(J,JCHIOV,L)
      I=CSIOCV(CHIOV(1:L))
      IF (KEYRW.EQ.1) CALL CCOPYS(JCHIOV,J,L)
      GO TO 1516
C     I/O DOUBLE PR. VAR.
 1515 JW=IA(ITA)
      IEQD(1)=IA(JW-JTOPA)
      IEQD(2)=IA(JW-JTOPA+1)
      I=CSIODV(D)
      IF (KEYRW.EQ.1) THEN
        IA(JW-JTOPA)  =IEQD(1)
        IA(JW-JTOPA+1)=IEQD(2)
      END IF
      GO TO 1516
C     I/O complex VAR.
 1517 JW=IA(ITA)
      IEQD(1)=IA(JW-JTOPA)
      IEQD(2)=IA(JW-JTOPA+1)
      I=CSIOXV(CX)
      IF (KEYRW.EQ.1) THEN
        IA(JW-JTOPA)  =IEQD(1)
        IA(JW-JTOPA+1)=IEQD(2)
      END IF
 1516 ITA=ITA-1
      IF(I.EQ.0)THEN
        IF(JIOSTA.NE.0)IA(JIOSTA-JTOPA)=IFMTST
        IF(IFMTST.LT.0 . AND. LIOEND.NE.-1)THEN
          IPC=LIOEND
        ELSEIF(LIOERR.NE.-1)THEN
          IPC=LIOERR
        ELSE
***          GO TO 704
          CSKIOV=-4
        ENDIF
      ENDIF
***      GO TO 999
      END
