FTN4
      SUBROUTINE VALUE(IARG,ISEC,IOFF),92069-16061 REV. 1912 781027 
      INTEGER IARG(128) 
C 
C 
C*************************************************************
C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  ALL RIGHTS    *
C RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- *
C PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH-  *
C OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.  *
C*************************************************************
C 
C 
C     SOURCE:    92069-18100
C     RELOC:     92069-16060
C 
C 
C************************************************************ 
C 
C***********************************************************************
C   VALUE   RETURNS A DATA ITEM VALUE IN THE IARG ARRAY.
C     IF THE VALUE IS IN THE PART OF QSKIB THAT IS CURRENTLY
C     IN CORE (IN IMA AND IB BUFFERS) THEN THE VALUE IS TRANSFERRED 
C     DIRECTLY FROM IMA STARTING AT POSITION IOFF. IF THE VALUE 
C     IS NOT IN THE PART OF QSKIB CURRENTLY IN CORE, THEN THE 
C     PART OF QSKIB CONTAINING THE VALUE IS READ INTO IMA, AND
C     THE TRANSFER EFFECTED.
C 
C   CALLING PARAMETERS: 
C    IARG  - THE ARRAY IN WHICH THE DATA ITEM VALUE WILL BE RETURNED
C    ISEC  - THE STARTING SECTOR NUMBER OF THE QSKIB BLOCK WHICH
C     CONTAINS  THE VALUE. ISEC RETURNS THE SECTOR OF THE NEXT VALUE. 
C    IOFF  - THE WORD OFFSET OF THE VALUE,FROM THE BEGINNING OF ISEC
C     IOFF RETURNS THE OFFSET OF THE NEXT VALUE 
C 
C     DEFINITION OF SYMBOLS 
C    QSKIB  - THE TRACK CONTAINING DATA ITEM VALUES. EACH VALUE IS
C     PRECEEDED BY ITS WORD LENGTH.(IF THE LENGTH IS NEGATIVE, THE
C     VALUE IS A DUPLICATE KEY ITEM VALUE)
C    IQSEC  - THE NUMBER OF SECTORS OF THIS IN-CORE BUFFER (IMA AND IB
C             BUFFERS ARE LONG ENOUGH FOR SEVEN PHYSICAL DISC SECTORS 
C             WHERE EACH SECTOR IS 128 WORDS LONG)
C    IMA  - THE BUFFER CONTAINING PART OF QSKIB. IF QSKIB IS NO LONGER
C     THAN IBSZ, ALL VALUES ALWAYS REMAIN CORE IN IMA AND THE 
C     VALUES ARE NEVER REALLY IN QSKIB. (NOTE:THE BUFFER CONSISTS OF
C     THE IMA AND IB ARRAYS WHICH MUST ALWAYS BE ADJACENT)
C     TRKNM - THE TRACK NUMBER OF QSKIB 
C       NOTE: THE STARTING SECTOR NUMBER OF THE CURRENT BLOCK OF
C     QSKIB PRESENTLY IN CORE IS CONTAINED IN SECNO 
C***********************************************************************
C 
C 
C 
C 
C 
C ****************** THIS MODULE NEEDS TO BE CHANGED TO DOUBLE ************ 
C ******************            INTEGER                        ************ 
C$$$$$$$$$$$$$$$$$$$ NOVEMBER 3,1978   $$$$$$$$$$$$$$$$$$$$$
      INTEGER INLU,ITTY,ILP,IDCB,JDCB,XEQ 
      INTEGER DBNAM,DBLEV,DSNAM,DINAM,SELECT,SNAM 
      INTEGER DSNUM,DINUM,PARM,LPARM,ECHO,QSERR 
      INTEGER IMA,IB,IBSZ,SECNO,IEND,ISCAN
      LOGICAL BREAK 
      INTEGER IPFLAG,IOFLAG,RMOTE 
      LOGICAL BATCH,XQBCH 
      INTEGER PAGCNT,LNCNT
      INTEGER PAGLEN,COLLIM 
      REAL    RRCNT 
      REAL    SELT,RSEC 
      INTEGER IPTR
      REAL    RCOUNT
      INTEGER S,R3,TRKNM,IDILU
      INTEGER R6
      REAL    ATOTAL
      INTEGER LIST,L,T,U
      INTEGER LEVSTR,LEVLEN 
      INTEGER IBUFF 
      INTEGER SS(7,100) 
C 
      COMMON INLU(145),ITTY(145),ILP(145),IDCB(145),JDCB(144),XEQ(145)
      COMMON DBNAM(10),DBLEV(3),DSNAM(3),DINAM(3),SELECT(6),SNAM(3) 
      COMMON DSNUM,DINUM,PARM(40),LPARM,ECHO,QSERR
      COMMON IMA(37),IB(896),IBSZ,SECNO,IEND,ISCAN
      COMMON BREAK
      COMMON IPFLAG,IOFLAG,RMOTE
      COMMON BATCH,XQBCH
      COMMON PAGCNT,LNCNT 
      COMMON PAGLEN,COLLIM
      COMMON RRCNT
      COMMON SELT(64),RSEC
      COMMON IPTR 
      COMMON RCOUNT 
      COMMON S(15,50),R3,TRKNM,IDILU
      COMMON R6 
      COMMON ATOTAL(6,5)
      COMMON LIST(101,6),L(7),T(5),U(7,5) 
      COMMON LEVSTR(66,5),LEVLEN(5) 
      COMMON IBUFF(2048)
C 
      EQUIVALENCE (S,SS)
C$$$$$$$$$$$$$$$$$$$ NOVEMBER 3,1978   $$$$$$$$$$$$$$$$$$$$$
      INTEGER RC1 
C 
      DATA RC1/1/ 
      DATA IQSEC/7/ 
C 
C     IF BLOCK CONTAINING VALUE NOT IN CORE, READ IT INTO IMA 
      IF (ISEC.EQ.SECNO) GO TO 20 
      CALL EXEC(RC1,IDILU,IMA,IQSEC*128,TRKNM,ISEC) 
      SECNO=ISEC
C  LEN IN WORDS 
20    LEN=IABS(IMA(IOFF)) 
C     MOVE VALUE INTO IARG
      LENALL=LEN+1
      DO 30 MOVE=1,LENALL 
      IARG(MOVE)=IMA(IOFF)
      IOFF = IOFF + 1 
C     IF END OF BUFFER, READ NEXT BLOCK FROM QSKIB
      IF (IOFF.LE.IBSZ) GO TO 30
      ISEC=ISEC+IQSEC 
      CALL EXEC (RC1,IDILU,IMA,IQSEC*128,TRKNM,ISEC)
      IOFF = 1
   30 CONTINUE
      RETURN
      END 
$ 
                                                                                                                                                                                                                                      