* * $Id: epouts.F,v 1.1.1.1 1996/03/08 15:21:44 mclareni Exp $ * * $Log: epouts.F,v $ * Revision 1.1.1.1 1996/03/08 15:21:44 mclareni * Epio * * #include "epio/pilot.h" SUBROUTINE EPOUTS(LUNIT,MODE,NW,IREC,IBUF,IERR) C. C. THIS ROUTINE WRITES ONE LOGICAL RECORD WITH STANDARD LOGICAL RECORD C. HEADER. C. C. INPUT: C. C. LUNIT LOGICAL UNIT NUMBER C. C. MODE =1,2,3 C. 1: TRANSFER DATA AS THEY ARE (BIT STRING) C. 2: PACK DATA BEFORE WRITING, GIVEN AS 16 BIT RIGHT ADJ. C. 3: PACK DATA BEFORE WRITING, GIVEN AS 32 BIT RIGHT ADJ. C. C. NW NO. OF WORDS TO BE WRITTEN. C. FOR MODE=1 IN UNITS, FOR MODE=2 OR =3 IN 16 RESP. 32 BIT C. WORDS,I.E. THE NUMBER OF MACHINE WORDS OCCUPIED. C. C. IREC ARRAY CONTAINING THE USER DATA. DUMMY ARGUMENT FOR MODE=0. C. C. INPUT/OUTPUT: C. C. IBUF USER PROVIDED UNIT BUFFER. MUST NOT BE TOUCHED BY USER. C. C. OUTPUT: C. C. IERR ERROR FLAG. SEE SEPARATE LIST. C. #include "epio/epiocom.inc" DIMENSION IREC(2),IBUF(2),IHEAD(4) DATA NH/4/ C--- GET UNIT NUMBER C--- CHECK WHETHER SAME USER UNIT AS LAST TIME IF(LASTUT.EQ.LUNIT) GOTO 1551 C--- NEW UNIT - GET REF CALL EPUNIT(LUNIT,IERR) IF(IERR.EQ.0) GOTO 1552 GOTO 77777 1551 IERR=0 IF(LREF.NE.0) GOTO 1552 IERR=13 CALL EPERRH(LUNIT,IERR) GOTO 77777 1552 CONTINUE C--- START-1 OF CONTROL WORDS C--- ERROR IF UNIT IS INPUT UNIT IF(LIST(ISTART+16).EQ.2) GOTO 9903 C--- CONSTRUCT STANDARD HEADER IHEAD(2)=LIST(ISTART+5) IHEAD(4)=LIST(ISTART+12)+1 C--- PROCESS CALL EPOUTL(LUNIT,MODE,NH,IHEAD,NW,IREC,IBUF,IERR) 77777 RETURN 9903 CONTINUE C--- UNIT IS INPUT UNIT IERR=17 CALL EPERRH(LUNIT,IERR) GOTO 77777 END