FTN4
      PROGRAM TGPI1(5), 92080-1X375 REV.2026  800212          
C 
C     SOURCE 92080-18375
C 
C 
C 
C     **************************************************************
C     * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978.  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      PRGMR : JEAN CHARLES MIARD (HPG) 
C 
C 
C***********************************************************************
C*                                                                     *
C*                         THIS IS A SEGMENT OF THE TGP PROGRAM USED   *
C*      TO INTERFACE TGP WITH THE IMAGE DATA BASE . DIFFERENT TASKS    *
C*      ARE PERFORMED BY TGP11 ACCORDING TO INDIC VALUE :              *
C*                                                                     *
C*    IF :  INDIC = -1 :  REQUEST FROM TGP1 TO CLOSE THE DATA BASE .   *
C*                        THEN TGP IS FINISHED .                       *
C*          INDIC = -2 :  REQUEST FROM TGP14 TO PRINT THE LISTING OF   *
C*                        THE IMAGE OPERATIONS DEFINED FOR THE CURRENT *
C*                        TRANSACTION SPEC.                            *
C*          INDIC = -3 :  REQUEST FROM TGP7 TO PROCESS THE IMAGE ADD   *
C*                        STORAGE OF THE STORAGE STATE .               *
C*          INDIC =  0 :  REQUEST FROM TGP1 TO OPEN THE DATA BASE      *
C*                        DECLARED BY THE USER IN SCREEN 4 .           *
C*                                                                     *
C*                                                                     *
C***********************************************************************
C 
C 
C  DECLARATIONS COMMON VARIABLES ***********
C 
      COMMON ILU,ISCRN,IQST,ISKIP,INDIC 
      COMMON IFORM(780) 
      COMMON JFORM(1700)
      COMMON MFORM(28)
      COMMON LFORM(42)
      COMMON ITT
      COMMON IKEY(26,3) 
      COMMON IUMAX,IMMAX
      COMMON IMODB
      COMMON ILITE(15)
      COMMON IMAI(45,5) 
      COMMON IMFLG,IMAS,IMDT,IMKY 
      COMMON KFORM(2844)
      COMMON ILIBR(67)
      COMMON NIMAG
      COMMON IBASE(10)
C 
C************ LOCAL ARRAYS************* 
C 
      DIMENSION ILIST(46),ILEVL(3),INAM(3),IER(3),ISTAT(10) 
      DIMENSION JIM(15),JSTAR(15),JDEL(15),JUP(3),JAD(3),JITM(4)
      DIMENSION IMSTA(17),IBUF(128),JNAM(3),KBUF(16),IER1(3)
      DIMENSION LNAM(3),KNAM(3),JOP(17),IBASE0(10)
C 
      LOGICAL ISBIT,INUM
C 
C *********** DATA ASSIGNMENTS *****************
C 
      DATA ILIST/2H  ,2HTG,2HP ,2H  ,2HTG,2HP0,2H  ,2HTG,2HP1,2H
     C,2HTG,2HP2,2H  ,2HTG,2HP3,2H  ,2HTG,2HP4,2H  ,2HTG,2HP5,2H
     C,2HTG,2HP6,2H  ,2HTG,2HP7,2H  ,2HTG,2HP8,2H  ,2HTG,2HP9,2H
     C,2HTG,2HP1,2H0 ,2HTG,2HP1,2H1 ,2HTG,2HP1,2H2 ,2HTG,2HP1,2H3 / 
      DATA ILEVL/2H  ,2H  ,2H  /
      DATA INAM/2HTG,2HP1,2H  / 
      DATA JNAM/2HTG,2HP7,2H  / 
      DATA LNAM/2HTG,2HP6,2H  / 
      DATA KNAM/2HTG,2HPI,2H4 / 
      DATA JIM/2HIM,2HAG,2HE ,2HMO,2HDI,2HFI,2HCA,2HTI,2HON,2HS , 
     C2HDE,2HFI,2HNE,2HD ,2H: / 
      DATA JSTAR/2H**,2H**,2H**,2H**,2H**,2H**,2H**,2H**,2H**,2H**, 
     C2H**,2H**,2H**,2H**,2H**/ 
      DATA JDEL/2H- ,2HDE,2HLE,2HTE,2H E,2HNT,2HRY,2H I,2HN ,2HDA,
     C2HTA,2H S,2HET,2H :,2H  / 
      DATA JUP/2HUP,2HDA,2HTE/
      DATA JAD/2H A,2HDD,2H  /
      DATA JITM/2H I,2HTE,2HMS,2H :/
      DATA JOP/2H  ,2H* ,2HER,2HRO,2HR ,2HIN,2H O,2HPE,2HNI,2HNG,2H T,
     C2HHE,2H D,2HAT,2HA ,2HBA,2HSE/
C 
C*********************************************************************
C 
C             GO TO PERFORM THE REQUIRED PROCESSING 
C 
C*********************************************************************
C 
      IF(INDIC.EQ.-1) GO TO 900 
      IF(INDIC.EQ.-2) GO TO 6000
      IF(INDIC.EQ.-3) GO TO 500 
C 
C*********************************************************************
C 
C  INDIC = 0 :  REQUEST TO OPEN THE DATA BASE 
C 
C*********************************************************************
C 
C   ISKIP CONTAINS THE DATA BASE SECURITY CODE
C 
C100   ILIST(1)=15
C     CALL DBINT(IFORM(38),ISKIP,ILIST,ISTAT) 
C     IF(ISTAT.NE.0) GO TO 3000 
100   CALL DBOPN(IBASE,IFORM(770),1,ISTAT)
C     -130 IF SUCCESSFUL OPEN.
      IF(ISTAT(1).EQ.0 .AND. ISTAT(2).EQ.15) GO TO 130
C 
C     -ERROR IN DBOPN 
C 
      GO TO 3000
C 
C  THE DATA BASE IS SUCCESSFULY OPENED RETURN TO TGP1 SEGMENT 
C 
130   INDIC=2 
135   CALL EXEC(8,INAM) 
C 
C***********************************************************************
C 
C   INDIC = -3  ADD STORAGE PROCESSING
C 
C***********************************************************************
C 
C 
500   INDIC=0 
      N3=ISKIP
      DO 510 I=1,17 
510   IMSTA(I)=KFORM(1059+I)
C 
C***********************************************************************
C 
C   ADD IN MASTER DATA SETS 
C 
C***********************************************************************
C 
C   I IS POINTER IN IMSTA 
C   IX IS SECOND WORD OF BUFFER ADD 
C   IY IS # OF ITEMS PER ADD OPERATION
C 
      DO 530 I=1,IMSTA
      CALL DBINF(IBASE,IMSTA(I+1),202,ISTAT,IBUF) 
      IF(ISTAT.NE.0) GO TO 3000 
      IF(IGET1(IBUF,17).NE.1HM) GO TO 530 
C     -ERR IF DS ACCESSED > 512 WORDS/RECORD (TMS LIMITATION).
      IF(IBUF(10).GT.512) GO TO 3006
C 
C  A BUFFER FOR AN ADD IN A MASTER DATA SET MUST BE CREATED 
C 
C  STORAGE CODE,IMAGE STORAGE CODE,FOT FLAG,AND DATA SET TO ADD 
C 
C 
      KFORM(N3)=52001B
      KFORM(N3)=IOR(KFORM(N3),IMSTA(I+1)*16)
      IX=N3+1 
      N3=N3+2 
C 
C  GET THE KEY ITEM OF THIS MASTER DATA SET 
C 
C  IKFLG IS FLAG SET IF KEY ITEM IS FOUND IN THE FORM 
C 
C     "GET KEY FROM MASTER" 
      CALL DBINF(IBASE,IMSTA(I+1),302,ISTAT,IBUF) 
      IF(ISTAT.NE.0) GO TO 3000 
C 
C  NOW SEARCH ITEMS FOR THIS ADD
C 
      IY=0
      IKFLG=0 
      DO 520 J=1,45 
C 
C  K IS DATA SET TO WHICH ITEM BELONG 
C 
      K=IAND(IMAI(J,3),377B)
      IF((K.NE.IMSTA(I+1)).OR.(IAND(IMAI(J,2),7).NE.2)) GO TO 520 
C 
C  K IS ITEM #
C 
      IY=IY+1 
      K=IAND(IMAI(J,1),377B)
      IF(K.EQ.IBUF(1)) IKFLG=1
C 
C     -STRING?
      IF(IAND(IMAI(J,2),30000B).NE.0) GO TO 515 
C     -YES.  CONVERT LENGTH TO WORDS. 
      KFORM(N3)=IALF2((IAND(IMAI(J,4),377B)/2)) 
      GO TO 518 
C 
C     -INTEGER? 
515   IF(.NOT.ISBIT(IMAI(J,2),12)) GO TO 516
C     -YES.  LENGTH = 1 WORD. 
      KFORM(N3)=400B
      GO TO 518 
C 
C     -REAL.  LENGTH = 2 WORDS. 
516   KFORM(N3)=1000B 
      GO TO 518 
C 
518   KFORM(N3)=IOR(KFORM(N3),K)
      N3=N3+1 
      KFORM(N3)=IMAI(J,5) 
      N3=N3+1 
520   CONTINUE
C 
C  IF IKFLG=0 KEY ITEM NOT DEFINED FOR THIS ADD 
C 
      IF(IKFLG.NE.0) GO TO 525
      ITN=IBUF(1) 
D     PAUSE 520 
      GO TO 2900
525   KFORM(IX)=IY
530   CONTINUE
C 
C*********************************************************************
C 
C  NOW PROCESS ADD IN DETAIL DATA SETS
C 
C*********************************************************************
C 
C 
C   I IS POINTER IN IMSTA 
C   IX POINTS TO SECOND WORD OF BUFFER
C   IY IS # OF ITEMS PER ADD OPERATION
C 
C 
C  FIRST ISOLATE DETAIL SET TO ADD
C 
      DO 5350 I=1,IMSTA 
      CALL DBINF(IBASE,IMSTA(I+1),202,ISTAT,IBUF) 
      IF(ISTAT.NE.0) GO TO 3000 
      IF(IGET1(IBUF,17).NE.1HD) GO TO 5350
C 
C  HAVE A DETAIL DATA SET... NOW MAKE SURE ALL SORT 
C  ITEMS HAVE BEEN SPECIFIED
C 
      CALL DBINF(IBASE,IMSTA(I+1),301,ISTAT,IBUF) 
      IF(ISTAT.NE.0) GO TO 3000 
      DO 5351 I2=1,IBUF(1)
      IF(IBUF(3*I2+1).EQ.0) GO TO 5351
      IFLAGX=0
      DO 5352 I3=1,44 
      IF(IAND(IMAI(I3,1),377B).EQ.IBUF(3*I2+1) .AND.
     . (IAND(IMAI(I3,2),7B).EQ.0 .OR. 
     .  IAND(IMAI(I3,2),7B).EQ.1 .OR. 
     .  IAND(IMAI(I3,2),7B).EQ.2 .OR. 
     .  IAND(IMAI(I3,2),7B).EQ.3 .OR. 
     .  IAND(IMAI(I3,2),10B).NE.0)) IFLAGX=1
5352  CONTINUE
C 
C  IF IFLAGX=0 NO FUNCTION HAS BEEN PERFORMED WITH THE
C  SORT ITEM...PRINT OUT AN ERROR MESSAGE 
C 
      IF(IFLAGX.NE.0) GO TO 5351
      IMES=5
      ITN=IBUF(3*I2+1)
      GO TO 2900
5351  CONTINUE
5350  CONTINUE
C 
C  NEED TO ISOLATE THE DETAIL DATA SETS AGAIN FOR ADD CHECKING
C 
      DO 800 I=1,IMSTA
      CALL DBINF(IBASE,IMSTA(I+1),202,ISTAT,IBUF) 
      IF(ISTAT.NE.0) GO TO 3000 
      IF(IGET1(IBUF,17).NE.1HD) GO TO 800 
C     -ERR IF DS ACCESSED > 512 WORDS/RECORD (TMS LIMITATION).
      IF(IBUF(10).GT.512) GO TO 3006
C 
C  A DATA SET IS ISOLATED 
C  FOT IS INITIALIZED TO 1
C 
      FOT=1 
C 
C  INCLUDE STORAGE CODE,IMAGE STORAGE CODE
C  DATA SET # TO ADD
C 
      KFORM(N3)=50001B
      KFORM(N3)=IOR(KFORM(N3),IMSTA(I+1)*16)
      IX=N3+1 
      N3=N3+2 
      IY=0
C 
C   SEARCH KEY ITEMS # OF THIS DETAIL DATA SET
C   STORE THEM IN IBUF
C 
C     "GET MASTERS LINKED TO THIS DETAIL" 
      CALL DBINF(IBASE,IMSTA(I+1),301,ISTAT,IBUF) 
      IF(ISTAT.NE.0) GO TO 3000 
C     "IBUF NOW CONTAINS ALL THE KEY ITEMS FOR DETAIL DS IMSTA(I+1)"
C 
C   SEARCH KEY ITEMS IN FORM
C   J IS POINTER IN IBUF
C   ALL KEYS MUST BE DEFINED IN THE FORM BY THEIR NAME IN THE 
C   DATA SET TO ADD OR WITH A LINKED NAME AND THEY MUST BE ASSOCIATED 
C   IN PRIORITY ORDER WITH  - AN ADD OPERATION
C                           - A DISPLAY OPERATION 
C 
      DO 600 J=1,IBUF(1)
C     -TO START WITH, SET IOP TO ADD. 
      IOP=2 
540   ITN=IBUF(3*J) 
      K=ILIN(IMAI,ITN,IMSTA(I+1),IOP) 
      IF(K.NE.-1) GO TO 560 
      CALL ITEQU(ITN,IMSTA(I+1),KBUF,IBASE) 
      DO 550 L=1,16 
         IF(KBUF(L).EQ.0) GO TO 550 
            ITNL=IAND(KBUF(L),377B) 
            IDSL=IAND(KBUF(L),177400B)/256
            K=ILIN(IMAI,ITNL,IDSL,IOP)
            IF(K.NE.-1) GO TO 560 
550   CONTINUE
C     -ADD? 
      IF(IOP.EQ.2) GO TO 551
C     -DISPLAY? 
      IF(IOP.EQ.5) GO TO 552
C     -FIND?
      IF(IOP.EQ.0) GO TO 553
D     PAUSE 550 
      GO TO 2900
551   IOP=5 
      GO TO 540 
552   IOP=0 
      GO TO 540 
C-----DO IT FOR CHECK EXISTENCE.
553   IOP=3 
      GO TO 540 
C 
C   A KEY ITEM FOR ADD IS FOUND ON LINE K OF IMAI 
C 
560   IF((K.GT.2*IUMAX).AND.(K.LT.41)) IFOT=0 
      IY=IY+1 
C 
C     -STRING?
      IF(IAND(IMAI(K,2),30000B).NE.0) GO TO 565 
C     -YES.  CONVERT LENGTH TO WORDS. 
      KFORM(N3)=IALF2((IAND(IMAI(K,4),377B)/2)) 
      GO TO 575 
C 
C     -INTEGER? 
565   IF(.NOT.ISBIT(IMAI(K,2),12)) GO TO 570
C     -YES.  LENGTH = 1 WORD. 
      KFORM(N3)=400B
      GO TO 575 
C 
C     -REAL.  LENGTH = 2 WORDS. 
570   KFORM(N3)=1000B 
      GO TO 575 
C 
575   KFORM(N3)=IOR(KFORM(N3),ITN)
      N3=N3+1 
      KFORM(N3)=IMAI(K,5) 
      N3=N3+1 
600   CONTINUE
C 
C   NOW INCLUDE NON KEY ITEMS FOR THIS ADD
C 
      DO 620 J=1,45 
      K=IAND(IMAI(J,3),377B)
      IOP=IAND(IMAI(J,2),7) 
      IF((K.NE.IMSTA(I+1)).OR.(IOP.NE.2)) GO TO 620 
      IF(ISBIT(IMAI(J,2),3)) GO TO 620
      IF((J.GT.2*IUMAX).AND.(J.LT.41)) IFOT=0 
      IY=IY+1 
C 
C     -STRING?
      IF(IAND(IMAI(J,2),30000B).NE.0) GO TO 615 
C     -YES.  CONVERT LENGTH TO WORDS. 
      KFORM(N3)=IALF2((IAND(IMAI(J,4),377B)/2)) 
      GO TO 618 
C 
C     -INTEGER? 
615   IF(.NOT.ISBIT(IMAI(J,2),12)) GO TO 616
C     -YES.  LENGTH = 1 WORD. 
      KFORM(N3)=400B
      GO TO 618 
C 
C     -REAL.  LENGTH = 2 WORDS. 
616   KFORM(N3)=1000B 
      GO TO 618 
C 
618   KFORM(N3)=IOR(KFORM(N3),IAND(IMAI(J,1),377B)) 
      N3=N3+1 
      KFORM(N3)=IMAI(J,5) 
      N3=N3+1 
620   CONTINUE
      KFORM(IX)=IY
      KFORM(IX-1)=IOR(KFORM(IX-1),IFOT*2000B) 
800   CONTINUE
C 
C   RETURN TO TGP7
C 
      INDIC=2 
      ISKIP=N3
      CALL EXEC(8,JNAM) 
C 
C************************************************************************ 
C 
C  ERROR PROCESSING 
C 
C***********************************************************************
C 
C  MISSING KEY ITEM FOR ADD 
C 
2900  CALL DBINF(IBASE,ITN,102,ISTAT,IBUF)
      IF(ISTAT.NE.0) GO TO 3000 
      CALL MOVEW(IBUF(1),IER,3) 
      CALL DBINF(IBASE,IMSTA(I+1),202,ISTAT,IBUF) 
      IF(ISTAT.NE.0) GO TO 3000 
      CALL MOVEW(IBUF(1),IER1,3)
      CALL MES11(5,1,IER,IER1)
      INDIC=0 
      CALL EXEC(8,LNAM) 
C 
C  ERROR PROCESSING DATA BASE OPEN
C 
3000  IMES=0
      INDIC=0 
      NOF=8 
C     -MSG6 IF USER DOES NOT HAVE HIGHEST LEVEL ACCESS WORD 
      IF(ISTAT(1).EQ.0 .AND. ISTAT(2).NE.15) GO TO 3005 
C     -SEE IMAGE MANUAL FOR THESE DBOPEN ERRORS.
      IF(ISTAT.EQ.32)  IMES=14
      IF(ISTAT.EQ.116) IMES=9 
      IF(ISTAT.EQ.117) IMES=1 
      IF(ISTAT.EQ.119) IMES=2 
      IF(ISTAT.EQ.128) IMES=10
      IF(ISTAT.EQ.129) IMES=3 
      IF(ISTAT.EQ.131) IMES=11
      IF(ISTAT.EQ.150) IMES=12
      IF(ISTAT.EQ.152) IMES=13
      IF(ISTAT.EQ.117) IMES=1 
      GO TO 3010
C 
C     -MUST RE-CLOSE THE DATA BASE BEFORE RETURNING TO SCREEN 4 
C 
3005  CALL DBCLS(IBASE,ID,1,ISTAT)
      IF(ISTAT.NE.0) GO TO 3000 
      NOF=11
      IMES=6
      GO TO 3010
C 
C-----"DATA SET ACCESSED > 512 WORDS/RECORD"
C 
3006  IMES=7
      GO TO 3010
C 
C  A SPECIAL MESSAGE EXISTS 
C 
3010  IF(IMES.EQ.0) GO TO 3020
      IF(IMES.EQ.1)  NOF=9
      IF(IMES.EQ.14) NOF=10 
      CALL MES11(IMES,NOF)
      GO TO 135 
C 
C  A GENERAL PRINT MESSAGE FOR IMAGE MUST BE PRINTED
C  IER CONTAINS THE ASCII CODE OF THE ERROR # 
C 
3020  CALL CNUMD(ISTAT,IER) 
      CALL MES11(4,NOF,IER) 
      GO TO 135 
C 
5000  STOP 5000 
C 
C***********************************************************************
C 
C  INDIC = -2  PRINT LISTING OF IMAGE OPERATIONS :
C 
C***********************************************************************
C 
C    IF MODE OF OPERATION IS L OPEN THE DATA BASE 
C 
6000   IF(IGET1(IFORM,13).NE.1HL) GO TO 6005
      IF(INUM(IFORM,81,5,N)) GO TO 5000 
      ILIST(1)=15 
C    -BUILD THE DATA BASE NAMR & STORE IT INTO IBASE BEFORE CALLING TGP11 
      DO 5257 I=1,10
         IBASE0(I)=2H 
         IBASE(I)=2H
5257  CONTINUE
C    -BYTES 1,2 : DS NODE (NOT YET IMPLEMENTED) 
      IBASE0(1)=2H
C    -BYTES 3-7 : DB NAME 
      CALL MOVCA(IFORM,75,IBASE0,3,5) 
C    -BYTE 8 : COLON
      CALL PUTCA(IBASE0,1H:,8)
C    -BYTES 9-13 : SECURITY CODE
      CALL MOVCA(IFORM,81,IBASE0,9,5) 
C    -BYTE 14 : COLON 
      CALL PUTCA(IBASE0,1H:,14) 
C    -BYTES 15-19 : CR# 
      CALL MOVCA(IFORM,1534,IBASE0,15,5)
C    -BYTE 20 : SEMI-COLON
      CALL PUTCA(IBASE0,1H;,20) 
C     -NOW PACK IBASE ELIMINATING IMBEDDED BLANKS.
      K=3 
      DO 5258 I=2,20
         J=IGET1(IBASE0,I)
         IF(J.EQ.1H ) GO TO 5258
         CALL PUTCA(IBASE,J,K)
         K=K+1
5258  CONTINUE
      CALL DBOPN(IBASE,IFORM(770),1,ISTAT)
      IF(ISTAT.EQ.0) GO TO 6005 
6004  CALL EXEC(2,ISKIP,JOP,17) 
      GO TO 6100
C 
C   PRINT HEADER
C 
C 
6005  CALL BLANC(ILIST,15)
      CALL EXEC(3,1100B+ISKIP,1)
      CALL MOVEW(JIM,ILIST(3),15) 
      CALL EXEC(2,ISKIP,ILIST,17) 
      CALL BLANC(ILIST,15)
      CALL MOVEW(JSTAR,ILIST(3),15) 
      CALL EXEC(2,ISKIP,ILIST,17) 
      CALL EXEC(3,1100B+ISKIP,1)
C 
C     FIND STORAGE STATE
C 
      I=38
      DO 6010 K=1,100 
      I=KFORM(I)
      IF(IAND(KFORM(I+1),140B).EQ.140B) GO TO 6020
6010  CONTINUE
      STOP 6010 
C 
C  FIND IMAGE STORAGE 
C 
6020  L=KFORM(I)
      I=I+2 
      DO 6030 J=1,4 
      M=IAND(KFORM(I),170000B)/4096 
      IF(M.EQ.5) GO TO 6040 
      IF(M.LT.4) I=I+6
      IF(M.EQ.4) I=I+4
6030  CONTINUE
      STOP 6030 
C 
C   PRINT INFORMATION 
C 
C   OPERATION AND DATA SET
C 
6040  N=IAND(KFORM(I),17B)
      IF(N.EQ.0) GO TO 6100 
      M=IAND(KFORM(I),1760B)/16 
      CALL BLANC(ILIST,23)
      CALL MOVEW(JDEL,ILIST(6),15)
      IF(N.EQ.1) CALL MOVEW(JAD,ILIST(7),3) 
      IF(N.EQ.2) CALL MOVEW(JUP,ILIST(7),3) 
      CALL DBINF(IBASE,M,202,ISTAT,IBUF)
      IF(ISTAT.NE.0) STOP 6041
      CALL MOVEW(IBUF(1),ILIST(21),3) 
      CALL EXEC(2,ISKIP,ILIST,23) 
      IF(N.EQ.3) GO TO 6100 
C 
C  ITEMS TO BE ADDED OR UPDATED 
C 
      CALL EXEC(3,1100B+ISKIP,1)
      CALL BLANC(ILIST,23)
      CALL MOVEW(JITM,ILIST(16),4)
      I=I+1 
      IF(I.NE.L) GO TO 6050 
      L=KFORM(I)
      I=I+2 
6050  M=KFORM(I)
      DO 6080 K=1,M 
      I=I+1 
      IF(I.NE.L) GO TO 6070 
      L=KFORM(I)
      I=I+2 
6070  N=IAND(KFORM(I),377B) 
      CALL DBINF(IBASE,N,102,ISTAT,IBUF)
      IF(ISTAT.NE.0) STOP 6070
      CALL MOVEW(IBUF(1),ILIST(21),3) 
      CALL EXEC(2,ISKIP,ILIST,23) 
      CALL BLANC(ILIST,23)
      I=I+1 
      IF(I.NE.L) GO TO 6080 
      L=KFORM(I)
      I=I+2 
6080  CONTINUE
C 
C  NEXT IMAGE OPERATION 
C 
      I=I+1 
      IF(I.NE.L) GO TO 6090 
      L=KFORM(I)
      I=I+2 
6090  CALL EXEC(3,1100B+ISKIP,1)
      GO TO 6040
C 
C  RETURN TO TGP14
C 
6100  INDIC=-1
      CALL EXEC(8,KNAM) 
C 
C************************************************************************ 
C 
C   INDIC = -1 CLOSE DATA BASE
C 
C***********************************************************************
C 
900   CALL DBCLS(IBASE,ID,1,ISTAT)
999   END 
C 
C 
D     SUBROUTINE EDUMP(NERR,ITN,IDS,KBUF,ISTAT,IBUF)
D     DIMENSION KBUF(1),ISTAT(1),IBUF(1)
D     WRITE(6,145) NERR,ITN,IDS 
D     WRITE(6,154) (KBUF(I),I=1,5)
D     WRITE(6,150) (ISTAT(I),I=1,10)
D     WRITE(6,151) (ISTAT(I),I=1,10)
D     WRITE(6,152) (IBUF(I),I=1,10) 
D     WRITE(6,152) (IBUF(I),I=11,20)
D     WRITE(6,152) (IBUF(I),I=21,30)
D     WRITE(6,153) (IBUF(I),I=1,10) 
D     WRITE(6,153) (IBUF(I),I=11,20)
D     WRITE(6,153) (IBUF(I),I=21,30)
D145   FORMAT("0NERR=",I7," : ITN=",I7," : IDS=",I7)
D150   FORMAT(" ISTAT@=",10@7)
D151   FORMAT(" ISTATA=",10A2)
D152   FORMAT(" IBUF@7=",10@7)
D153   FORMAT(" IBUFI7=",10I7)
D154   FORMAT(" KBUFI7=",5I7) 
D     RETURN
C 
D     END 
      END$
                                                                    