* * $Id: epupdh.F,v 1.1.1.1 1996/03/08 15:21:44 mclareni Exp $ * * $Log: epupdh.F,v $ * Revision 1.1.1.1 1996/03/08 15:21:44 mclareni * Epio * * #include "epio/pilot.h" SUBROUTINE EPUPDH(LUNIT,NH,IH,IBUF,IERR) C. C. UPDATES THE (OPTIONAL) USER PORTION OF THE PHYSICAL C. BLOCK HEADER. C. THE NECESSARY SPACE FOR THIS OPTIONAL PORTION MUST HAVE C. BEEN RESERVED BY THE USER THROUGH A FOREGOING CALL C. TO EPADDH (TYPICALLY ONCE AT THE START OF THE JOB). C. WHEREAS A CALL TO EPADDH CAUSES THE EXISTING (IF C. ANY) BLOCK TO BE WRITTEN OUT, EPUPDH DOES NOT HAVE THIS C. EFFECT. C. C. INPUT: C C. LUNIT LOGICAL UNIT C. C. NH NO. OF USER WORDS IN HEADER TO BE UPDATED. C. NH IS CUT AT THE ACTUAL NO. OF EXTRA USER WORDS C. AVAILABLE IN THE PHYSICAL BLOCK HEADER. C. C. IH ARRAY CONTAINING THE NEW VALUES. C. WORDS 1..NH OF IH WILL REPLACE THE CURRENT WORDS C. 1..NH OF THE USER PORTION IN THE HEADER. C. Important: if in 32 p.h. mode, user words must be converted C. to IBM format (integer or floating) by the user beforehand C. C. IBUF UNIT BUFFER C. C. IERR ERROR CONDITION - SEE SEPERATE LIST C. #include "epio/epiocom.inc" DIMENSION IH(2),IBUF(2) 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--- IGNORE IF NO OUTPUT UNIT, OR UNIT NOT YET USED IF(LIST(ISTART+16).EQ.2.OR.LIST(ISTART+14).EQ.0) GOTO 77777 IF(LIST(ISTART+29).EQ.0) THEN *--- 16 bit p.h. K=MIN(LIST(ISTART+7)-LIST(6),NH) CALL BUN16W(IH,1,IBUF,LIST(6)+1,K) ELSE K=MIN(LIST(ISTART+7)/2-LIST(6),NH) CALL BUN32W(IH,1,IBUF,LIST(6)+1,K) ENDIF 77777 RETURN END