FTN4
      PROGRAM TGP8(5), 92080-1X367 REV.2026  800502             
C 
C     SOURCE 92080-18367
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*                       THIS IS A SEGMENT OF THE TGP PROGRAM        *
C*   USED TO ANALYSE THE ANSWERS THE USER HAS GIVEN TO SCREENS 18,   *
C*   19 AND 20 .                                                     *
C*                                                                   *
C*       THE ANSWERS AFTER CHECKS ARE STORED IN LFORM AND ILIBR .    *
C*                                                                   *
C*   IF :   INDIC = 0 : NORMAL PATH ANALYSE SCREEN # ISCRN .         *
C*          INDIC = 2 : RETURN FROM TGP10 AN ERROR HAS OCCURED ON    *
C*                      READING OR WRITING THE SPECS                 *
C*         INDIC =-77 : A HELP MESSAGE MUST BE PRINTED               *
C*                                                                   *
C*   WARNING !! : CARE MUST BE TAKEN * :                             *
C*                                                                   *
C*     PRINTED SCREEN # 18 CORRESPONDS TO ISCRN = 19                 *
C*      ..............  19   .................    20                 *
C*      ..............  20   .................    21                 *
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),IMODE
C 
C   LOCAL VARIABLES **************
C 
      DIMENSION IBUF(61),JOUT(15),ITGP4(3),ITGP1(3) 
      DIMENSION IDCB(144),ITGP10(3),NFORM(3),ITGP3(3) 
      DIMENSION ITGP0(3),IHP19(4),IHP20(4),IHP21(13),ICR(3) 
C 
      EQUIVALENCE (NOF,KFORM(1059)) 
C 
      LOGICAL JPAR,NAMCK,CMPW,GETBK,OKABT,ISBTW,INUM
C 
C 
      DATA ITGP4/2HTG,2HP4,2H  /
      DATA ITGP10/2HTG,2HPI,2H0 / 
      DATA ITGP1/2HTG,2HP1,2H  /
      DATA ITGP3/2HTG,2HP3,2H  /
      DATA ITGP0/2HTG,2HP0,2H  /
      DATA IHP19/2,3,1,5/ 
      DATA IHP20/0,2,3,5/ 
      DATA IHP21/4,4,4,4,4,4,4,4,4,4,2,3,1/ 
      DATA ICR/2H  ,2H  ,2H  /
C 
C 
C*********************************************************************
C 
C  IF INDIC=2 PRINT ERROR MESSAGE ON SCREEN  (ISKIP=FMGR ISTAT) 
C 
C*********************************************************************
C 
      IF(INDIC.EQ.2) GO TO 400
      IF(INDIC.EQ.-77) GO TO 3011 
C 
C*********************************************************************
C 
C       INDIC=0 GET USER'S ANSWERS IN THE SCREEN
C 
C********************************************************************** 
C 
15    IF(ISCRN.EQ.19) ITLOG=51
      IF(ISCRN.EQ.20) ITLOG=22
      IF(ISCRN.EQ.21) ITLOG=114 
      IF(.NOT.(GETBK(ILU,IBUF,ITLOG,IMODE))) GO TO 10 
C 
C  ERROR IN GETTING ANSWERS REPRINT SCREEN
C 
17    IF(ISCRN.NE.19) CALL EXEC(8,ITGP3)
      CALL EXEC(8,ITGP4)
C 
C********************************************************************** 
C 
C   GO TO ANALYSE ISCRN SCREEN
C 
C********************************************************************** 
C 
10    IF(ISCRN.EQ.20) GO TO 2000
      IF(ISCRN.EQ.21) GO TO 2100
C 
C*********************************************************************
C 
C  SCREEN # 18  (TRANSACTION SPECS. STORAGE)
C 
C*********************************************************************
C 
C 
C  LIBRARY FILE NAME
C 
1800  NOF=1 
      IF(JPAR(IBUF,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000
      IF(IFLG.EQ.0) GO TO 1983
      IF(NAMCK(JOUT)) GO TO 1982
      CALL MOVEW(JOUT,LFORM(16),3)
C 
C  CR #   ? 
C 
      NOF=NOF+1 
      IF(JPAR(IBUF,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000
      IF(IFLG.EQ.0) GO TO 1802
C     NO.  INTEGER? 
      IF(IFLG.NE.1) GO TO 1801
C     YES.
      IF(JVAL.LT.1) GO TO 1984
      GO TO 1802
C     ASCII?
1801  IF(IFLG.NE.3) GO TO 1984
C     YES.  LEFT JUSTIFY IT & MAKE SURE IT IS A VALID 2 CHAR CR#. 
      CALL JUSTF(JOUT,1,6,1)
      IF(LNCAR(JOUT,1,6).GT.2) GO TO 1984 
      IF(ISBTW(IGET1(JOUT,1),1HA,1HZ)) GO TO 1984 
      I=IGET1(JOUT,2) 
      IF(ISBTW(I,1HA,1HZ) .AND. ISBTW(I,1H0,1H9) .AND. ISBTW(I,1H ,1H ))
     .GO TO 1984
1802  CALL MOVEW(JOUT,LFORM(19),3)
C 
C   HEADER OF LIBRARY 
C 
      NOF=NOF+1 
      IF(JPAR(IBUF,ITLOG,NOF,JOUT,30,IFLG,JVAL)) GO TO 3000 
      IFLG1=IFLG
      CALL MOVEW(JOUT,LFORM(22),15) 
C 
C 
C 
C   LIST FILE NAME
C 
      NOF=NOF+1 
      IF(JPAR(IBUF,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000
1804  IF(IFLG.NE.0) GO TO 1805
      LILU=ILU
      GO TO 1810
1805  IF(OPEN(IDCB,ISTAT,JOUT).LT.0) GO TO 1807 
      IF(ISTAT.NE.0)  GO TO 1808
      LILU=IDCB(4)
      CALL CLOSE(IDCB)
      GO TO 1810
1808  IMES=14 
      CALL CLOSE(IDCB)
      GO TO 410 
1807  IMES=0
      IF(ISTAT.EQ.-6) IMES=9
      IF(IMES.EQ.0) CALL JASC(ISTAT,NFORM,1,6)
      GO TO 410 
1810  IF(ISCRN.EQ.20) GO TO 2015
      CALL MOVEW(JOUT,LFORM(37),3)
C 
C  SET ISKIP TO LIST LU GO TO STORE AND LIST TRANSACTION SPEC . 
C 
      INDIC=1 
      ISKIP=LILU
      CALL EXEC(8,ITGP10) 
C 
C 
C  ERROR SECTION SCREEN 18
C 
1980  CALL MES08(1,NOF) 
      GO TO 15
1981  CALL MES08(2,NOF) 
      GO TO 15
1982  CALL MES08(3,NOF) 
      GO TO 15
1983  CALL MES08(4,NOF) 
      GO TO 15
1984  CALL MES08(5,NOF) 
      GO TO 15
C 
C***********************************************************************
C 
C  ERRORS COMING FROM TGP10  (FMGR ERRORS)
C 
C********************************************************************** 
C 
400   IMES=0
      IF(ISCRN.EQ.19) NOF=1 
      IF(ISCRN.EQ.20) NOF=2 
      IF(ISCRN.EQ.21) NOF=11
      IF(ISKIP.EQ.10) IMES=16 
      IF(ISKIP.EQ.-6) IMES=9
      IF(ISKIP.EQ.-2) IMES=10 
      IF(ISKIP.EQ.1)  IMES=6
      IF(ISKIP.EQ.5)  IMES=17 
      IF(ISKIP.EQ.6)  IMES=18 
      IF(ISKIP.EQ.8)  IMES=12 
      IF(ISKIP.EQ.24) IMES=9
      IF(ISKIP.EQ.26) IMES=9
      IF(ISKIP.EQ.66) IMES=21 
      IF(ISKIP.EQ.77) IMES=22 
      IF(ISKIP.EQ.88) IMES=23 
      IF(ISKIP.EQ.99) IMES=19 
      IF(ISKIP.EQ.-32) IMES=24
      IF(ISKIP.EQ.-32) NOF=NOF+1
      IF(ISKIP.EQ.-33) IMES=9 
D     WRITE(6,4109) ISKIP,IMES
D4109 FORMAT(" TGP8 : ISKIP=",I6," , IMES=",I6) 
      IF(IMES.NE.0) GO TO 410 
      CALL JASC(ISKIP,NFORM,1,6)
      IMES=11 
410   ISKIP=0 
      IF(IMES.EQ.5 .AND. ISCRN.EQ.19) NOF=2 
      IF(IMES.EQ.5 .AND. ISCRN.EQ.20) NOF=3 
      IF(IMES.EQ.5 .AND. ISCRN.EQ.21) NOF=12
412   CALL MES08(IMES,NOF,NFORM)
      INDIC=0 
      GO TO 15
C-----IF ERR IS -6, "LIBRARY COULD NOT BE FOUND"
414   IF(ISKIP.EQ.-6) ISKIP=66
      GO TO 400 
C 
C********************************************************************** 
C 
C   SCREEN # 19  BUILD LIBRARY 1 OF 2 
C 
C*********************************************************************
C 
2000  NOF=1 
C 
C  MODE OF OPERATION
C 
      IF(JPAR(IBUF,ITLOG,NOF,JOUT,1,IFLG,JVAL)) GO TO 3000
      IF(JOUT.EQ.1HT) GO TO 3045
      IF((JOUT.NE.1HC).AND.(JOUT.NE.1HE).AND.(JOUT.NE.1HL)) GO TO 2080
      ILIBR=IALF2(JOUT) 
C 
C  SOURCE LIBRARY 
C 
      NOF=NOF+1 
      IF(JPAR(IBUF,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000
      IF(IFLG.EQ.0) GO TO 1983
      IF(NAMCK(JOUT)) GO TO 1982
      CALL MOVEW(JOUT,ILIBR(2),3) 
C 
C  CR # 
C 
      NOF=NOF+1 
      JVAL=0
      IF(JPAR(IBUF,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000
      IF(IFLG.EQ.0) GO TO 2003
C     NO.  INTEGER? 
      IF(IFLG.NE.1) GO TO 2002
C     YES.
      IF(JVAL.LT.1) GO TO 1984
      GO TO 2003
C     ASCII?
2002  IF(IFLG.NE.3) GO TO 1984
C     YES.  LEFT JUSTIFY IT & MAKE SURE IT IS A VALID 2 CHAR CR#. 
      CALL JUSTF(JOUT,1,6,1)
      IF(LNCAR(JOUT,1,6).GT.2) GO TO 1984 
      IF(ISBTW(IGET1(JOUT,1),1HA,1HZ)) GO TO 1984 
      I=IGET1(JOUT,2) 
      IF(ISBTW(I,1HA,1HZ) .AND. ISBTW(I,1H0,1H9) .AND. ISBTW(I,1H ,1H ))
     .GO TO 1984
      JVAL=JOUT 
2003  IF(INUM(ILIBR,123,6,ISECOD)) PAUSE 2003 
      IF(OPEN(IDCB,ISKIP,ILIBR(2),1,ISECOD,JVAL).LT.0) GO TO 414
C    -IF CR WAS NOT SPECIFIED, GET IT NOW FROM IDCB 
      IF(IFLG.NE.0) GO TO 2005
      ICR=ICRLU(-IAND(IDCB,77B))
C     -DON'T DO IT IF TYPE 0 FILE.
      IF(ISKIP.EQ.0) GO TO 2005 
      CALL JASC(ICR,ILIBR,9,6)
C     -DO THIS IF CRN IS ASCII. 
      IF(.NOT.NAMCK(ICR)) CALL MOVEW(ICR,ILIBR(5),3)
2005  IF((ISKIP.EQ.0).OR.(ISKIP.EQ.35)) GO TO 2010
      NOF=NOF-1 
      IMES=14 
      GO TO 410 
2010  CALL MOVEW(JOUT,ILIBR(5),3) 
      CALL CLOSE(IDCB)
C 
C  LIST FILE NAME 
C 
      NOF=NOF+1 
      IF(JPAR(IBUF,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000
      IF(ILIBR.EQ.2H L) GO TO 1804
      IF(IFLG.NE.0) GO TO 2081
2015  CALL MOVEW(JOUT,ILIBR(8),3) 
C 
C  IF REQUEST IS TO PRINT DIRECTORY SET ISKIP TO LIST LU
C  AND GO TO TGP10, OTHERWISE PRINT SCREEN 20 
C 
      IF(ILIBR.EQ.2H L) GO TO 2020
      ISCRN=21
      CALL EXEC(8,ITGP3)
2020  INDIC=2 
      ISKIP=LILU
      CALL EXEC(8,ITGP10) 
C 
C***********************************************************************
C 
C  SCREEN # 20  BUILD LIBRARIES 2 OF 2
C 
C********************************************************************** 
C 
2100  NOF=0 
C 
C  ID. OF SPECS TO BE COPIED OR EXCLUDED
C 
      DO 2110 I=1,10
      NOF=NOF+1 
      IF(JPAR(IBUF,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000
C-----IF NUMBER, CHECK RANGE 1-9999.
      IF(IFLG.EQ.0) GO TO 2105
      IF(IFLG.NE.1) GO TO 2105
      IF((JVAL.LT.1).OR.(JVAL.GT.9999)) GO TO 2083
2105  CALL MOVEW(JOUT,ILIBR(11+(I-1)*3),3)
2110  CONTINUE
C 
C  DESTINATION LIBRARY
C 
      NOF=NOF+1 
      IF(JPAR(IBUF,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000
      IF(IFLG.EQ.0) GO TO 1983
      IF(NAMCK(JOUT)) GO TO 1982
C 
C-----FOLLOWING CHECK MOVED INTO CR # SECTION COMING NEXT 
C 
C     IF(CMPW(ILIBR(2),JOUT,3)) GO TO 2082
      CALL MOVEW(JOUT,ILIBR(41),3)
C 
C  CR # 
C 
      NOF=NOF+1 
      JVAL=0
      IF(JPAR(IBUF,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000
      IF(IFLG.EQ.0) GO TO 2113
C     NO.  INTEGER? 
      IF(IFLG.NE.1) GO TO 2112
C     YES.
      IF(JVAL.LT.1) GO TO 1984
      GO TO 2113
C     ASCII?
2112   IF(IFLG.NE.3) GO TO 1984 
C     YES.  LEFT JUSTIFY IT & MAKE SURE IT IS A VALID 2 CHAR CR#. 
      CALL JUSTF(JOUT,1,6,1)
      IF(LNCAR(JOUT,1,6).GT.2) GO TO 1984 
      IF(ISBTW(IGET1(JOUT,1),1HA,1HZ)) GO TO 1984 
      I=IGET1(JOUT,2) 
      IF(ISBTW(I,1HA,1HZ) .AND. ISBTW(I,1H0,1H9) .AND. ISBTW(I,1H ,1H ))
     .GO TO 1984
      JVAL=JOUT 
C 
C-----CHECK FOR DUPLICATE LIBRARY NAME. ONLY PASS IF NAME/CR# IS
C     DIFFERENT. IF NAME THE SAME AND DEST. CR# NOT GIVEN DO NOT
C     LET PASS EITHER 
C 
2113  NOF=NOF-1 
      IF((CMPW(ILIBR(2),ILIBR(41),3)).AND.
     .   (CMPW(ILIBR(5),JOUT,3).OR.IFLG.EQ.0)) GO TO 2082 
      NOF=NOF+1 
      CALL MOVEW(JOUT,ILIBR(44),3)
C 
C  HEADER 
C 
      NOF=NOF+1 
      IF(JPAR(IBUF,ITLOG,NOF,JOUT,30,IFLG,JVAL1)) GO TO 3000
      IF(OPEN(IDCB,ISKIP,ILIBR(41),1,0,JVAL).LT.0) GO TO 2118 
      IF(IFLG.EQ.0) GO TO 2115
      IF(ISKIP.EQ.0) GO TO 2120 
      ISKIP=-2
      GO TO 400 
2115  IF((ISKIP.EQ.0).OR.(ISKIP.EQ.35)) GO TO 2120
      NOF=NOF-2 
      IMES=14 
      GO TO 410 
2118  IF((ISKIP.EQ.-6).AND.(IFLG.NE.0)) GO TO 2120
      GO TO 414 
2120  CALL MOVEW(JOUT,ILIBR(47),15) 
      LILU=ILU
      GO TO 2020
C 
C ERROR MESSAGES SCREEN 19 AND 20 
C 
2080  CALL MES08(7,NOF) 
      GO TO 15
2081  CALL MES08(8,NOF) 
      GO TO 15
2082  CALL MES08(15,NOF)
      GO TO 15
C-----"ILLEGAL TRANSACTION SPECIFICATION #" 
2083  CALL MES08(20,NOF)
      GO TO 15
C 
C 
C***********************************************************************
C 
C 2645 SOFT KEYS PROCESSING 
C 
C***********************************************************************
C 
C  IFLG=5 MEANS NON PRINTABLE ASCII 
C 
3000  IF(IFLG.EQ.4) IFLG=5
      IF(IFLG.NE.5) GO TO 3005
      CALL MES08(13,NOF)
      GO TO 15
C 
C  IFLG=6 MEANS ILLEGAL PARSE 
C 
3005  IF(IFLG.NE.6) GO TO 3007
      STOP 500
C 
C  IFLG=7 MEANS HELP
C 
3007  IF(IFLG.NE.7) GO TO 3010
      INDIC=-77 
      GO TO 17
3011  INDIC=0 
      IF(ISCRN.EQ.19) IMES=IHP19(NOF) 
      IF(ISCRN.EQ.20) IMES=IHP20(NOF) 
      IF(ISCRN.EQ.21) IMES=IHP21(NOF) 
      CALL HLP08(IMES,NOF)
      GO TO 15
C 
C  IFLG=8 MEANS LAST SCREEN 
C 
3010  IF(IFLG.NE.8) GO TO 3040
      IF(ISCRN.NE.19) GO TO 3066
      ISCRN=18
      CALL EXEC(8,ITGP4)
3066  IF(ISCRN.NE.20) GO TO 3012
      DO 3014 I=1,100 
3014  IFORM(I)=2H 
      ISCRN=3 
      CALL EXEC(8,ITGP0)
3012  ISCRN=20
      CALL EXEC(8,ITGP3)
C 
C  ABORT PROGRAM
C 
3040  IF(.NOT.OKABT(ILU)) GO TO 17
      INDIC=99
      CALL EXEC(8,ITGP1)
3045  INDIC=99
      CALL EXEC(8,ITGP1)
C 
C  END OF SEGMENT 
C 
      CALL TGP
C 
C 
      END 
      END$
                                                                                                                                  