FTN,L,C 
      PROGRAM DBSPA(3,90),92063-16014 REV.1913 790125 
C 
C 
C*************************************************************
C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976.  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 
C 
C************************************************************ 
C 
C 
C     RELOC.  92063-16014 
C     SOURCE  92063-18014 
C 
C 
C***********************************************************************
C SPACE PRINTS THE NUMBER OF RECORDS REMAINING IN 
C  A DATA BASES DATA SETS.
C 
C CALLING SEQUENCE
C     :RU,DBSPA,P1,P2 
C 
C       WHERE: P1 IS CONSOLE
C              P2 IS LIST DEVICE
      INTEGER P(5),FNAME(3),ISTAT(4)
      INTEGER E1,E2,E3
      DIMENSION IBUF(500),IREC(100) 
      DIMENSION ILEVL(3),ITEMP(256) 
      DIMENSION ISEGN(4)
      DATA I1,I2/1,2/ 
      DATA N16,N20,N28/-16,-20,-28/ 
      DATA N1,N2/-1,-2/ 
      DATA N6/-6/ 
      DATA IBLNK/2H  /
      DATA ISEGN/1,2HDB,2HSP,2HA /
C 
C 
      CALL RMPAR(P) 
      ITTY=P(1) 
      ILP=P(2)
      IF (ITTY.EQ.0) ITTY=1 
      IF (ILP .EQ.0) ILP=6
      WRITE(ITTY,10)
10    FORMAT("DATA BASE NAME? _") 
      FNAME(1)=IBLNK
      FNAME(2)=IBLNK
      FNAME(3)=IBLNK
      READ(ITTY,20)FNAME
20    FORMAT(3A2) 
C GET LEVEL 
      WRITE(ITTY,30)
30    FORMAT("DATA BASE LEVEL? _")
      ILEVL(1)=IBLNK
      ILEVL(2)=IBLNK
      ILEVL(3)=IBLNK
      READ(ITTY,40)ILEVL
40    FORMAT(3A2) 
C GET SECURITY CODE 
      WRITE(ITTY,50)
50    FORMAT("DATA BASE SECURITY CODE? _")
      READ(ITTY,*)ISC 
C     OPEN THE DATA BASE
107   MODE=1
      CALL DBINT(FNAME,ISC,ISEGN,ISTAT) 
      IF (ISTAT.NE.0) GOTO 110
      CALL DBOPN(FNAME,ILEVL,ISC,MODE,ISTAT)
C     IF ERROR IN DBOPN, PUT OUT APRROPRIATE ERR NO. AND EXIT 
      IF (ISTAT.NE.0) GO TO 110 
C  GET DATA SET CAPACITIES
      WRITE(ILP ,140) 
140   FORMAT(" DATA SET NAME    CAPACITY   FREE RECORDS  RECORDS USED 
     1DIFFERENCE")
      WRITE(ILP ,150) 
150   FORMAT(" -------------    --------   ------------  ------------ 
     1----------")
      CALL GTSIZ(IBUF,ISIZE)
      K=5 
        DO 205 J=1,ISIZE
        IREC(J)=0 
          DO 200 I=1,IBUF(K)
          CALL DBGET(J,3,ISTAT,ITEMP,I) 
          IF (ISTAT(1).EQ.114) GOTO 200 
          IF (ISTAT(1).NE.0) GOTO 111 
          IREC(J)=IREC(J)+1 
 200      CONTINUE
C 
        K=K+5 
205     CONTINUE
210   I=1 
      DO 300 J=1,ISIZE
      IDIFF=IBUF(I+4)-(IBUF(I)+IREC(J)) 
C 
C IF NUMBER OF RECORDS USED PLUS NUMBER OF FREE RECORDS DON'T ADD UP TO 
C THE CAPACITY OF THE DATA SET THEN SET A FLAG INDICATING POSSIBLE
C NON-INTACT DATA BASE
C 
      IF (IDIFF.NE.0) IFLG=1
      WRITE(ILP,130)IBUF(I+1),IBUF(I+2),IBUF(I+3),IBUF(I+4),IBUF(I),
     1IREC(J),IDIFF 
130   FORMAT(1X,3A2,12X,I5,10X,I5,8X,I5,8X,I6)
      I=I+5 
300   CONTINUE
C 
      IF(IFLG.EQ.1) WRITE(ILP,400)
400   FORMAT(///" DATA BASE MAY NOT BE GOOD -  TRY PROGRAM 'RECOV'
     1TO RECOVER IT") 
C 
      CALL DBCLS(I0,ISTAT)
      IF (ISTAT.NE.0) GOTO 110
      STOP
110   WRITE(ITTY,120)ISTAT(1) 
120   FORMAT(" ERROR ",I4)
      STOP
111   WRITE(ITTY,120)ISTAT(1) 
      CALL DBCLS(I0,ISTAT)
      STOP
      END 
      END$
                                                                                                            