C   07/06/96 606071836  MEMBER NAME  BUNLDA   (S4)          FORTG1
      SUBROUTINE BUNLDA(IUNDA,IUNTP,NREC,NPAG,IPASS)
      COMMON/BCS/IW(1)
#include "ccs.for"
      INTEGER DIRA/'+DIR'/,DIRO/'DIRA'/
      REAL*8 DATE(2)
      CALL DAY(DATE(1),DATE(2))
      WRITE(6,101) IUNDA,IUNTP
      IUND=IUNDA
      INDA=0
      CALL BDLS('+DIR',IUND)
      CALL BDLS('+DIR',-1)
      CALL BGAR(IGA)
      NPAGL=NPAG
      IF(NREC.NE.0) GOTO 5
      IPAS=IPASS
      LISTE(1)=0
      LISTE(2)=0
      CALL PODA(1,LISTE,1)
      NRECL=IW(INDA+7)
      CALL UCOPY(DATE,IW(INDA+29),4)
      GOTO 10
    5 NRECL=NREC
   10 CALL BCRE(INDL,'+DIR',-1,900,&15,IER)
      NPG=0
      NE =0
      NERR=0
      NSE=0
      CALL BSPC(IA,LB,IDUM1,IDUM2)
      IF(LB.GT.5040) GOTO 20
   15 WRITE(6,102)
      GOTO 90
   20 NRC=0
   25 NTOT=0
      IB=IA
   30 NRC=NRC+1
      ISW=0
      IF(NRC.LE.NRECL) GOTO 32
      ISW=2
      GOTO 50
   32 CALL RDDA(NRC,NTOTN,IW(IB))
      IF(NTOTN.EQ.0) GOTO 36
      IF(NTOTN.GT.4.AND.NTOTN.LE.1609) GOTO 35
      NERR=NERR+1
      GOTO 25
   35 IF(IW(IB).NE.DIRA.AND.IW(IB).NE.DIRO) GOTO 40
   36 ISW=1
      GOTO 50
   40 NTOT=NTOT+NTOTN
      IF(IA.EQ.IB) GOTO 50
C     COMPARE NAME AND NR
      IF(IW(IA  ).NE.IW(IB)  ) GOTO 50
      IF(IW(IA+1).NE.IW(IB+1)) GOTO 50
C     EQUAL
      NW=IW(IB+3)
      CALL UCOPY2(IW(IB+4),IW(IB),NTOTN-4)
      NTOT=NTOT-4
      IW(IA+3)=IW(IA+3)+NW
C
   50 IND=IA+3
      IF(NTOT.EQ.0.AND.ISW.EQ.2) GOTO 66
      IF(NTOT.EQ.0) GOTO 25
   52 NW=IW(IND)
      IF(NW.LE.0) GOTO 54
      IF(IA+NTOT-1-IND-NW) 54,56,60
C     ERROR
   54 CONTINUE
      GOTO 25
C     LAST BANK
   56 IF(ISW.NE.0) GOTO 60
      CALL UCOPY2(IW(IND-3),IW(IA),NW+4)
      NTOT=NW+4
      IB=IA+NTOT
      ISW=0
      GOTO 30
   60 NWR=NW+4
      IF(IUNTP.NE.0) CALL WRSQ(IUNTP,NWR,IW(IND-3))
      NSE=NSE+1
      IF(NE.NE.0) GOTO 64
      INDX=INDL
      DO 62 I=1,300
      IW(INDX+1)=BLANK
      IW(INDX+2)=0
      IW(INDX+3)=0
   62 INDX=INDX+3
   64 JCOL=NE/60
      INDX=INDL+JCOL*3+(NE-JCOL*60)*15
      IW(INDX+1)=IW(IND-3)
      IW(INDX+2)=IW(IND-2)
      IW(INDX+3)=IW(IND)
      NE=NE+1
      IF(ISW.EQ.2) GOTO 66
      IF(NE.LT.300) GOTO 70
   66 IF(NPG.GE.NPAGL) GOTO 68
      WRITE(6,103) (IW(INDL+I),I=1,900)
      NPG=NPG+1
   68 IF(NE.EQ.300) NE=0
      IF(ISW.EQ.2) GOTO 90
   70 IND=IND+4+NW
      GOTO 52
   90 IF(INDA.EQ.0) GOTO 92
      IF(IUNTP.EQ.0) GOTO 92
      IF(IW(INDA+20).NE.0) GOTO 92
      LISTE(1)=DIRA
      LISTE(2)=DIRO
      CALL CHDIR
      CALL WRDA(1,IW(INDA+1),IW(INDA+2))
   92 CALL BDLS('+DIR',-1)
      CALL BDLS('+DIR',IUND)
      CALL BGAR(IGA)
      WRITE(6,106) NSE,NERR
C
  100 RETURN
  101 FORMAT('0---- BUNLDA     START FOR DA-DATASET',I3,', UNLOAD TO',
     1   ' SQ-DATASET',I3)
  102 FORMAT('0---- BUNLDA     NOT ENOUGH SPACE'/)
  103 FORMAT('1---- BUNLDA     TABLE OF CONTENT'//
     1 (1X,5(A4,I10,I6,6X)))
  106 FORMAT('0---- BUNLDA     END',10X,I10,' RECORDS(BANKS)',
     1   ' COPIED,',I6,' ILLEGAL RECORDS'/)
      END
