FTN SUBROUTINE FIELD(LST,LNDX,EMSK,IBUF,RESULT,LEN),92069-16061 REV. &1912 781027 INTEGER LST(101,6),LNDX,EMSK,IBUF(2048),RESULT(66),LEN C C C***************************************************************** C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS RESERVED C NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, REPRODUCED, OR C TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH OUT THE PRIOR C WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. C****************************************************************** C C C SOURCE: 92069-18105 C RELOC: 92069-16060 C C C****************************************************************: C C C C C C ABSTRACT: C C FIELD GETS A VALUE FROM THE DBMS BUFFER ACCORDING THE INFORMATION C IN THE LIST ARRAY. THE ITEM VALUE IS CONVERTED TO ASCII AND C PLACED IN THE RESULT BUFFER. ASCII FIELDS ARE TRUNCATED TO C THE COLLUMN LIMIT SO THEY WON'T OVER RUN THE BUFFER. REALS ARE C IN G13.5 FORMAT. INTEGERS ARE ZONED WHENEVER AN EDIT MASK IS C ASSOCITED WITH THE REPORT STATEMENT. OTHERWISE INTEGERS HAVE C THEIR SIGN IN THE LEFTMOST CHARACTER WHEN THE INTEGER IS C NEGETIVE. C C CALLING SEQUENCE: C C CALL FIELD(LST,LNDX,EMSK,IBUFF,RESULT,LEN) C C WHERE: C C LST C IS THE LIST ARRAY IN COMMON C C LNDX C IS THE INDEX IN TO THE LIST ARRAY - THIS VALUE C USUALLY IS SS(7,N) C C EMSK C IS THE EDIT MASK NUMBER C C IBUF C IS THE DBMS BUFFER C C RESULT C IS THE ASCII VALUE C C LEN C IS THE LENGTH OF THE STRING C C ON EXIT: C C RESULT - CONTAINS THE ASCII VALUE C LEN - LENGTH OF THE ASCII VALUE IN BYTES C C C C C INTEGER INTGR,R INTEGER IOFF,IOFF2,INT,NOZ,N 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 $$$$$$$$$$$$$$$$$$$$$ DATA INTGR/111B/ DATA R/122B/ C C C C C C C C C C BEGIN C IF(LNDX .EQ. 0) GOTO 30 C C BLANK THE RESULT BUFFER C CALL SFILL(RESULT,1,COLLIM,40B) C C GET THE LENGTH OF THE ITEM VALUE IN BYTES C LEN = LST(LNDX,3) IF(LEN .GT. COLLIM) LEN = COLLIM C C GET THE OFFSET INTO THE DBMS BUFFER C IOFF = LST(LNDX,5) IOFF2 = IOFF + LEN - 1 C C GET THE ITEM TYPE C ITYPE = LST(LNDX,2) C C PROCESS INTEGERS C IF(ITYPE .NE. INTGR) GOTO 10 CALL SMOVE(IBUF,IOFF,IOFF2,INT,1) CALL CITA(INT,RESULT) C C IF THERE IS NOT AN EDIT MASK THEN LEAVE THE SIGN ON THE LEFT C LEN = 6 IF(EMSK .EQ. 0) GOTO 30 C C OTHERWISE ZONE THE LAST CHARACTER FOR THE "SEDIT" ROUTINE C CALL SZONE(RESULT,1,4,NOZ) C C OVERLAY THE SIGN WITH THE REST OF THE NUMBER, C BE SURE TO OVERLAY THE LAST CHARACTER WITH A BLANK C FROM THE SEVENTH POSITION C CALL SMOVE(RESULT,2,7,RESULT,1) CALL SZONE(RESULT,5,NOZ,N) LEN = 5 GOTO 30 C C PROCESS REALS C 10 CONTINUE IF(ITYPE .NE. R) GOTO 20 CALL SMOVE(IBUF,IOFF,IOFF2,REAL,1) CALL CRTA(REAL,RESULT) LEN = 13 GOTO 30 C C ASCII C 20 CONTINUE CALL SMOVE(IBUF,IOFF,IOFF2,RESULT,1) C C EXIT C 30 CONTINUE RETURN END