* * $Id: sgeta.F,v 1.2 1996/04/11 14:54:07 cernlib Exp $ * * $Log: sgeta.F,v $ * Revision 1.2 1996/04/11 14:54:07 cernlib * Zserv/pawserv used to be build from two patches; these were put both into this * directory. * The #includes in all files copied from the other directory had to updated. * * Revision 1.1.1.1 1996/03/08 15:44:20 mclareni * Cspack * * #include "cspack/pilot.h" SUBROUTINE SGETA(CHF) * * Transfer a text file to client * #include "hbook/hcmail.inc" #include "cspack/czsock.inc" #include "cspack/czbuff.inc" #include "cspack/czunit.inc" CHARACTER*(*) CHF CHARACTER*8 CHOPT CHARACTER*255 CHLINE CHARACTER*80 CHFILE CHARACTER*80 REMOTE,LOCAL CHARACTER*3077 CHLEN * CHARACTER*2053 CHLEN DIMENSION NCC(1024) INTEGER SSENDSTR DATA NCC/1024*-1/ * * * Open file on server * IOPTV=0 LRECL=255 IMAX = 16320 IF(IPROT.EQ.1) IMAX = 512 LCHF = LENOCC(CHF) LBLNK = INDEX(CHF(1:LCHF),' ') IF(LBLNK.NE.0) THEN CHFILE = CHF(1:LBLNK-1) CHOPT = CHF(LBLNK+1:LCHF) LFILE = LBLNK-1 ELSE CHFILE = CHF(1:LCHF) CHOPT = ' ' LFILE = LCHF ENDIF #if defined(CERNLIB_UNIX) IF(INDEX(CHOPT,'C').EQ.0) CALL CUTOL(CHFILE) #endif #if (defined(CERNLIB_UNIX))&&(!defined(CERNLIB_APOLLO))&&(!defined(CERNLIB_OS9)) OPEN(UNIT=LUNXZI,FILE=CHFILE,STATUS='OLD',IOSTAT=ISTAT) #endif #if defined(CERNLIB_APOLLO)||defined(CERNLIB_OS9) OPEN(UNIT=LUNXZI,FILE=CHFILE,STATUS='READONLY', + IOSTAT=ISTAT) #endif #if defined(CERNLIB_VAXVMS) OPEN(UNIT=LUNXZI,FILE=CHFILE,STATUS='OLD',READONLY,IOSTAT=ISTAT) #endif #if defined(CERNLIB_IBMMVS) CALL SZOPEN(LUNXZI,CHFILE,LRECL,'IF',ISTAT) #endif #if defined(CERNLIB_IBMVM) CHFILE='/'//CHF(1:LFILE) NCH=LENOCC(CHFILE) DO 5 I=1,NCH IF(CHFILE(I:I).EQ.'.')CHFILE(I:I)=' ' 5 CONTINUE CALL FILEINF(IC,'RECFM','U') OPEN(UNIT=LUNXZI,FILE=CHFILE,STATUS='OLD',IOSTAT=ISTAT, + FORM='UNFORMATTED') #endif * * Inform client if file is opened * IF(ISTAT.NE.0)LRECL=0 CHMAIL=' ' WRITE(CHMAIL,'(I10)')LRECL CALL CZPUTA(CHMAIL,ISTAT) IF(ISTAT.NE.0)GOTO 99 IF(LRECL.EQ.0)GOTO 99 * * Check if client has opened his file * CALL CZGETA(CHMAIL,ISTAT) IF(ISTAT.NE.0)GOTO 99 IF(CHMAIL(1:2).NE.'OK')GOTO 99 * * Start transfer * IEND = 0 10 NLINES = 1 NTOT = 0 I1 = 1 ICONT = 0 20 CONTINUE #if defined(CERNLIB_IBMVM) READ(LUNXZI,NUM=NCH,END=50)CHLINE #endif #if !defined(CERNLIB_IBMVM) READ(LUNXZI,'(A)',END=50,ERR=50)CHLINE NCH=LENOCC(CHLINE) #endif * * Do we have room for this record in the current buffer? * IF(I1+NCH-1.GT.IMAX) THEN ICONT = 1 IF(NLINES.LE.1024)NCC(NLINES)=-1 GOTO 30 ENDIF IF(NCH.EQ.0)THEN NCC(NLINES)=0 ELSE NCC(NLINES)=NCH I2=I1+NCH-1 CHBUF(I1:I2)=CHLINE I1=I2+1 NTOT=NTOT+NCH ENDIF IF(I1+NCH-1.GT.IMAX)THEN IF(NLINES.LT.1024)NCC(NLINES+1)=-1 GOTO 30 ENDIF NLINES=NLINES+1 IF(NLINES.LE.1024) GOTO 20 * #if (!defined(CERNLIB_CRAY))&&(!defined(CERNLIB_CONVEX)) 30 WRITE(CHLEN,1000)NTOT,NCC 1000 FORMAT(I5,4I3,255I3,255I3,255I3,255I3) #endif #if defined(CERNLIB_CRAY)||defined(CERNLIB_CONVEX) 30 WRITE(CHLEN(1:5),1000)NTOT 1000 FORMAT(I5) IOFF = 6 JOFF = 1 DO 11 II=1,8 WRITE(CHLEN(IOFF:IOFF+95),'(32I3)') (NCC(JJ),JJ=JOFF,JOFF+31) IOFF = IOFF + 96 JOFF = JOFF + 32 11 CONTINUE #endif NTOTAL = 3077 * NTOTAL = 2053 #if defined(CERNLIB_DECNET) * * DECnet... * IF(IPROT.EQ.1) THEN CALL CZDPTS(CHLEN,NTOTAL,ISTAT) IF(ISTAT.NE.0) GOTO 99 ELSE #endif #if !defined(CERNLIB_IBM)||defined(CERNLIB_TCPSOCK) * * TCP/IP (with socket library) * NBYTES=SSENDSTR(ISKOUT,CHLEN,NTOTAL) #endif #if (defined(CERNLIB_IBM))&&(!defined(CERNLIB_TCPSOCK)) * * TCP/IP on IBM without socket library->PASCAL version of TCPAW * CALL SSEND(ISKOUT,CHLEN,NTOTAL,NBYTES) IF(NBYTES.LT.NTOTAL) GOTO 99 #endif #if defined(CERNLIB_DECNET) ENDIF #endif CALL CZPUTC(NTOT,ISTAT) * IF(ISTAT.NE.0)GOTO 99 * * Still a record in the current buffer? * IF(ICONT.NE.0) THEN ICONT = 0 NCC(1) = NCH CHBUF(1:NCH) = CHLINE I1 = NCH + 1 NTOT = NCH NLINES = 2 GOTO 20 ENDIF IF(IEND.EQ.0)GOTO 10 * CLOSE(LUNXZI) GOTO 99 * 50 IEND=1 NCC(NLINES)=-2 GOTO 30 * 99 END