FTN 
      PROGRAM ENTY2(5,90),92069-16015 REV.2026 800124 
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 WITHOUT THE PRIOR
C WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. 
C****************************************************************** 
C 
C 
C     SOURCE:    92069-18024
C     RELOC:     92069-16015
C 
C     ALTERED:   JANUARY 22, 1980 FOR SORTED CHAINS FEATURE - CEJ 
C 
C 
C****************************************************************:
C 
C 
C 
C "ENTRY:" COMMAND PROCESSOR
C 
C ABSTRACT: 
C 
C THE "ENTRY:" PROCESSOR WILL PROCESS ALL THE ITEM NAMES IN A 
C DATA SET ALLOWING A ITEM NAME TO BE USED ONLY ONCE PER DATA 
C SET.  IT BUILDS THE RECORD DEFINITION TABLE AND THE PATH TABLE
C IN TEMPORARY BUFFERS CALLED "RDEF" AND "PTHTB".  IT DETERMINES
C THE SIZE OF THE MEDIA RECORD AND THE DATA RECORD, AND PUTS THIS 
C IN THE SET TABLE.  BEFORE LOADING THE "CAPACITY:" PROCESSOR, THIS 
C SEGMENT WILL INSURE THAT ALL MASTER DATA SETS HAVE A PATH ITEM, 
C THAT ALL DATA SETS HAVE AT LEAST 1 ITEM, AND AUTOMATIC MASTERS
C HAVE ONLY 1 ITEM WHICH MUST BE A PATH ITEM. 
C 
C 
C 
C 
C 
C 
      INTEGER CAPAC(3)
      INTEGER CAPC(4) 
      INTEGER PTHCT,FLDCT,SIIDX,SITNM 
C$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ JANUARY 23,1980
C 
C 
C                      CONSTANTS IN INTEGER 
C 
C 
C 
      INTEGER AUTO,BADC,BASE,BEGIN,BLANK,BLKCD, 
     1       CAP,CNTRL,COLON,COMMA,CRDLM, 
     2       DATA,DETAIL,DOLLR,DOT, 
     3       ELSE,END,ENTY,EQUAL,ERR, 
     4       FIELD, 
     5       ICODE,INTGR,ITM, 
     6       LEVL,LPARN,LST,
     7       MANU,MXCAP,MAXRC,
     8       MXELE,MXENT,MXITM,MXLEV,MXSTR, 
     9       NAM,RSRV,ASET,AUSET,MSET,MASET,DSET,DESET,NM,NFONX,NFO,
     C       NOLST,NORES,NOTAB, 
     1       OPSET, 
     2       PMAX,
     3       ROOTR,RPARN, 
     4       SEMI,SET,SMAX, 
     5       UPPER
C 
C 
C 
C 
C                      DATA BASE OFFSETS
C 
C 
C 
      INTEGER DBNAM,DBSCD,DBCRN,DBDSN,DBRSN,DBICT,DBITP,
     1       DBSCT,DBSTP,DBSOP,DBFRP,DBLMD,DBLVL, 
     2       DBLVE
C 
C 
C 
C                     ITEM TABLE OFFSETS
C 
C 
C 
      INTEGER ITNME,ITINF,ITTYP,ITSCT,
     1       ITSNO,ITECT,ITLNG,ITMSZ,ITMST
C 
C 
C                     DATA SET TABLE OFFSETS
C 
C 
      INTEGER DSNME,DSCRN,DSTYP,DSMDL,DSDRL,DSFCT,DSPCT,
     1       DSITP,DSCAP,DSCCT,DSPAN,SETSZ
C 
C 
C 
C               OFFSET TO OVERHEAD RECORD 
C 
C 
C 
      INTEGER OVRRC,OVRTL,OVFRL,OVDCB,OVREC 
C 
C 
C 
C              ERROR MESSAGES 
C 
C 
      INTEGER ILCTR,ILCRN,ILSEC,XBEGN,XLEV, 
     1       DUPIT,ITLIM,ILITP,FLDER,ILXTP, 
     2       ILWR,ILTRM,NAMX,DUPST,STLIM, 
     3       ENTYX,NOITM,BDSET,BDKEY,DUPHS, 
     4       NOPTH,AERR,RCLIM,CAPX,ILCAP, 
     5       EMPTY,MXERR,EOF,NOSEG,NOMEM, 
     6       DUPLV,ILNAM,ILNMR,LVDEF,ILSEP, 
     7       ILRD,ILRNG,SETX,IGNSC,INMX,
     8       PTDUP,DBKEY,ENDX,PDEFC,SIMPT,
     9       BDCNT,RTERR,GOODS,GOODR,BADS,
     C       BADR,ABORT,OPNER,XCNTR,ILLVN,
     1       SRCH2,UEND,XITM,ELERR,ROTER, 
     2       UNITM,IOAIN,IOAOT,UNRDL,UNWRL,IOERR,ILOPT, 
     3       ILLSC,MORIT,ILPTH,DEFIT, 
     4       ILSRT,SIMPS,UNDST
C 
C 
C                 VARIABLES 
C 
C 
C 
      INTEGER CARD,CHAR,CODE,CRDPR
      REAL CPACK
      INTEGER DSEC,DCRN 
      INTEGER ENTL,ERROR
      LOGICAL NMFLG 
      INTEGER FWAM
      INTEGER GGERR 
      INTEGER ICNT,IDCB,INDX
      INTEGER INFPT,INFO,IGLOB,INPUT,ITMTB
      INTEGER KPACK 
      INTEGER LDCB,LGLOB,LIST,LWAM
      INTEGER MEDIA 
      INTEGER NPACK,NSETS 
      INTEGER OVRHD 
      INTEGER PTHTB 
      INTEGER RDEF,RESNO,RFILE,RINDX
      INTEGER SCNT,SETTB,SINDX,SORTI,SORTS,STYPE
      INTEGER TYPE,PRGFLG 
C 
C 
C    EXTERNAL REFERENCES
C 
C 
      INTEGER ROOTA 
C 
C                      CONSTANTS IN COMMON
C 
C 
C 
      COMMON/CONST/ AUTO,BADC,BASE,BEGIN,BLANK,BLKCD, 
     1       CAP,CNTRL,COLON,COMMA,CRDLM, 
     2       DATA,DETAIL,DOLLR,DOT, 
     3       ELSE,END,ENTY,EQUAL,ERR, 
     4       FIELD, 
     5       ICODE,INTGR,ITM, 
     6       LEVL,LPARN,LST,
     7       MANU,MXCAP(2),MAXRC, 
     8       MXELE,MXENT,MXITM,MXLEV,MXSTR, 
     9       NAM,RSRV,ASET,AUSET,MSET,MASET,DSET,DESET,NM,NFONX(10),
     C       NFO(10), 
     C       NOLST,NORES,NOTAB, 
     1       OPSET, 
     2       PMAX,
     3       ROOTR,RPARN, 
     4       SEMI,SET,SMAX, 
     5       UPPER
C 
C 
C 
C 
C                      DATA BASE OFFSETS
C 
C 
C 
      COMMON/DBCB/ DBNAM,DBSCD,DBCRN,DBDSN,DBRSN,DBICT,DBITP, 
     1       DBSCT,DBSTP,DBSOP,DBFRP,DBLMD,DBLVL, 
     2       DBLVE
C 
C 
C 
C                     ITEM TABLE OFFSETS
C 
C 
C 
      COMMON/ITCB/ ITNME,ITINF,ITTYP,ITSCT, 
     1       ITSNO,ITECT,ITLNG,ITMSZ,ITMST
C 
C 
C                     DATA SET TABLE OFFSETS
C 
C 
      COMMON/DSCB/ DSNME,DSCRN,DSTYP,DSMDL,DSDRL,DSFCT,DSPCT, 
     1       DSITP,DSCAP,DSCCT,DSPAN,SETSZ
C 
C 
C 
C               OFFSET TO OVERHEAD RECORD 
C 
C 
C 
      COMMON /OVCB/OVRRC,OVRTL,OVFRL,OVDCB,OVREC
C 
C 
C 
C              ERROR MESSAGES 
C 
C 
      COMMON/ERRM/ ILCTR,ILCRN,ILSEC,XBEGN,XLEV,
     1       DUPIT,ITLIM,ILITP,FLDER,ILXTP, 
     2       ILWR,ILTRM,NAMX,DUPST,STLIM, 
     3       ENTYX,NOITM,BDSET,BDKEY,DUPHS, 
     4       NOPTH,AERR,RCLIM,CAPX,ILCAP, 
     5       EMPTY,MXERR,EOF,NOSEG,NOMEM, 
     6       DUPLV,ILNAM,ILNMR,LVDEF,ILSEP, 
     7       ILRD,ILRNG,SETX,IGNSC,INMX,
     8       PTDUP,DBKEY,ENDX,PDEFC,SIMPT,
     9       BDCNT,RTERR,GOODS,GOODR,BADS,
     C       BADR,ABORT,OPNER,XCNTR,ILLVN,
     1       SRCH2,UEND,XITM,ELERR,ROTER, 
     2       UNITM,IOAIN,IOAOT,UNRDL,UNWRL,IOERR,ILOPT, 
     3       ILLSC,MORIT,ILPTH,DEFIT, 
     4       ILSRT,SIMPS,UNDST
C 
C 
C                 VARIABLES 
C 
C 
C 
      COMMON// CARD(36),CHAR,CODE,CPACK(50),CRDPR 
      COMMON DSEC,DCRN
      COMMON ENTL,ERROR 
      COMMON NMFLG
      COMMON FWAM 
      COMMON GGERR
      COMMON ICNT,IDCB(144),INDX
      COMMON INFPT,INFO(6),IGLOB(10),INPUT,ITMTB
      COMMON KPACK(50)
      COMMON LDCB(144),LGLOB,LIST,LWAM
      COMMON MEDIA
      COMMON NPACK(50),NSETS(50)
      COMMON OVRHD
      COMMON PTHTB(32)
      COMMON RDEF(64),RESNO,RFILE(3),RINDX
      COMMON SCNT,SETTB,SINDX,SORTI(255),SORTS(50),STYPE
      COMMON TYPE,PRGFLG
C 
C 
C    EXTERNAL REFERENCES
C 
C 
      EXTERNAL ROOTA
C$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ JANUARY 23,1980
C CHANGED COMMON TO ADD ILSRT,SIMPS,UNDST AND INCREASE SIZE OF PTHTB
      DATA CAPAC/2HCA,2HPC,2H2 /
      DATA CAPC/2HCA,2HPA,2HCI,2HTY/
C 
C 
C INITIALIZE POINTERS 
C 
C FLDCT IS THE INDEX INTO THE RECORD DEFINITION TABLE BEING 
C      BUILT IN A TEMPORARY BUFFER
C 
C ENTL IS THE LENGTH OF ALL THE ITEMS IN THIS SET 
C 
C PTHCT IS THE NUMBER OF PATHS IN THIS SET.  IT IS ALSO USED
C      AS A WORD POINTER INTO THE TEMPOARAY PATH TABLE. 
C 
C RDEF IS THE TEMPORARY RECORD DEFINITION TABLE 
C 
C PTHTB IS THE TEMPORARY PATH TABLE 
C 
C 
      IF (RESNO .NE. ENTY) GOTO 7010
      FLDCT = 1 
      IERR = 0
      ENTL = 0
      PTHCT = 0 
      SINDX = SCNT*SETSZ+SETTB
C 
      DO 5 I = 1,(MXENT+1)/2
5     RDEF(I) = 0 
C 
      DO 6 I=1,PMAX*2 
6     PTHTB(I) = 0
C 
C 
C MEDIA IS THE LENGTH OF THE MEDIA RECORD FOR THIS SET. 
C THE FIXED MEDIA RECORD OVERHEAD FOR DETAILS IS 3, 
C FOR  MASTERS IT IS 5
C 
      MEDIA = 3 
      IF (STYPE .NE. DETAIL) MEDIA = 5
C 
C GET THE ITEM NAME TURNING OFF THE CHECK FOR RESERVE WORDS 
C 
10    CONTINUE
      CALL NWITM
C 
C STOP LOOP ON SEMICOLON, "CAPACITY:", OR WHEN MAXIMUM
C NUMBER OF ITEMS IS REACHED. 
C 
20    CONTINUE
      IF (TYPE .EQ. SEMI) GOTO 70 
      IF (RESNO .EQ. CAP) GOTO 80 
      IF(FLDCT .GT. MXENT) GOTO 7020
C 
C PROCESS THE ITEM NAME 
C 
      IERR = 0
      CALL GITEM (INDX,INUM,IERR) 
      IF(IERR .NE. 0) GOTO 60 
C 
C IS THERE A PATH?
C     GET THE ITEM TURNING OFF THE CHECK FOR RESERVED WORDS.
C     "NWITM" RETURNS THE SAME VALUES AS "GGLOB". 
C 
      CALL NWITM
      IF ( (TYPE .NE. SEMI) .AND. (TYPE .NE. COMMA) ) GOTO 25 
      IF(STYPE .EQ. AUTO) 7070,45 
C 
C CHECK TO SEE IF THIS IS A PATH ITEM. A PATH WILL BE ENCLOSED
C IN PARENTHESIS. 
C     "NWITM" RETURNS THE SAME VALUES AS "GGLOB" BUT IT DOES
C      NOT CHECK FOR RESERVE WORDS.  THIS ALLOWS ANY ITEM TO
C      BE A PATH ITEM.
C 
25    CONTINUE
      IF (TYPE .NE. LPARN) GOTO 7030
C 
C MAKE SURE A NAME OR A NUMBER FOLLOWS. 
C 
      CALL NWITM
      IF ((TYPE .NE. NAM) .AND. (TYPE .NE. ICODE)) GOTO 7030
C 
C VERIFY PATH ITEM IS NOT AN ARRAY
C 
      CALL RSGET (INDX+ITECT,I) 
      IF(I .EQ. 1) GOTO 27
C 
C OUTPUT "PATH ITEM MUST BE SIMPLE" 
C 
      IERR = -1 
      CALL EMESS(SIMPT) 
      GOTO 35 
C 
C PROCESS THIS PATH ACCORDING TO SET TYPE 
C 
27    CONTINUE
      IF(STYPE .NE. DETAIL) GOTO 30 
      CALL DPTH(INUM,INDX,PTHCT,IERR) 
C 
C CHECK TO SEE IF THIS PATH IS SORTED 
C 
35    CONTINUE
      CALL GGLOB
      IF (TYPE .NE. LPARN) GOTO 37
C 
C PROCESS SORT ITEM 
C 
      CALL NWITM
      CALL STITM(INUM,PTHCT,IERR) 
C 
C VERIFY RIGHT PARENTHESIS
C 
      CALL GGLOB
      IF (TYPE .NE. RPARN) GOTO 7030
      GOTO 36 
C 
C 
C 
30    CONTINUE
      CALL MPTH(INUM,PTHCT,IERR)
C 
C VERIFY RIGHT PAREN
C 
36    CONTINUE
      CALL GGLOB
37    CONTINUE
      IF(TYPE .NE. RPARN) GOTO 7030 
C 
C VERIFY COMMA OR SEMICOLON 
C 
      CALL GGLOB
      IF ( (TYPE .NE. COMMA) .AND. (TYPE .NE. SEMI) ) GOTO 7080 
C 
C IF NO ERROR 
C   THEN PUT VALUES IN TABLES 
C   IF THE SET IS A DETAIL, INCREMENT THE PATH COUNT
C 
      IF (IERR .LT. 0) GOTO 60
      IF (STYPE .EQ. DETAIL) PTHCT = PTHCT+1
C 
C UPDATE MEDIA RECORD LENGTH
C 
      IF (STYPE .NE. DETAIL) GOTO 42
      MEDIA = MEDIA + 4 
      GOTO 45 
C 
C GET MEDIA FOR MASTER
C 
42    CONTINUE
      MEDIA = MEDIA + PTHCT*6 
C 
C PUT ITEM NUMBER IN RECORD DEFINITION TABLE
C CHECK TO BE SURE THIS ITEM HAS NOT ALREADY BEEN DEFINED IN THIS SET 
C 
45    CONTINUE
      IF (FLDCT .EQ. 1) GO TO 47
      DO 46 I = 1,FLDCT-1 
      CALL SGET(RDEF,I,ICHK)
      IF(ICHK .EQ. INUM) GOTO 7040
46    CONTINUE
47    CONTINUE
C 
C PUT THE ENTRY INTO THE RECORD DEFINITION TABLE
C 
      CALL SPUT(RDEF,FLDCT,INUM)
      FLDCT = FLDCT + 1 
C 
C UPDATE ENTRY LENGTH 
C 
      ENTL = ENTL + ROOTA(INDX+ITLNG) 
C 
C MAKE SURE RECORD ISN'T TOO LARGE
C 
      IF(ENTL+MEDIA .GT. MAXRC) GOTO 7090 
C 
C INCREASE SET COUNT IN ITEM TABLE
C 
      CALL RSGET (INDX + ITSCT, N)
      N = N+1 
      CALL RSPUT(INDX+ITSCT,N)
C 
C IF THIS IS FIRST SET TO USE ITEM PUT NUMBER IN TABLE
C 
      CALL RSGET(INDX+ITSNO,N)
      IF(N .EQ. 0) CALL RSPUT(INDX+ITSNO,SCNT+1)
C 
C SCAN PAST COMMA 
C 
60    CONTINUE
      GGERR = GGERR + IERR
C 
C SCAN PAST COMMA UPTO SEMICOLN 
C 
64    CONTINUE
      IF(TYPE .EQ. COMMA) GOTO 63 
      IF(TYPE .EQ. SEMI) GOTO 65
      CALL NWITM
      GOTO 64 
C 
C SCAN PAST THE COMMA 
C 
63    CALL NWITM
C 
C RETURN TO TOP OF LOOP 
C 
65    GOTO 20 
C 
C SCAN PAST SEMICOMMA 
C 
70    CONTINUE
      CALL SCAN(SEMI) 
C 
C DONE WITH "ENTRY:" COMMAND
C 
C VERIFY THAT PATHS ARE DEFINED IN MASTER SETS
C 
80    CONTINUE
      IF (STYPE .EQ. DETAIL) GOTO 81
      CALL RSGET(SINDX+DSCCT,INUM)
      IF(INUM .EQ. 0) 7060,85 
C 
C VERIFY THAT ALL SORT ITEMS ARE DEFINED IN DETAIL DATA SET 
C 
81    CONTINUE
      IF (PTHCT .EQ. 0) GOTO 85 
      DO 83 I=2,PTHCT*2,2 
      INUM = PTHTB(I) 
      IF (INUM .EQ. 0) GOTO 83
      DO 82 J=1,FLDCT-1 
      CALL SGET(RDEF,J,ICHK)
      IF (INUM .EQ. ICHK) GOTO 83 
82    CONTINUE
      GOTO 7110 
83    CONTINUE
C 
C PUT MEDIA + ENTRY LENGTH IN SET TABLE 
C 
85    CONTINUE
      CALL RSPUT(SINDX+DSMDL,MEDIA) 
      CALL SROOT(SINDX+DSDRL,ENTL)
C 
C PUT FIELD COUNT IN SET TABLE
C 
      FLDCT = FLDCT - 1 
      IF(FLDCT .EQ. 0) GOTO 7100
      CALL RSPUT(SINDX+DSFCT,FLDCT) 
C 
C PUT THE PATH COUNT IN THE SET TABLE 
C 
      CALL RSPUT(SINDX+DSPCT,PTHCT) 
C 
C LOAD AND EXECUTE "CAPACITY:" COMMAND PROCESSOR
C 
90    CONTINUE
      GGERR = IERR+GGERR
      CALL SEGLD(CAPAC,IERR)
C 
C IF SEGLD RETURNS THEN ERROR 
C 
      CALL OUTLN(CAPAC,3) 
      CALL ERXIT(NOSEG) 
C 
C 
C 
C ERROR PROCESSORS
C 
C 
C 
C OUTPUT "ENTRY: EXPECTED"
C 
7010  CALL EMESS(ENTYX) 
      IF (RESNO .EQ. CAP) 80,70 
C 
C OUTPUT "TOO MANY ITEMS" 
C 
7020  CALL EMESS(ITLIM) 
      IERR = -1 
      GOTO 70 
C 
C OUTPUT "ILLEGAL SEPARATOR"
C 
7030  CALL EMESS(ILSEP) 
      IERR = -1 
      GOTO 60 
C 
C OUTPUT "DUPLICATE ITEM NAME"
C 
7040  CALL EMESS(DUPIT) 
      IERR = -1 
      GOTO 60 
C 
C OUTPUT "MASTER MUST HAVE A PATH 
C 
7060  CALL EMESS(NOPTH) 
      IERR = -1 
      GOTO 85 
C 
C OUTPUT "AUTOMATIC MASTER MUST HAVE KEY ITEM ONLY" 
C 
7070  CALL EMESS(AERR)
      IERR = -1 
      GOTO 60 
C 
C OUTPUT "ILLEGAL TERMINATOR" 
C 
7080  CALL EMESS(ILTRM) 
      IERR = -1 
      GOTO 60 
C 
C OUTPUT "RECORD TOO BIG" 
C 
7090  CALL EMESS(RCLIM) 
      IERR = -1 
      GOTO 60 
C 
C OUTPUT "DATA SET MUST HAVE AN ITEM" 
C 
7100  CALL EMESS(MORIT) 
      IERR = -1 
      GOTO 90 
C 
C OUTPUT "SORT ITEM NOT DEFINED IN SET" 
C 
7110  CALL EMESS(UNDST) 
      IERR = -1 
      GOTO 85 
      END 
                            